在 CentOS 上搭建 LNMP 网站的实操指南
一 环境准备与版本建议
二 安装与配置 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
sudo vim /etc/nginx/conf.d/default.confserver {
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;
}
}
sudo nginx -t && sudo systemctl reload nginx
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
三 安装与配置 MariaDB/MySQL
sudo yum install -y mariadb-server mariadb
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo mysql_secure_installation
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;
四 安装与配置 PHP 与 PHP-FPM
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
/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 nginxmysql -u your_user -p your_db < your_data.sql
sudo yum install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your_domain.com -d www.your_domain.com