LNMP在Debian上的使用技巧
一、基础环境安装与配置
1. 系统准备
安装前确保系统包列表最新,避免依赖冲突:
sudo apt update && sudo apt upgrade -y
建议使用Debian最小化安装(如debian-minimal),减少不必要的软件包占用资源。
2. 安装Nginx
通过APT安装Nginx(默认仓库版本稳定),并设置开机自启:
sudo apt install nginx -y
sudo systemctl enable --now nginx
验证安装:浏览器访问服务器IP,若看到Nginx欢迎页面则成功。
3. 安装MariaDB/MySQL
推荐使用MariaDB(MySQL分支,兼容性好),安装后运行安全脚本强化配置:
sudo apt install mariadb-server -y
sudo mysql_secure_installation
按提示设置root密码、移除匿名用户、禁止root远程登录等。
4. 安装PHP及扩展
根据项目需求选择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(版本号按实际调整)。
5. 配置Nginx支持PHP
编辑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。
二、性能优化技巧
1. 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(根据应用需求设置,避免过大浪费内存)。
3. MySQL优化
调整内存相关参数提升数据库性能(/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。
4. Linux系统优化
提升系统资源利用率:
- 增加文件描述符限制:
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。
三、安全加固措施
1. 防火墙配置
使用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。
2. 数据库安全
运行mysql_secure_installation完成以下操作:
- 设置root密码
- 移除匿名用户
- 禁止root远程登录
- 移除测试数据库。
3. Nginx安全
- 隐藏服务器版本:
server_tokens off;(/etc/nginx/nginx.conf) - 禁止访问敏感文件:
location ~ /\.ht { deny all; } location ~* \.(env|git|log)$ { deny all; } ```。
四、日常维护技巧
1. 监控与日志
- 使用
htop(实时进程监控)、glances(系统资源概览)监控服务器状态 - 定期检查Nginx错误日志(
/var/log/nginx/error.log)和PHP-FPM日志(/var/log/php7.4-fpm.log),快速定位问题。
2. 备份策略
- 数据库备份:使用
mysqldump定期导出数据库(如每天凌晨):
mysqldump -u root -p --all-databases > /backups/mysql_$(date +%F).sql - 文件备份:使用
rsync或tar备份网站根目录(/var/www/html)。
3. 自动化任务
使用cron设置定时任务,例如每天凌晨3点清理Nginx缓存:
0 3 * * * rm -rf /var/cache/nginx/*
编辑cron:crontab -e。