138 次浏览
LEMP 环境(Linux、Nginx、MySQL/MariaDB、PHP)是搭建动态网站和 Web 应用的高性能基础平台,因其轻量级和高性能被广泛青睐。以下是搭建的详细步骤。
1、准备工作
更新软件包
sudo apt update && sudo apt upgrade -y
配置防火墙
sudo ufw allow 'Nginx Full' # 允许80和443端口
sudo ufw allow OpenSSH # 允许SSH
sudo ufw enable # 启用防火墙
sudo ufw status # 验证规则
2、安装与配置Nginx
sudo apt install nginx -y
启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx # 设置开机自启
sudo systemctl status nginx # 检查运行状态
此时在浏览器输入你的服务器IP,应能看到Nginx欢迎页。
3、安装与配置数据库 MySQL
sudo apt install mysql-server -y
启动并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld
运行安全配置脚本
这是一个关键的安全步骤,用于设置 root 密码、移除匿名用户、禁用远程 root 登录等。
sudo mysql_secure_installation
根据提示依次进行安全设置。
(可选)创建专用数据库和用户
为你的应用程序创建独立的数据库和用户,而不是使用 root 账户。
sudo mysql -u root -p
在 MySQL shell 中执行:
-- 创建新数据库
CREATE DATABASE myappdb;
-- 创建新用户并设置密码
CREATE USER 'myappuser'@'localhost' IDENTIFIED BY 'your_strong_password';
-- 授予用户对数据库的所有权限
GRANT ALL PRIVILEGES ON myappdb.* TO 'myappuser'@'localhost';
-- 刷新权限使更改生效
FLUSH PRIVILEGES;
-- 退出
EXIT;
4、安装与配置PHP
PHP 负责处理动态内容,PHP-FPM(FastCGI Process Manager)则管理 PHP 进程并与 Nginx 通信。
sudo apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -y
配置 PHP-FPM
主要配置文件通常是 /etc/php/{version}/fpm/php.ini
一个常见的安全调整是:
sudo sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/7.4/fpm/php.ini # 请根据实际版本修改路径
此设置可防止 PHP 尝试执行不存在的文件。
启动并启用 PHP-FPM
sudo systemctl start php7.4-fpm # 名称可能因版本而异,如 php8.1-fpm, php-fpm
sudo systemctl enable php7.4-fpm
配置 Nginx 使用 PHP-FPM
sudo nano /etc/nginx/conf.d/wordpress.conf
内容如下:
erver {
listen 443 ssl http2; # 启用 HTTP/2 可以提供更好的性能
listen [::]:443 ssl http2; # 启用 IPv6 支持
server_name your-domain.com; # 自己的域名
#避免413报错
client_max_body_size 64M;
# SSL 证书路径(使用Let's Encrypt生成)
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
# 网站根目录指向 WordPress
root /var/www/html;
# 定义默认索引文件,按优先级顺序查找
index index.php index.html index.htm;
# 主 location 块,处理所有请求
location / {
# try_files 指令尝试按顺序服务文件:
# 1. 首先尝试直接访问请求的 URI(文件)
# 2. 如果找不到,尝试访问以 URI 命名的目录
# 3. 如果都找不到,将请求转发给 index.php,并附带查询参数
try_files $uri $uri/ /index.php?$args;
}
# 处理静态文件缓存 - 提高性能
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
# 设置较长的过期时间(1年),利用浏览器缓存
expires 1y;
# 关闭访问日志,减少磁盘写入
access_log off;
# 添加缓存控制头
add_header Cache-Control "public, immutable";
# 尝试直接访问文件,如果找不到则返回 404
try_files $uri =404;
}
# 处理PHP请求
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; # 请根据实际 PHP 版本调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 保护敏感文件不被访问
location ~ /\. {
# 拒绝访问所有以点开头的隐藏文件(如 .htaccess, .git, .env 等)
deny all;
# 关闭访问日志
access_log off;
# 关闭错误日志
log_not_found off;
}
# 特别保护 wp-config.php 文件
location = /wp-config.php {
deny all;
access_log off;
log_not_found off;
}
}
# 重定向所有HTTP(80)请求到HTTPS(443)
server {
listen 80;
listen [::]:80; # 启用IPv6支持
server_name your-domain.com; # 自己的域名
# 告诉搜索引擎和浏览器这是一个永久重定向
return 301 https://$server_name$request_uri;
}
测试配置并重载 Nginx
sudo nginx -t # 检查配置文件语法是否正确
sudo systemctl reload nginx # 重载配置(不会中断服务)
5、测试 LEMP 环境
创建一个 PHP 信息页来验证所有组件是否协同工作。
创建测试文件
sudo echo "" > /var/www/html/info.php
在浏览器中访问
打开浏览器,访问 http://your_server_ip/info.php。
你应该能看到一个显示 PHP 配置详细信息的页面,其中包含 MySQL/MariaDB 和 PHP-FPM 的相关信息。
移除测试文件(安全重要!)
测试成功后,务必删除此测试文件,以免泄露服务器信息。
sudo rm /var/www/html/info.php