LNMP在Debian上的使用技巧
安装前确保系统包列表最新,避免依赖冲突:
sudo apt update && sudo apt upgrade -y
建议使用Debian最小化安装(如debian-minimal),减少不必要的软件包占用资源。
通过APT安装Nginx(默认仓库版本稳定),并设置开机自启:
sudo apt install nginx -y
sudo systemctl enable --now nginx
验证安装:浏览器访问服务器IP,若看到Nginx欢迎页面则成功。
推荐使用MariaDB(MySQL分支,兼容性好),安装后运行安全脚本强化配置:
sudo apt install mariadb-server -y
sudo mysql_secure_installation
按提示设置root密码、移除匿名用户、禁止root远程登录等。
根据项目需求选择PHP版本(如7.4/8.1),安装PHP-FPM(处理PHP请求)及常用扩展(MySQL、GD、CURL等):
sudo apt install php-fpm php-mysql php-gd php-curl php-mbstring php-opcache -y
sudo systemctl enable --now php7.4-fpm(版本号按实际调整)。
编辑Nginx默认站点配置(/etc/nginx/sites-available/default),在server块中添加PHP处理逻辑:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 确保路径与PHP-FPM配置一致
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
测试Nginx配置语法:sudo nginx -t,无误后重载:sudo systemctl reload nginx。
调整核心参数提升并发处理能力:
worker_processes auto;(自动匹配CPU核心数)worker_connections 1024;(单个worker最大连接数)sendfile on;(启用高效文件传输)gzip on;(开启Gzip压缩,减少传输体积)keepalive_timeout 65;(保持连接复用,降低TCP开销)/etc/nginx/nginx.conf):http {
worker_processes auto;
worker_rlimit_nofile 65535;
sendfile on;
gzip on;
gzip_types text/plain text/css application/json application/javascript;
keepalive_timeout 65;
# ...其他配置
}
```。
#### 2. PHP优化
启用OPcache加速PHP脚本执行(`/etc/php/7.4/fpm/php.ini`):
```ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
调整内存限制:memory_limit = 256M(根据应用需求设置,避免过大浪费内存)。
调整内存相关参数提升数据库性能(/etc/mysql/mariadb.conf.d/50-server.cnf):
[mysqld]
innodb_buffer_pool_size = 1G # 物理内存的50%-80%(如16GB内存设为8G-12G)
innodb_log_file_size = 256M # 日志文件大小,提升写入性能
innodb_flush_log_at_trx_commit = 2 # 平衡性能与数据安全性(0最快,2折中,1最安全)
query_cache_size = 64M # 查询缓存(适合读多写少场景)
重启MariaDB生效:sudo systemctl restart mariadb。
提升系统资源利用率:
ulimit -n 65535(永久生效需修改/etc/security/limits.conf)sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_fastopen=3
永久生效需将上述命令添加到/etc/sysctl.conf。使用ufw限制访问,仅开放必要端口(HTTP 80、HTTPS 443):
sudo ufw allow 'Nginx Full'
sudo ufw enable
禁止root远程登录(/etc/ssh/sshd_config):
PermitRootLogin no
重启SSH:sudo systemctl restart ssh。
运行mysql_secure_installation完成以下操作:
server_tokens off;(/etc/nginx/nginx.conf)location ~ /\.ht {
deny all;
}
location ~* \.(env|git|log)$ {
deny all;
}
```。
htop(实时进程监控)、glances(系统资源概览)监控服务器状态/var/log/nginx/error.log)和PHP-FPM日志(/var/log/php7.4-fpm.log),快速定位问题。mysqldump定期导出数据库(如每天凌晨):mysqldump -u root -p --all-databases > /backups/mysql_$(date +%F).sqlrsync或tar备份网站根目录(/var/www/html)。使用cron设置定时任务,例如每天凌晨3点清理Nginx缓存:
0 3 * * * rm -rf /var/cache/nginx/*
编辑cron:crontab -e。