linux如何安装lnmp

发布时间:2022-01-22 09:54:49 作者:柒染
来源:亿速云 阅读:172
# 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. 负载均衡配置方法

需要补充哪部分内容可以告诉我,我可以继续扩展完善。

推荐阅读:
  1. lnmp安装配置
  2. 安装配置LNMP

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux lnmp

上一篇:nginx如何配置反向代理

下一篇:mysql如何修改内容

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》