CentOS 7 上部署网站的 LNMP 实操指南
一 环境准备与版本选择
- 系统建议:CentOS 7.x(本文以 CentOS 7.6 为例),具备 root 或 sudo 权限,已连接公网。
- 组件版本示例:Nginx 1.27.0、MariaDB 10.11、PHP 8.3.8(亦可选择 MySQL 8.x;PHP 版本需与程序兼容)。
- 端口与防火墙:开放 TCP 80/443;云服务器需配置安全组入方向放行 80/443。
- 两种路径:手动搭建(可控性高)与一键安装包(效率高,适合快速交付)。
二 手动搭建 LNMP 环境
- 安装 Nginx
- 创建仓库:vi /etc/yum.repos.d/nginx.repo,写入
- [nginx] name=nginx repo baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1
- 安装与启动:yum install -y nginx;systemctl start nginx;systemctl enable nginx。
- 安装 MariaDB
- 安装:yum install -y mariadb-server mariadb
- 启动与初始化:systemctl start mariadb;systemctl enable mariadb;执行 mysql_secure_installation 设置 root 密码与基础安全项。
- 安装 PHP 与 PHP-FPM
- 安装:yum install -y php php-fpm php-mysqlnd(或 php-mysql);systemctl start php-fpm;systemctl enable php-fpm。
- 配置 Nginx 与 PHP 联动(两种方式二选一)
- 方式 A(TCP 端口):在 /etc/nginx/conf.d/default.conf 的 server 块中加入
- location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
- 方式 B(Unix Socket,常见路径):fastcgi_pass unix:/run/php-fpm/www.sock; 其余参数同上。
- 检查并重载:nginx -t && systemctl reload nginx。
- 防火墙放行
- firewall-cmd --permanent --zone=public --add-service=http
- firewall-cmd --permanent --zone=public --add-service=https
- firewall-cmd --reload。
三 部署网站与虚拟主机
- 创建站点目录与示例页
- mkdir -p /var/www/example.com/html
- echo “” > /var/www/example.com/html/index.php
- chown -R nginx:nginx /var/www/example.com && chmod -R 755 /var/www/example.com
- 新建虚拟主机配置
- vi /etc/nginx/conf.d/example.com.conf
- 示例:
- server { listen 80; server_name example.com www.example.com; root /var/www/example.com/html; index index.php index.html; location / { try_files $uri $uri/ =404; } location ~ .php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/run/php-fpm/www.sock; } location ~ /.ht { deny all; } }
- 生效与验证
- nginx -t && systemctl reload nginx
- 浏览器访问:http://example.com 或服务器 IP 查看 phpinfo 页面。
- DNS 与证书
- 在域名解析商将 example.com 与 www.example.com 指向服务器 IP。
- 启用 HTTPS(Let’s Encrypt):yum install -y certbot python2-certbot-nginx;certbot --nginx -d example.com -d www.example.com。
四 数据库与程序上线
- 创建数据库与用户
- mysql -u root -p
- CREATE DATABASE your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- CREATE USER ‘your_user’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
- GRANT ALL PRIVILEGES ON your_db.* TO ‘your_user’@‘localhost’;
- FLUSH PRIVILEGES;
- 导入数据
- mysql -u your_user -p your_db < your_data.sql
- 程序配置
- 将程序代码上传至站点根目录(如 /var/www/example.com/html)。
- 编辑应用配置(如 .env 或 config.php),填入数据库名、用户、密码、主机(通常为 localhost)。
- 设置目录权限(示例):chown -R nginx:nginx /var/www/example.com;对需要写入的目录(如 uploads、cache、logs)设置 755/775 视属主而定。
- 重启服务:systemctl reload nginx;必要时重启 php-fpm。
五 一键安装与常用管理
- 使用 LNMP 一键安装包(适合快速交付)
- 安装前建议:screen -S lnmp
- 下载与安装:wget http://soft.lnmp.com/lnmp/lnmp2.2.tar.gz -O lnmp2.2.tar.gz && tar zxf lnmp2.2.tar.gz && cd lnmp2.2 && ./install.sh lnmp
- 版本支持:提供 PHP 8.4.5、MySQL 8.4 等新版本选项,支持多 PHP 版本、自动生成 Let’s Encrypt 证书、虚拟主机与数据库管理脚本等。
- 常用管理命令
- 环境控制:lnmp {start|stop|reload|restart|status}
- 组件控制:lnmp {nginx|mysql|mariadb|php-fpm} {start|stop|reload|restart|status}
- 虚拟主机:lnmp vhost {add|list|del}
- 数据库:lnmp database {add|list|edit|del}
- SSL:lnmp ssl add(为已存在虚拟主机添加证书)。