温馨提示×

如何利用centos lnmp搭建网站

小樊
36
2025-11-28 00:55:19
栏目: 云计算

在 CentOS 上搭建 LNMP 网站的实操指南

一 环境准备与版本建议

  • 操作系统建议:CentOS 7/8(示例使用 CentOS 7.6)。
  • 组件版本示例:Nginx 1.27.0MariaDB 10.11PHP 8.3.8(也可选择 MySQL 8.0)。
  • 准备事项:
    • 已创建并登录 Linux 云服务器/虚拟机,具备 sudo 权限。
    • 开放安全组/防火墙的 TCP 80/443 端口。
    • 域名解析已指向服务器 IP(准备上 HTTPS 时更方便)。

二 安装与配置 Nginx

  • 添加 Nginx 官方仓库并安装:
    • 创建仓库文件:sudo vi /etc/yum.repos.d/nginx.repo,写入:
      [nginx]
      name=nginx repo
      baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/
      gpgcheck=0
      enabled=1
      
    • 安装与启动:
      sudo yum install -y nginx
      sudo systemctl start nginx
      sudo systemctl enable nginx
      
  • 基本站点配置(取消 IPv6 监听,启用 PHP 解析):
    • 编辑:sudo vim /etc/nginx/conf.d/default.conf
    • 示例 server 块:
      server {
          listen 80;
          root /usr/share/nginx/html;
          server_name localhost;
          index index.php index.html index.htm;
      
          location / {
              try_files $uri $uri/ =404;
          }
      
          error_page 500 502 503 504 /50x.html;
          location = /50x.html {
              root /usr/share/nginx/html;
          }
      
          location ~ \.php$ {
              fastcgi_pass 127.0.0.1:9000;
              fastcgi_index index.php;
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include fastcgi_params;
          }
      }
      
    • 检查并重载 Nginx:
      sudo nginx -t && sudo systemctl reload nginx
      
  • 防火墙放行(如启用 firewalld):
    sudo firewall-cmd --permanent --zone=public --add-service=http
    sudo firewall-cmd --permanent --zone=public --add-service=https
    sudo firewall-cmd --reload
    
  • 访问测试:浏览器打开 http://服务器IP,应看到 Nginx 欢迎页。

三 安装与配置 MariaDB/MySQL

  • 安装 MariaDB(推荐):
    sudo yum install -y mariadb-server mariadb
    sudo systemctl start mariadb
    sudo systemctl enable mariadb
    sudo mysql_secure_installation
    
  • 如需安装 MySQL 8.0(官方 YUM 源):
    sudo yum install -y wget
    wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm
    sudo yum install -y mysql-community-server
    sudo systemctl start mysqld
    sudo systemctl enable mysqld
    # 查看初始密码
    sudo grep 'temporary password' /var/log/mysqld.log
    # 登录后修改密码(示例)
    mysql -u root -p
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword!';
    
  • 创建网站数据库与用户(示例):
    mysql -u root -p
    CREATE DATABASE your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'YourStrongPassword!';
    GRANT ALL PRIVILEGES ON your_db.* TO 'your_user'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;
    
  • 安全建议:仅本地访问数据库,远程访问需显式授权并限制来源 IP。

四 安装与配置 PHP 与 PHP-FPM

  • 安装 PHP 与常用扩展(示例为 PHP 8.3;如仓库无该版本,可改用 Remi 源或编译安装):
    sudo yum install -y php php-fpm php-mysqlnd php-gd php-xml php-mbstring
    sudo systemctl start php-fpm
    sudo systemctl enable php-fpm
    
  • 确认 PHP-FPM 监听方式(两种其一,保持与 Nginx 配置一致):
    • TCP 方式(已在 Nginx 示例中使用):监听 127.0.0.1:9000
    • Socket 方式(更常见):编辑 /etc/php-fpm.d/www.conf,将
      listen = 127.0.0.1:9000
      
      改为
      listen = /var/run/php-fpm/php-fpm.sock
      listen.owner = nginx
      listen.group = nginx
      listen.mode = 0660
      
      并在 Nginx 的 location ~ \.php$ 中改为:
      fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
      
  • 重载服务:
    sudo systemctl reload php-fpm
    sudo nginx -t && sudo systemctl reload nginx
    
  • 运行环境测试:
    echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php
    
    浏览器访问 http://服务器IP/info.php,应看到 PHP 信息页。

五 部署网站与上线

  • 部署代码与目录权限:
    sudo mkdir -p /var/www/your_site
    sudo chown -R nginx:nginx /var/www/your_site
    # 将站点文件上传至 /var/www/your_site
    
  • 新建虚拟主机配置(示例):
    sudo vim /etc/nginx/conf.d/your_site.conf
    
    内容示例:
    server {
        listen 80;
        server_name your_domain.com www.your_domain.com;
        root /var/www/your_site/public;
        index index.php index.html;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    
        location ~ \.php$ {
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass 127.0.0.1:9000;  # 或 unix:/var/run/php-fpm/php-fpm.sock;
        }
    
        location ~ /\.ht {
            deny all;
        }
    }
    
    重载 Nginx:sudo nginx -t && sudo systemctl reload nginx
  • 导入数据库(如有备份):
    mysql -u your_user -p your_db < your_data.sql
    
  • 上线与优化建议:
    • 配置 HTTPS/TLS:使用 Certbot 一键申请免费证书(Nginx 插件):
      sudo yum install -y certbot python3-certbot-nginx
      sudo certbot --nginx -d your_domain.com -d www.your_domain.com
      
    • 性能与安全:启用 OPcache、限制上传大小、关闭显示错误到浏览器、定期更新系统与组件、备份数据库与代码。

0