# 怎么搭建和部署LNMP平臺環境
## 一、LNMP環境概述
### 1.1 什么是LNMP
LNMP代表Linux + Nginx + MySQL + PHP組成的動態網站服務器架構,是當前主流的Web開發環境之一。與傳統的LAMP(Linux+Apache+MySQL+PHP)架構相比,LNMP具有以下特點:
- **Nginx**:輕量級高性能Web服務器,處理靜態請求效率極高
- **PHP-FPM**:FastCGI進程管理器,提供更高效的PHP解析
- **MySQL/MariaDB**:關系型數據庫管理系統
- **Linux**:穩定可靠的操作系統基礎
### 1.2 典型應用場景
- 個人博客(WordPress、Typecho等)
- 電子商務網站(Magento、OpenCart等)
- 企業官網
- API服務后端
## 二、環境準備
### 2.1 系統要求
建議使用以下Linux發行版:
- Ubuntu 20.04/22.04 LTS
- CentOS 7/8
- Debian 10/11
硬件最低配置:
- 1核CPU
- 1GB內存
- 10GB磁盤空間
### 2.2 系統更新
```bash
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# CentOS
sudo yum update -y
# Ubuntu/Debian使用UFW
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
# CentOS使用firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
# Ubuntu/Debian
sudo apt install nginx -y
# CentOS
sudo yum install epel-release -y
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
訪問服務器IP地址,應看到Nginx歡迎頁面。
編輯主配置文件:
sudo nano /etc/nginx/nginx.conf
建議修改的配置項:
user www-data; # Ubuntu/Debian
# user nginx; # CentOS
worker_processes auto;
worker_connections 1024;
keepalive_timeout 65;
gzip on;
sudo nano /etc/nginx/sites-available/example.com
示例配置:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
啟用站點:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t # 測試配置
sudo systemctl reload nginx
# Ubuntu/Debian
sudo apt install mysql-server -y
# CentOS
sudo yum install mariadb-server -y
sudo mysql_secure_installation
按照提示設置: 1. 設置root密碼 2. 移除匿名用戶 3. 禁止root遠程登錄 4. 移除測試數據庫 5. 重新加載權限表
mysql -u root -p
# MySQL命令行
CREATE DATABASE example_db;
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
編輯配置文件:
sudo nano /etc/mysql/my.cnf # 或 /etc/my.cnf
基礎優化建議:
[mysqld]
innodb_buffer_pool_size = 256M # 根據內存調整
max_connections = 100
query_cache_size = 32M
重啟服務:
sudo systemctl restart mysql
# Ubuntu/Debian
sudo apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -y
# CentOS
sudo yum install php-fpm php-mysqlnd php-opcache php-gd php-xml php-mbstring -y
sudo nano /etc/php/8.1/fpm/php.ini # 版本號可能不同
推薦修改:
upload_max_filesize = 32M
post_max_size = 32M
memory_limit = 128M
max_execution_time = 120
date.timezone = Asia/Shanghai
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
建議調整:
pm = dynamic
pm.max_children = 25
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
sudo systemctl restart php8.1-fpm
sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/info.php
內容:
<?php phpinfo(); ?>
瀏覽器訪問:http://your_server_ip/info.php
應顯示PHP信息頁面,確認: - PHP版本正確 - MySQL擴展已加載 - 其他必要擴展可用
創建測試腳本:
<?php
$db = new mysqli('localhost', 'example_user', 'strong_password', 'example_db');
if ($db->connect_error) {
die("連接失敗: " . $db->connect_error);
}
echo "數據庫連接成功!";
?>
# /etc/nginx/nginx.conf
events {
worker_connections 4096;
multi_accept on;
}
http {
open_file_cache max=2000 inactive=20s;
open_file_cache_valid 60s;
open_file_cache_min_uses 5;
open_file_cache_errors off;
client_max_body_size 32m;
client_body_buffer_size 128k;
}
[opcache]
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
使用Let’s Encrypt免費證書:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
自動續期測試:
sudo certbot renew --dry-run
可能原因: - PHP-FPM未運行 - Nginx與PHP-FPM socket配置不匹配
解決方案:
sudo systemctl status php8.1-fpm
# 檢查/etc/nginx/sites-available/中的fastcgi_pass配置
檢查: - 用戶權限 - 防火墻設置 - MySQL綁定地址
工具推薦:
top
htop
nginx -T # 查看完整配置
mysqladmin proc stat
關鍵日志位置: - Nginx訪問日志:/var/log/nginx/access.log - Nginx錯誤日志:/var/log/nginx/error.log - PHP-FPM日志:/var/log/php8.1-fpm.log - MySQL日志:/var/log/mysql/error.log
數據庫備份:
mysqldump -u root -p --all-databases > full_backup.sql
網站文件備份:
tar -czvf website_backup.tar.gz /var/www/
通過本文的詳細步驟,您已經成功搭建了一個完整的LNMP環境。建議進一步學習: - Nginx高級配置(負載均衡、緩存等) - MySQL主從復制 - PHP框架(Laravel、Symfony等)部署 - 容器化部署(Docker)
定期更新系統組件以保證安全:
sudo apt update && sudo apt upgrade -y
# 或
sudo yum update -y
遇到問題時,可查閱各組件官方文檔: - Nginx: https://nginx.org - MySQL: https://dev.mysql.com/doc/ - PHP: https://www.php.net/docs.php “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。