我来帮你从头配置一个完整的Web服务器环境(LNMP:Linux + Nginx + MySQL + PHP)。
1. 更新系统并安装必要工具
bash
# 更新系统包
sudo apt update && sudo apt upgrade -y
# 安装必要工具
sudo apt install -y curl wget vim git ufw
2. 安装 Nginx
bash
# 安装 Nginx
sudo apt install -y nginx
# 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
# 检查状态
sudo systemctl status nginx
# 配置防火墙(如果启用了ufw)
sudo ufw allow 'Nginx Full'
sudo ufw allow 22/tcp
sudo ufw enable
3. 安装 MySQL
bash
# 安装 MySQL
sudo apt install -y mysql-server
# 启动并设置开机自启
sudo systemctl start mysql
sudo systemctl enable mysql
# 安全配置(设置root密码,删除匿名用户等)
sudo mysql_secure_installation
配置 MySQL 的推荐选项:
VALIDATE PASSWORD COMPONENT: 按需选择
设置 root 密码(请使用强密码)
Remove anonymous users: Yes
Disallow root login remotely: Yes
Remove test database: Yes
Reload privilege tables: Yes
4. 安装 PHP 及其扩展
bash
# 安装 PHP 8.1 及相关扩展
sudo apt install -y php8.1-fpm php8.1-mysql php8.1-common \
php8.1-cli php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml \
php8.1-zip php8.1-opcache php8.1-readline
# 启动 PHP-FPM
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm
5. 配置 Nginx 使用 PHP
bash
# 创建网站目录
sudo mkdir -p /var/www/html
sudo chown -R $USER:$USER /var/www/html
# 创建测试文件
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
# 配置 Nginx 站点
sudo vim /etc/nginx/sites-available/default
修改配置文件为:
nginx
server {
listen 80;
listen [::]:80;
server_name localhost;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
6. 测试配置并重启服务
bash
# 测试 Nginx 配置
sudo nginx -t
# 重启服务
sudo systemctl restart nginx
sudo systemctl restart php8.1-fpm
# 检查服务状态
sudo systemctl status nginx php8.1-fpm mysql
7. 设置权限和测试
bash
# 设置正确的权限
sudo chmod 755 /var/www/html
sudo find /var/www/html -type f -exec chmod 644 {} \;
# 测试 PHP 处理
curl http://localhost/info.php
8. 创建虚拟主机示例
bash
# 创建新的站点配置
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mywebsite
# 编辑配置文件
sudo vim /etc/nginx/sites-available/mywebsite
# 启用站点
sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/
# 移除默认站点(可选)
sudo rm /etc/nginx/sites-enabled/default
# 测试并重载配置
sudo nginx -t
sudo systemctl reload nginx
9. 安全加固建议
bash
# 限制 PHP 执行
sudo vim /etc/php/8.1/fpm/php.ini
修改以下参数:
ini
expose_php = Off
display_errors = Off
log_errors = On
upload_max_filesize = 20M
post_max_size = 20M
重启 PHP-FPM:
bash
sudo systemctl restart php8.1-fpm
10. 故障排查命令
bash
# 检查端口监听
sudo netstat -tlnp | grep -E ':(80|3306|9000)'
# 查看错误日志
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/php8.1-fpm.log
sudo tail -f /var/log/mysql/error.log
# 测试 MySQL 连接
mysql -u root -p -e "SELECT 1"
现在你的 Web 服务器已经配置完成!可以通过浏览器访问服务器 IP 地址来查看 info.php 的输出,确认 PHP 正常工作。
注意事项:
生产环境请删除 info.php 测试文件
配置 SSL 证书(建议使用 Let's Encrypt)
定期更新系统和软件包
配置合适的备份策略
评论