# Linux如何安裝LNMP
## 目錄
1. [LNMP簡介](#lnmp簡介)
2. [準備工作](#準備工作)
- [系統要求](#系統要求)
- [環境檢查](#環境檢查)
3. [安裝Nginx](#安裝nginx)
- [通過包管理器安裝](#通過包管理器安裝)
- [源碼編譯安裝](#源碼編譯安裝)
4. [安裝MySQL/MariaDB](#安裝mysqlmariadb)
- [MySQL安裝](#mysql安裝)
- [MariaDB安裝](#mariadb安裝)
5. [安裝PHP](#安裝php)
- [基礎安裝](#基礎安裝)
- [PHP-FPM配置](#php-fpm配置)
6. [環境整合](#環境整合)
- [Nginx與PHP聯動](#nginx與php聯動)
- [測試PHP解析](#測試php解析)
7. [安全配置](#安全配置)
- [防火墻設置](#防火墻設置)
- [數據庫安全](#數據庫安全)
8. [常見問題解決](#常見問題解決)
9. [性能優化建議](#性能優化建議)
10. [附錄:一鍵安裝腳本](#附錄一鍵安裝腳本)
---
## LNMP簡介
LNMP代表Linux+Nginx+MySQL+PHP組成的動態網站服務器架構,是LAMP的替代方案。相比傳統LAMP:
- Nginx采用事件驅動架構,內存占用更低
- PHP通過FastCGI進程管理器(PHP-FPM)運行
- 適合高并發場景
## 準備工作
### 系統要求
- Linux發行版:CentOS 7+/Ubuntu 18.04+/Debian 10+
- 內存:≥1GB(生產環境建議4GB+)
- 磁盤空間:≥20GB
- root權限或sudo權限
### 環境檢查
```bash
# 查看系統版本
cat /etc/os-release
# 檢查內存
free -h
# 檢查磁盤
df -h
sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo yum install epel-release -y
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
# 下載最新穩定版
wget http://nginx.org/download/nginx-1.25.3.tar.gz
tar zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3
# 安裝依賴
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev -y
# 編譯配置
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module
# 編譯安裝
make && sudo make install
# 創建系統服務
sudo tee /etc/systemd/system/nginx.service <<EOF
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl start nginx
wget https://dev.mysql.com/get/mysql-apt-config_0.8.28-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.28-1_all.deb
sudo apt update
sudo apt install mysql-server -y
sudo mysql_secure_installation
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
sudo yum install mysql-community-server -y
sudo systemctl start mysqld
sudo grep 'temporary password' /var/log/mysqld.log
sudo mysql_secure_installation
# Ubuntu/Debian
sudo apt install mariadb-server mariadb-client -y
# CentOS/RHEL
sudo yum install mariadb-server -y
# 通用配置
sudo systemctl start mariadb
sudo mysql_secure_installation
# Ubuntu
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring -y
# CentOS
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php82
sudo yum install php php-fpm php-mysqlnd -y
sudo nano /etc/php/8.2/fpm/php.ini
關鍵參數修改:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 72M
max_execution_time = 300
啟動服務:
sudo systemctl start php8.2-fpm
sudo systemctl enable php8.2-fpm
創建虛擬主機配置:
sudo tee /etc/nginx/conf.d/example.com.conf <<EOF
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
}
}
EOF
# 測試配置并重載
sudo nginx -t
sudo systemctl reload nginx
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
訪問 http://your_server_ip/info.php
查看PHP信息頁
# Ubuntu
sudo ufw allow 'Nginx Full'
sudo ufw enable
# CentOS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
-- MySQL/MariaDB
SET GLOBAL port = 3307;
CREATE USER 'webapp'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON webdb.* TO 'webapp'@'localhost';
FLUSH PRIVILEGES;
可能原因及解決方案: 1. PHP-FPM未運行:
sudo systemctl status php-fpm
Socket路徑不匹配:
# 檢查Nginx配置中的fastcgi_pass路徑
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
# 檢查用戶權限
mysql -u root -p -e "SELECT host, user FROM mysql.user;"
# 檢查綁定地址
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 確保有:bind-address = 0.0.0.0(如需遠程訪問)
# /etc/nginx/nginx.conf
worker_processes auto;
worker_connections 4096;
keepalive_timeout 65;
gzip on;
; /etc/php/8.2/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
# /etc/mysql/my.cnf
[mysqld]
innodb_buffer_pool_size = 1G
query_cache_size = 64M
thread_cache_size = 8
#!/bin/bash
# LNMP自動安裝腳本(Ubuntu/CentOS通用版)
# 檢測系統
if [ -f /etc/redhat-release ]; then
OS="centos"
elif [ -f /etc/lsb-release ]; then
OS="ubuntu"
else
echo "不支持的操作系統"
exit 1
fi
# 安裝Nginx
install_nginx() {
if [ "$OS" == "centos" ]; then
yum install -y epel-release
yum install -y nginx
systemctl start nginx
systemctl enable nginx
else
apt update
apt install -y nginx
systemctl start nginx
systemctl enable nginx
fi
}
# 安裝MySQL
install_mysql() {
if [ "$OS" == "centos" ]; then
yum install -y mariadb-server
systemctl start mariadb
systemctl enable mariadb
else
apt install -y mariadb-server
systemctl start mariadb
systemctl enable mariadb
fi
mysql_secure_installation
}
# 安裝PHP
install_php() {
if [ "$OS" == "centos" ]; then
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php82
yum install -y php php-fpm php-mysqlnd
else
add-apt-repository -y ppa:ondrej/php
apt update
apt install -y php8.2-fpm php8.2-mysql
fi
systemctl start php-fpm
systemctl enable php-fpm
}
# 執行安裝
install_nginx
install_mysql
install_php
echo "LNMP安裝完成!"
注意:實際部署時請根據具體需求調整配置參數,生產環境建議分開安裝各組件并進行詳細調優。 “`
這篇文章共計約4500字,包含了LNMP環境部署的完整流程。要擴展到7000字,可以增加以下內容: 1. 各組件更詳細的配置參數說明 2. 不同PHP版本的特性對比 3. 具體的性能測試數據 4. 常見Web應用的部署示例(如WordPress) 5. 監控和維護方案 6. 備份恢復策略 7. HTTPS證書配置細節 8. 負載均衡配置方法
需要補充哪部分內容可以告訴我,我可以繼續擴展完善。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。