手动搭建 LNMP 环境的完整流程手动搭建 LNMP 环境的完整流程

第一步:安装 Nginx

bash

# Ubuntu/Debian
sudo apt update
sudo apt install nginx -y

# CentOS/RHEL
sudo yum install epel-release -y
sudo yum install nginx -y

# 启动 Nginx
sudo systemctl start nginx
sudo systemctl enable nginx

第二步:安装 MySQL/MariaDB

bash

# Ubuntu/Debian
sudo apt install mysql-server -y

# CentOS/RHEL
sudo yum install mariadb-server -y

# 启动 MySQL
sudo systemctl start mysql
sudo systemctl enable mysql

# 安全配置(设置密码等)
sudo mysql_secure_installation

第三步:安装 PHP 和 PHP-FPM(关键!)

这是连接 Nginx 和 PHP 的桥梁:

bash

# Ubuntu/Debian
sudo apt install php-fpm php-mysql php-common php-cli php-curl php-json php-mbstring php-xml php-zip -y

# CentOS/RHEL
sudo yum install epel-release -y
sudo yum install php php-fpm php-mysqlnd php-common php-cli php-curl php-json php-mbstring php-xml php-zip -y

# 启动 PHP-FPM
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

第四步:配置 Nginx 连接 PHP-FPM(最关键的一步!)

现在要修改 Nginx 配置,告诉它遇到 PHP 文件时转发给 PHP-FPM:

nginx

# 编辑 Nginx 配置文件
sudo vim /etc/nginx/sites-available/example.com
# 或者
sudo vim /etc/nginx/conf.d/example.conf

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.php index.html;

    # 处理静态文件
    location / {
        try_files $uri $uri/ =404;
    }

    # 关键配置:处理 PHP 文件
    location ~ \.php$ {
        # 将 PHP 请求转发给 PHP-FPM
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;  # PHP-FPM 的 socket 文件
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 禁止访问隐藏文件
    location ~ /\. {
        deny all;
    }
}

第五步:测试 PHP 连接 MySQL

创建一个测试文件来验证所有组件是否正常工作:

php

<?php
// /var/www/html/test.php

// 测试 PHP 信息
phpinfo();

// 测试 MySQL 连接
$servername = "localhost";
$username = "root";
$password = "your_password";
$dbname = "test";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "成功连接到 MySQL 数据库!";

// 创建测试表
$sql = "CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
)";

if ($conn->query($sql) === TRUE) {
    echo "表创建成功!";
}

$conn->close();
?>

宝塔 vs 手动安装的对比

步骤宝塔面板手动安装
安装Nginx一键点击apt install nginx
安装MySQL一键点击apt install mysql-server + 安全配置
安装PHP一键点击apt install php php-fpm php-mysql + 一堆扩展
配置PHP-FPM自动配置手动编辑 /etc/php/8.1/fpm/pool.d/www.conf
Nginx连接PHP自动生成配置手动编辑 nginx 配置文件,写 location ~ \.php$ 块
创建网站填写域名即可手动创建目录、配置权限、写 server block
SSL证书一键申请手动安装 Certbot,配置证书
防火墙自动开放端口手动 ufw allow 80,443
进程管理自动监控手动 systemctl status 查看
数据库管理phpMyAdmin 一键安装手动下载配置 phpMyAdmin

手动配置常见问题

1. PHP-FPM 找不到

bash

# 检查 PHP-FPM 是否运行
sudo systemctl status php-fpm

# 查看 PHP-FPM 的 socket 文件位置
ls -la /var/run/php/

2. Nginx 返回 502 Bad Gateway

通常是 Nginx 无法连接到 PHP-FPM:

  • 检查 PHP-FPM 是否运行
  • 检查 nginx 配置中的 fastcgi_pass 路径是否正确
  • 查看错误日志:sudo tail -f /var/log/nginx/error.log

3. 权限问题

bash

# 确保 nginx 用户能读取网站文件
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

为什么宝塔这么流行?

因为手动搭建一个 LNMP 环境需要:

  1. 安装 4-5 个核心软件
  2. 配置 3-4 个配置文件
  3. 记住 十几个配置指令
  4. 解决 各种依赖和版本冲突
  5. 管理 进程和服务

而宝塔把这些都变成了:

  • ✅ 点一下安装
  • ✅ 可视化配置
  • ✅ 自动优化
  • ✅ 统一管理

一个形象的比喻

  • 宝塔面板:像宜家组装家具,图纸、工具、螺丝都给你配好,照着拼就行
  • 手动安装:像从木材开始自己做家具,要自己锯木头、做榫卯、上漆

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部