您的位置:首页 >LNMP环境下如何部署PHP应用
发布于2026-04-30 阅读(0)
扫一扫,手机访问

想把你的PHP应用稳稳当当地跑起来?LNMP(Linux, Nginx, MySQL, PHP)这套黄金组合,依然是当下最经典、最高效的选择之一。下面这份手把手的部署指南,将带你从零开始,避开那些常见的“坑”,直达成功上线。
万事开头,先把地基打好。这里以Ubuntu/Debian为例,CentOS系列的思路也大同小异,只是包管理器和个别路径稍有不同。
sudo apt-get update && sudo apt-get upgrade。sudo apt-get install nginx。sudo apt-get install mysql-server。安装完成后,别忘了运行sudo mysql_secure_installation来完成安全初始化,这可是保护数据库的第一道防线。sudo apt-get install php7.4-fpm php7.4-mysql php-mbstring php-xml php-zip。这里的扩展列表可以根据你的应用需求灵活增减。sudo mkdir -p /var/www/your_project/public。sudo chown -R www-data:www-data /var/www/your_project。环境就绪,接下来就是把你的“宝贝”代码放上去,并把数据库准备好。
scp -r /path/to/your/php/source user@your_server_ip:/var/www/your_project。mysql -u root -p。CREATE DATABASE your_database;CREATE USER ‘your_user’@‘localhost’ IDENTIFIED BY ‘your_password’;GRANT ALL PRIVILEGES ON your_database.* TO ‘your_user’@‘localhost’;FLUSH PRIVILEGES;mysql -u your_user -p your_database < /path/to/your/sqlfile.sql。.env这类包含数据库密码等敏感信息的配置文件,千万不要提交到代码仓库。正确的做法是,在服务器上手动创建并配置,同时将其文件权限设置为仅属主可读(如600)。这是让Nginx和PHP“握手”成功的关键一步,配置对了,应用才能流畅运行。
sudo nano /etc/nginx/sites-a vailable/your_domain。server_name(你的域名)、root(项目public目录路径)以及fastcgi_pass(PHP-FPM的socket路径)。
server {
listen 80;
server_name your_domain;
root /var/www/your_project/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 按实际版本与路径修改
}
location ~ /\.ht {
deny all;
}
}
sudo ln -s /etc/nginx/sites-a vailable/your_domain /etc/nginx/sites-enabled/。sudo nano /etc/php/7.4/fpm/pool.d/www.conf。listen这一行,确保其值与上面Nginx配置中的fastcgi_pass完全一致,例如:listen = /var/run/php/php7.4-fpm.sock。/etc/php/7.4/fpm/php.ini中,建议将cgi.fix_pathinfo设置为0以提升安全性。同时,根据应用需求调整memory_limit、max_execution_time等参数。sudo nginx -t。看到“syntax is ok”才算过关。sudo systemctl reload nginx && sudo systemctl restart php7.4-fpm。/etc/nginx/conf.d/目录下,例如default.conf。unix:/run/php-fpm/www.sock或127.0.0.1:9000,务必与Nginx中的fastcgi_pass对应上。SCRIPT_FILENAME参数:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;。实际工作中,我们常常需要应对更复杂的场景,比如多环境部署,或者在同一台服务器上运行不同PHP版本的应用。
/etc/nginx/sites-a vailable/dev.conf、test.conf、prod.conf。.env文件来管理。Nginx中甚至可以通过env指令引入环境变量,不过要注意其作用域限制。sudo apt-get install php7.2 php7.4 php7.2-fpm php7.4-fpm。fastcgi_pass指向新版本的socket路径(如/run/php/php7.2-fpm.sock),然后重载Nginx即可。server块或location块指定不同的fastcgi_pass路径。这样,你就能在同一台服务器上,让不同的应用运行在不同版本的PHP上。phpinfo()函数的页面进行访问,是确认PHP版本是否切换成功的最直观方法。配置完成,打开浏览器访问你的域名。如果一切顺利,应该能看到应用界面。如果遇到问题,别慌,按照以下思路排查,十有八九能找到原因。
/var/log/nginx/error.log/var/log/php7.4-fpm.log(具体因版本和系统而异)/var/log/mysql/error.logroot是否指向了应用正确的入口目录(例如Lara vel的public目录)。其次,确认try_files规则是否正确,能够将请求路由到前端控制器(如index.php)。systemctl status php7.4-fpm);确认socket文件的权限是否正确(www-data用户可访问)。www-data:www-data(或你的Web服务用户)。文件权限644、目录权限755是一个安全的起点,尽量避免使用777这种过于宽松的权限。.env)中的DB_HOST、DB_USER、DB_PASS、DB_NAME。确保数据库服务已启动,并且创建的用户拥有对应数据库的访问权限。info.php等文件。为你的域名配置HTTPS,现在通过Let’s Encrypt获取免费证书非常方便。最后,可以根据流量情况,在Nginx和PHP中开启Gzip压缩、调整缓冲区与超时设置,进一步提升应用性能与用户体验。上一篇:LAMP架构如何实现数据备份
下一篇:Java在Linux上的性能优化
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9