温馨提示×

如何使用LNMP进行网站开发

小樊
45
2025-10-03 08:05:56
栏目: 云计算

一、LNMP环境搭建(开发基础)
LNMP(Linux+Nginx+MySQL+PHP)是动态网站开发的主流环境,搭建步骤如下:

1. 准备工作

选择稳定的Linux发行版(如Ubuntu 22.04 LTS、CentOS Stream 9),确保服务器具备公网IP或本地可访问。安装前更新系统软件包以修复漏洞:

sudo apt update && sudo apt upgrade -y  # Ubuntu/Debian
# 或
sudo yum update -y                      # CentOS/RHEL

关闭防火墙(测试阶段可选,生产环境需配置放行规则):

sudo ufw disable                        # Ubuntu(UFW)
# 或
sudo systemctl stop firewalld             # CentOS(Firewalld)

禁用SELinux(若启用,需修改/etc/selinux/config中的SELINUX=disabled并重启)。

2. 安装Nginx(Web服务器)

使用包管理器快速安装Nginx,启动服务并设置开机自启:

sudo apt install nginx -y               # Ubuntu/Debian
sudo systemctl start nginx
sudo systemctl enable nginx

验证安装:浏览器访问服务器IP,若看到Nginx欢迎页面则说明成功。

3. 安装MySQL(数据库)

安装MySQL服务器,运行安全脚本强化配置(设置root密码、移除匿名用户、禁止root远程登录):

sudo apt install mysql-server -y        # Ubuntu/Debian
sudo systemctl start mysql
sudo mysql_secure_installation          # 按提示操作

登录MySQL验证:

sudo mysql -u root -p                   # 输入设置的root密码

创建数据库和用户(用于网站数据存储):

CREATE DATABASE your_database;          -- 创建数据库
CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password'; -- 创建用户
GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'localhost'; -- 授权
FLUSH PRIVILEGES;                       -- 刷新权限
EXIT;                                   -- 退出
```。  

### 4. 安装PHP及扩展(脚本语言)  
安装PHP核心、MySQL扩展和PHP-FPM(FastCGI进程管理器),确保PHP能与Nginx通信:  
```bash
sudo apt install php-fpm php-mysql php-gd php-mbstring -y  # Ubuntu/Debian(常用扩展)
sudo systemctl start php7.4-fpm         # 启动PHP-FPM(版本根据实际调整)
sudo systemctl enable php7.4-fpm

配置PHP-FPM监听方式(修改/etc/php/7.4/fpm/pool.d/www.conf,取消listen行的注释,默认使用Unix socket):

listen = /var/run/php/php7.4-fpm.sock

重启PHP-FPM使配置生效:

sudo systemctl restart php7.4-fpm
```。  

### 5. 配置Nginx支持PHP  
编辑Nginx默认站点配置文件(`/etc/nginx/sites-available/default`),添加PHP处理逻辑:  
```nginx
server {
    listen 80;
    server_name your_domain_or_IP;        # 替换为域名或IP
    root /var/www/html;                   # 网站根目录
    index index.php index.html index.htm; # 默认索引文件

    location / {
        try_files $uri $uri/ =404;        # 尝试访问文件,不存在则返回404
    }

    location ~ \.php$ {                   # 处理PHP文件
        include snippets/fastcgi-php.conf; # 包含FastCGI配置
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 传递给PHP-FPM
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 脚本路径
        include fastcgi_params;           # 包含通用FastCGI参数
    }

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

测试Nginx配置语法(避免重启失败):

sudo nginx -t

重启Nginx应用配置:

sudo systemctl restart nginx
```。  

### 6. 验证LNMP环境  
在网站根目录创建`info.php`测试文件,查看PHP信息:  
```bash
sudo nano /var/www/html/info.php

输入以下内容并保存:

<?php phpinfo(); ?>

浏览器访问http://your_domain_or_IP/info.php,若显示PHP信息页面(包含版本、模块等),则LNMP环境搭建成功。

二、网站开发流程
环境搭建完成后,可开始网站开发,以下是具体步骤:

1. 上传网站文件

将本地开发的网站文件(如WordPress、自定义项目)上传至Nginx根目录(默认/var/www/html),可使用FTP工具(如FileZilla)、SCP命令或Git:

scp -r /local/website/path/* user@your_server_ip:/var/www/html/  # SCP上传

修改目录权限,确保Nginx用户(通常为www-data)有读写权限:

sudo chown -R www-data:www-data /var/www/html  # 递归修改所有者
sudo chmod -R 755 /var/www/html                # 设置目录权限
```。  

### 2. 创建数据库与配置  
登录MySQL,创建网站专用数据库和用户(避免使用root账户):  
```bash
mysql -u root -p

执行SQL语句:

CREATE DATABASE your_website_db;          -- 创建数据库
CREATE USER 'your_website_user'@'localhost' IDENTIFIED BY 'StrongPassword123'; -- 创建用户
GRANT ALL PRIVILEGES ON your_website_db.* TO 'your_website_user'@'localhost'; -- 授权
FLUSH PRIVILEGES;                         -- 刷新权限
EXIT;

修改网站配置文件(如WordPress的wp-config.php),填入数据库信息:

define('DB_NAME', 'your_website_db');     // 数据库名
define('DB_USER', 'your_website_user');   // 数据库用户
define('DB_PASSWORD', 'StrongPassword123'); // 数据库密码
define('DB_HOST', 'localhost');           // 数据库主机
```。  

### 3. 开发与调试  
- **动态功能实现**:使用PHP连接MySQL,编写业务逻辑(如用户注册、商品展示)。示例代码(连接数据库并查询产品表):  
  ```php
  <?php
  $servername = "localhost";
  $username = "your_website_user";
  $password = "StrongPassword123";
  $dbname = "your_website_db";

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

  // 检查连接
  if ($conn->connect_error) {
      die("连接失败: " . $conn->connect_error);
  }

  // 查询数据
  $sql = "SELECT id, name, price FROM products";
  $result = $conn->query($sql);

  if ($result->num_rows > 0) {
      while($row = $result->fetch_assoc()) {
          echo "ID: " . $row["id"]. " - 名称: " . $row["name"]. " - 价格: $" . $row["price"]. "<br>";
      }
  } else {
      echo "暂无产品";
  }
  $conn->close();
  ?>
  • 调试技巧:开启PHP错误显示(仅开发环境使用,生产环境关闭),修改php.ini
    display_errors = On
    error_reporting = E_ALL
    
    或在PHP文件顶部添加:
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    ```。  
    
    

4. 部署与优化

  • 域名绑定:将域名解析到服务器IP(DNS设置中添加A记录),修改Nginx配置中的server_name为域名。
  • HTTPS配置:使用Let’s Encrypt免费SSL证书,启用HTTPS(提升安全性):
    sudo apt install certbot python3-certbot-nginx -y  # Ubuntu/Debian
    sudo certbot --nginx -d your_domain.com -d www.your_domain.com  # 自动配置SSL
    
  • 性能优化:开启Nginx gzip压缩、PHP OPcache、MySQL查询缓存,调整Nginx worker进程数(根据服务器CPU核心数)。

三、常见问题排查

  • Nginx无法启动:检查80端口是否被占用(sudo netstat -tuln | grep 80),或配置文件语法错误(sudo nginx -t)。
  • PHP文件无法解析:确认PHP-FPM服务运行(sudo systemctl status php7.4-fpm),检查Nginx配置中的fastcgi_pass路径是否与PHP-FPM的listen路径一致。
  • MySQL连接失败:确保MySQL服务运行(sudo systemctl status mysql),检查用户权限(mysql -u root -p中执行SHOW GRANTS FOR 'your_user'@'localhost';)。

0