LNMP(Linux+Nginx+MySQL/MariaDB+PHP)是常见的Web服务组合,以下是在Debian/Ubuntu系统上的详细配置流程(适用于大多数Linux发行版,部分命令需根据系统版本调整):
首先更新系统包列表,安装Nginx、MySQL/MariaDB、PHP及常用扩展:
sudo apt update
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml
nginx:Web服务器;mysql-server/mariadb-server:关系型数据库(任选其一);php-fpm:PHP FastCGI进程管理器(处理PHP请求);php-mysql等扩展:支持PHP连接数据库及其他功能。登录MySQL并创建数据库、用户及授权:
sudo mysql -u root -p # 输入root密码登录
在MySQL shell中执行以下命令:
-- 创建数据库(如your_database_name)
CREATE DATABASE your_database_name;
-- 创建用户(如your_username,密码设为your_password)
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';
-- 授权用户对数据库的所有权限
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
-- 刷新权限使更改生效
FLUSH PRIVILEGES;
-- 退出MySQL
EXIT;
安全加固:运行安全脚本禁用匿名用户、禁止root远程登录等:
sudo mysql_secure_installation
按提示设置root密码、移除测试数据库等。
编辑PHP-FPM池配置文件(路径随PHP版本变化,如php7.4-fpm或php8.2-fpm):
sudo nano /etc/php/7.4/fpm/pool.d/www.conf # 根据实际PHP版本调整
找到以下参数并修改(确保与Nginx用户一致):
user = www-data
group = www-data
listen = /var/run/php/php7.4-fpm.sock # 监听Unix套接字(推荐)
保存后重启PHP-FPM服务:
sudo systemctl restart php7.4-fpm
验证监听状态:
sudo ss -lntp | grep php
应显示php7.4-fpm.sock处于监听状态。
在/etc/nginx/sites-available/目录下新建配置文件(如yourdomain.com.conf):
sudo nano /etc/nginx/sites-available/yourdomain.com.conf
添加以下内容(根据需求调整):
server {
listen 80;
server_name yourdomain.com www.yourdomain.com; # 替换为你的域名
root /var/www/yourdomain.com; # 网站根目录
index index.php index.html index.htm; # 默认索引文件
location / {
try_files $uri $uri/ =404; # 尝试访问文件,不存在则返回404
}
location ~ \.php$ { # 处理PHP请求
include snippets/fastcgi-php.conf; # 引入FastCGI配置
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 与PHP-FPM监听地址一致
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 脚本路径
include fastcgi_params; # 包含通用FastCGI参数
}
location ~ /\.ht { # 禁止访问.htaccess文件(Apache遗留配置)
deny all;
}
}
创建符号链接到sites-enabled目录:
sudo ln -s /etc/nginx/sites-available/yourdomain.com.conf /etc/nginx/sites-enabled/
检查语法错误:
sudo nginx -t
若输出Syntax OK,则重新加载Nginx:
sudo systemctl reload nginx
sudo mkdir -p /var/www/yourdomain.com # 创建目录
sudo chown -R www-data:www-data /var/www/yourdomain.com # 修改所有者(Nginx运行用户)
sudo chmod -R 755 /var/www/yourdomain.com # 设置目录权限
创建index.php测试PHP是否正常:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/yourdomain.com/index.php
或创建info.php文件:
sudo nano /var/www/yourdomain.com/info.php
写入<?php phpinfo(); ?>并保存。
允许HTTP(80)和HTTPS(443)流量通过:
sudo ufw allow 'Nginx Full' # 允许Nginx的全部流量
sudo ufw enable # 启用防火墙(若未启用)
检查防火墙状态:
sudo ufw status
应显示Nginx Full为ALLOW。
在浏览器中访问http://yourdomain.com(若未绑定域名,可修改本地/etc/hosts文件指向服务器IP),应看到PHP信息页面,证明配置成功。
使用Let’s Encrypt免费获取SSL证书:
sudo apt install certbot python3-certbot-nginx # 安装Certbot及Nginx插件
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com # 自动配置SSL
按提示完成验证,Certbot会自动修改Nginx配置以支持HTTPS(重定向HTTP到HTTPS)。
php8.2-fpm.sock);/var/log/nginx/error.log)和PHP-FPM日志(/var/log/php7.4-fpm.log)定位原因。