溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux如何安裝lnmp

發布時間:2022-01-22 09:54:49 來源:億速云 閱讀:177 作者:柒染 欄目:開發技術
# 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

安裝Nginx

通過包管理器安裝

Ubuntu/Debian

sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

CentOS/RHEL

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

安裝MySQL/MariaDB

MySQL安裝

Ubuntu/Debian

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

CentOS/RHEL

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

MariaDB安裝

# 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

安裝PHP

基礎安裝

PHP 8.2(推薦)

# 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

PHP-FPM配置

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

環境整合

Nginx與PHP聯動

創建虛擬主機配置:

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

測試PHP解析

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

數據庫安全

  1. 修改默認端口:
    
    -- MySQL/MariaDB
    SET GLOBAL port = 3307;
    
  2. 創建應用專用用戶:
    
    CREATE USER 'webapp'@'localhost' IDENTIFIED BY 'StrongPassword123!';
    GRANT ALL PRIVILEGES ON webdb.* TO 'webapp'@'localhost';
    FLUSH PRIVILEGES;
    

常見問題解決

502 Bad Gateway

可能原因及解決方案: 1. PHP-FPM未運行:

   sudo systemctl status php-fpm
  1. Socket路徑不匹配:

    # 檢查Nginx配置中的fastcgi_pass路徑
    fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    

MySQL連接問題

# 檢查用戶權限
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(如需遠程訪問)

性能優化建議

Nginx優化

# /etc/nginx/nginx.conf
worker_processes auto;
worker_connections 4096;
keepalive_timeout 65;
gzip on;

PHP-FPM優化

; /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

MySQL優化

# /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. 負載均衡配置方法

需要補充哪部分內容可以告訴我,我可以繼續擴展完善。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女