在Debian上定制LNMP(Linux+Nginx+MySQL/MariaDB+PHP)功能,可按以下步驟操作,結合實際需求調整配置:
更新系統
sudo apt update && sudo apt upgrade -y
安裝Nginx
sudo apt install nginx
sudo systemctl start nginx && sudo systemctl enable nginx
安裝數據庫(MySQL/MariaDB)
sudo apt install mariadb-server
sudo mysql_secure_installation # 設置root密碼及安全選項
my.cnf
。安裝PHP及擴展
sudo apt install php-fpm php-mysql php-gd php-curl php-mbstring
sudo apt install php-redis php-pdo
配置PHP-FPM
編輯/etc/php/<version>/fpm/pool.d/www.conf
(<version>
為PHP版本號,如7.4
):
listen = /run/php/php7.4-fpm.sock # 確保與Nginx配置一致
listen.owner = www-data
listen.group = www-data
重啟服務:
sudo systemctl restart php7.4-fpm
配置Nginx支持PHP
編輯站點配置文件(如/etc/nginx/sites-available/default
):
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 與PHP-FPM監聽路徑一致
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
測試配置并重啟Nginx:
sudo nginx -t && sudo systemctl restart nginx
數據庫主從復制(集群場景)
/etc/mysql/my.cnf
,設置server-id=1
、log-bin=mysql-bin
,并重啟MySQL。server-id=2
、relay-log=mysql-relay-bin
,并執行CHANGE MASTER TO
命令指向主服務器。sudo systemctl start mysql-slave
。SSL證書配置(HTTPS支持)
使用Let’s Encrypt免費證書:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
虛擬主機配置
創建自定義虛擬主機文件(如/etc/nginx/sites-available/example.com.conf
):
server {
listen 80;
server_name example.com;
root /var/www/example.com;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
啟用配置:sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
,然后重啟Nginx。
性能優化
http
模塊中添加proxy_cache_path
配置。php.ini
設置memory_limit=512M
。my.cnf
中設置query_cache_type=1
。防火墻配置
使用UFW允許HTTP/HTTPS流量:
sudo ufw allow 'Nginx Full'
sudo ufw deny 3306/tcp # 禁止數據庫遠程訪問(生產環境建議限制IP)
日志管理
/var/log/nginx/access.log
、/var/log/nginx/error.log
。php.ini
設置error_log=/var/log/php_errors.log
。服務監控
htop
監控系統資源:sudo apt install htop
。systemctl
查看服務狀態:sudo systemctl status nginx mysql php7.4-fpm
。/var/www/html/info.php
:<?php phpinfo(); ?>
http://服務器IP/info.php
,確認PHP信息頁面正常顯示,且數據庫連接正常。根據實際需求,可進一步調整Nginx的負載均衡、數據庫分片或PHP的OPcache等高級功能。