LEMP是一套流行的开源网站服务器架构,代表Linux、Nginx、MariaDB(MySQL兼容)、PHP。与传统的LAMP(Linux、Apache、MySQL、PHP)相比,LEMP用Nginx替代了Apache,因此更加轻量高效,非常适合资源有限的VPS或低配服务器。在多项基准测试中,LEMP在高并发负载下表现出比LAMP更快的响应速度和更低的资源消耗。
本教程将介绍如何在Debian 9系统上从零搭建一个完整的LEMP环境,包括安装和配置Nginx、MariaDB数据库以及PHP,并为网站启用HTTPS加密访问。
一、准备工作
- 一台全新安装Debian 9操作系统的VPS
- 至少512MB内存和15GB可用磁盘空间
- 拥有root权限
- 若需部署HTTPS证书,请提前将域名解析指向该服务器IP
二、安装与配置Nginx
首先,以root用户或具有sudo权限登录到服务器,并更新软件包索引:
sudo apt update
接着安装Nginx:
sudo apt install nginx -y
完成后,可以通过浏览器访问你的服务器IP或域名,如果看到“Nginx欢迎页面”,说明Web服务已正常运行。为了确保每次重启后自动启动Nginx,可执行:
sudo systemctl enable nginx
为了保障安全性,建议使用ufw防火墙,仅允许必要端口(HTTP/HTTPS/SSH/FTP)通过:
sudo apt install ufw -y
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw allow ftp
sudo ufw enable # 启动防火墙,根据提示输入y确认即可。
如遇到连接异常,可检查防火墙状态并调整规则。
三、安装MariaDB数据库
MariaDB是MySQL的一种分支,与原版完全兼容且性能优异。直接通过apt命令进行安装:
sudo apt install mariadb-server -y # 或 mysql-server,根据仓库实际情况选择。
启动数据库服务:
sudo systemctl start mysql # MariaDB同样使用mysql作为服务名称。
首次配置时,为了提高安全性,需要运行初始化脚本:
sudo mysql_secure_installation
# 按照提示设置root密码,移除匿名用户等,一般建议全部选择“y”以增强安全性。
可以尝试登录验证是否成功:
sudo mysql -u root -p # 输入刚才设置的新密码即可进入数据库控制台。
exit # 输入exit退出控制台。
四、安装PHP及常用扩展
Debian 9默认提供的是PHP 7.0版本,如无特殊需求可直接使用,也可以根据需要添加其他扩展模块。例如:
sudo apt install php-fpm php-mysql php-mbstring php-dev php-gd php-pear php-zip php-xml php-curl -y
# 安装php-fpm用于处理FastCGI请求,以及常见功能扩展模块。
设置当前默认php版本(如果有多个版本共存时):
sudo update-alternatives --set php /usr/bin/php7.0
php --version # 检查当前生效版本号是否正确显示为7.0系列。
五、配置Nginx支持PHP解析
与Apache不同,Nginx不会自动识别和处理.php文件,需要手动编辑站点配置。一般来说,在/etc/nginx/sites-enabled/default
路径下修改主站点配置。如果已有旧文件可先删除,然后创建新的默认站点配置,例如如下内容(请根据实际情况调整fastcgi_pass中的sock路径及php版本号):
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock; # 注意这里要对应你实际安装的php-fpm sock路径和版本号!
}
location ~ /\.ht {
deny all;
}
}
保存退出后,通过以下命令重启nginx使改动生效:
sudo systemctl restart nginx
此时,你的网站应能继续正常访问。如果要测试PHP是否能被正确解析,可以新建一个index.php文件于网站根目录 /var/www/html/index.php
,内容如下:
<?php
phpinfo();
?>
刷新浏览器查看效果,如果出现详细的PHP信息页面,则说明环境已经搭建成功。记得及时删除该测试文件,以免泄露敏感信息:
rm /var/www/html/index.php
六、为网站启用Let’s Encrypt免费SSL证书
若你的域名已正确指向此服务器,可以借助Certbot工具快速申请并自动部署Let’s Encrypt SSL证书,实现全站HTTPS加密访问。
首先添加backports源以获取最新版certbot工具:
echo "deb http://ftp.debian.org/debian stretch-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
sudo apt update
然后开始正式安装certbot及其nginx插件:
sudo apt install certbot python-certbot-nginx -t stretch-backports -y
执行以下命令生成证书并自动绑定至nginx虚拟主机:
sudo certbot --nginx --rsa-key-size 4096
按照交互式提示填写邮箱地址,同意协议,并输入自己的域名。当询问是否强制跳转到https时请选择“2”。完成后再次刷新你的网站,应会看到地址栏出现小锁标志,即表示SSL/TLS加密已生效。
七、小结与拓展应用场景
经过上述步骤,你已经拥有了一个完整、高性能、安全可靠的LEMP生产环境。这一平台不仅能够托管静态网页,还支持WordPress/Joomla/Moodle等各类动态CMS程序,只需进一步完善相应目录结构及权限管理即可上线运营。如需迁移数据或优化性能,可参考官方文档深入学习相关参数调优方法。
参考资料:
- NGINX 官方文档 https://docs.nginx.com/
- MariaDB 官方文档 https://mariadb.org/documentation/
- PHP 官方手册 https://www.php.net/manual/
- Certbot 用户指南 https://certbot.eff.org/instructions