注:本文使用AI辅助写作
前言
一台Linux服务器,光系统干净、网络安全还不够,最终价值是跑业务、挂网站、提供服务 。
日常建站、搭博客、跑小程序后台,离不开三个核心组件:
- Nginx:负责接收浏览器访问、分发页面,承载静态网页;
- MySQL/MariaDB:负责存数据,文章、账号、配置全都放数据库;
- PHP:负责动态逻辑,比如博客登录、发表文章、读取数据库内容。
这一套组合就是行业通用的 LNMP架构,本篇从简单到复杂:先搭纯静态网页、再装数据库、最后拼PHP动态环境,全程解释每一步为什么要这么做、容易踩什么坑、报错该怎么排查。
第11章 静态网站部署:Nginx 快速上手
11.1 先搞懂:Nginx到底是干嘛的?
Nginx是目前全球最主流的网页服务软件,轻量、稳定、抗高并发。
简单理解:
你把网页文件放到服务器某个文件夹,配置Nginx指向这个文件夹,别人在浏览器输你的服务器IP,Nginx就会把网页内容发给对方,实现外网访问你的页面。
静态网站=纯HTML/CSS/JS,不需要数据库、不需要PHP,打开速度快、部署最简单,适合练手。
11.2 Nginx 分系统安装说明
Ubuntu和CentOS安装命令不一样,不能混用:
- Ubuntu用
apt包管理器; - CentOS用
yum,还要先装epel扩展源才能搜到Nginx。
Ubuntu系统安装
bash
apt update -y
apt install nginx -y
先更新软件源,再安装,避免安装旧版本或依赖缺失。
CentOS / Rocky Linux 系统安装
bash
yum install epel-release -y
yum install nginx -y
epel是第三方扩展软件库,不加这个,yum默认搜不到Nginx安装包。
11.3 Nginx日常运维必懂操作
装完不是完事,你得会启停、会设开机自启,不然重启服务器服务就挂了:
- start:临时开启;
- stop:直接关闭,断开所有访问;
- restart:重启,改完配置必须用;
- reload:平滑重载,不打断正在访问的用户,生产环境优先用;
- enable:加入开机自启,断电重启自动跑起来。
bash
# 启动 Nginx
systemctl start nginx
# 停止 Nginx
systemctl stop nginx
# 重启 Nginx(改配置必用)
systemctl restart nginx
# 平滑重载配置(不中断用户访问)
systemctl reload nginx
# 设置开机自动运行
systemctl enable nginx
# 查看当前运行状态,看有没有报错
systemctl status nginx
11.4 新手必背:Nginx核心文件路径
很多人改错配置、找不到文件,就是记不住路径:
-
网页存放目录:网站文件就放这里;
-
主配置文件:全局参数;
-
conf.d目录:专门放单个网站的配置,方便管理,后期多站点就靠它。
Ubuntu 默认网页根目录
/var/www/html
CentOS 默认网页根目录
/usr/share/nginx/html
Nginx 全局主配置
/etc/nginx/nginx.conf
推荐:单独站点配置统一放这里
/etc/nginx/conf.d/
11.5 从零搭建自己的第一个静态站点
第一步:专门建一个独立网站文件夹
不要直接改默认目录,后期多网站会乱,单独建目录方便管理、备份、权限隔离。
bash
mkdir -p /var/www/myblog/html
-p代表自动创建多级文件夹,一次建好站点根目录。
第二步:写一个自定义测试页面
自己写简单HTML,方便后面验证访问是否成功:
bash
vim /var/www/myblog/html/index.html
写入简单内容:
html
<h1>我的第一个Linux静态网站</h1>
<p>部署Nginx成功!公网IP直接就能打开页面</p>
第三步:修正目录权限(解决403禁止访问)
Nginx运行有专属账号,文件夹权限不对,浏览器就报403,打不开页面:
bash
# Ubuntu 专属运行用户
chown -R www-data:www-data /var/www/myblog
# CentOS 专属运行用户
chown -R nginx:nginx /var/www/myblog
# 目录基础可读权限
chmod -R 755 /var/www/myblog
第四步:新建独立站点配置文件
推荐所有新网站都放到/etc/nginx/conf.d/里,不乱改主配置:
bash
vim /etc/nginx/conf.d/myblog.conf
写入标准配置,把IP换成你自己服务器公网IP:
nginx
server {
listen 80;
server_name 你的服务器公网IP;
root /var/www/myblog/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
解释关键行:
- listen 80:监听网页默认80端口;
- root:指定网页文件存放路径;
- index:默认打开首页文件名。
第五步:检查配置有没有写错
配置写错直接启动失败,一定要校验:
bash
nginx -t
看到 test is successful 才说明没问题。
第六步:重载Nginx生效
bash
systemctl reload nginx
第七步:浏览器直接访问
打开浏览器输入:
http://你的服务器公网IP
能看到自己写的文字,静态网站就彻底部署完成。
11.6 新手高频报错详细排查
问题1:浏览器打不开、一直转圈
99%是防火墙或云服务器安全组没放行80端口:
bash
# Ubuntu放行
ufw allow 80/tcp
ufw reload
# CentOS放行
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
同时必须去阿里云/腾讯云后台,安全组添加80端口放行,两层防护缺一不可。
问题2:Nginx启动失败
用命令看详细报错:
bash
nginx -t
journalctl -u nginx
常见原因:括号少、分号漏写、路径写错、80端口被其他软件占用。
问题3:80端口被占用
查是谁占了端口:
bash
netstat -tulpn | grep 80
第12章 数据库部署:MySQL/MariaDB 基础配置
12.1 为什么要装数据库?
静态网页只能写死内容,文章不能后台改、不能登录、不能存用户信息。
搭博客、论坛、小程序后台,必须用数据库存:账号密码、文章、评论、配置。
MariaDB是MySQL开源免费版,功能一模一样,个人建站首选。
12.2 分系统安装数据库
Ubuntu
bash
apt install mariadb-server mariadb-client -y
CentOS
bash
yum install mariadb-server mariadb -y
12.3 设置开机自启,保证长期稳定
装完先启动,再设开机自动跑:
bash
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb
12.4 数据库安全初始化(必做,不做有漏洞)
刚装的数据库是空密码、有匿名账号、允许随便访问,公网环境极度危险。
执行安全加固脚本:
bash
mysql_secure_installation
全程按提示选Y:
- 设置数据库root管理员密码;
- 删除匿名无用账号;
- 禁止root账号外网登录;
- 删除默认测试库;
- 刷新权限生效。
这一步做完,数据库基础安全就锁死了。
12.5 建站必备:手动建库、建用户、授权
后期装WordPress博客,都要提前建好专属数据库和账号:
登录数据库
bash
mysql -u root -p
输入刚才设置的root密码。
创建博客专用数据库
sql
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
utf8mb4支持emoji表情,适配现在所有博客内容。
创建专用普通用户
不要直接用root跑网站,权限太大不安全:
sql
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '自己设复杂密码';
给用户分配数据库全部权限
sql
GRANT ALL ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
12.6 关于远程连接的安全提醒
新手总想开外网连数据库,强烈不建议 :
数据库端口暴露公网,极易被暴力破解、拖库盗数据。
日常建站只用localhost本地连接就足够安全。
第13章 动态网站部署:LNMP架构基础(Nginx+MySQL+PHP)
13.1 搞懂LNMP是什么
- L:Linux系统;
- N:Nginx分发网页;
- M:MySQL存数据;
- P:PHP处理动态代码(登录、发帖、读数据库)。
搭完这套,就能装WordPress、Typecho、各种开源博客系统。
13.2 安装PHP及常用扩展
PHP原生功能不够,建站需要装配套扩展:图片处理、数据库连接、压缩、登录验证等。
Ubuntu安装
bash
apt install php php-fpm php-mysql php-cli php-json php-zip php-gd php-mbstring php-curl php-xml -y
CentOS安装
bash
yum install php php-fpm php-mysqlnd php-cli php-json php-zip php-gd php-mbstring php-curl -y
13.3 启动PHP服务并设自启
PHP-FPM是PHP进程管理工具,Nginx靠它解析PHP代码:
bash
systemctl start php-fpm
systemctl enable php-fpm
13.4 关键配置:让Nginx认识PHP
之前只能打开HTML,现在要让Nginx把PHP文件交给PHP-FPM处理:
修改站点配置:
bash
vim /etc/nginx/conf.d/myblog.conf
替换完整配置:
nginx
server {
listen 80;
server_name 你的服务器公网IP;
root /var/www/myblog/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
说明:Ubuntu是sock文件通信,CentOS是127.0.0.1:9000端口通信,别混用。
校验+重载:
bash
nginx -t
systemctl reload nginx
13.5 测试PHP环境是否正常
新建探针文件,验证PHP能不能正常运行:
bash
vim /var/www/myblog/html/info.php
写入:
php
<?php
phpinfo();
?>
浏览器访问:http://你的IP/info.php
能看到一大串PHP版本、扩展信息,说明动态环境彻底通了。
13.6 实战落地:完整部署WordPress个人博客
前面所有铺垫,就是为了这一步:搭一个真正能用的个人博客。
- 进入网站根目录;
- 下载官方源码;
- 解压覆盖;
- 修正权限;
- 浏览器可视化安装。
bash
cd /var/www/myblog/html
wget https://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz
mv wordpress/* .
rm -rf wordpress latest.tar.gz
# 修复权限
chown -R www-data:www-data /var/www/myblog
浏览器输服务器IP,按页面提示填:数据库名、数据库账号、密码,一路下一步,博客就装好了。
全篇总结
- Nginx负责展示网页,先学会装、启停、建站点、改配置、排80端口访问问题;
- MariaDB负责存数据,必须做安全初始化,建站单独建库建用户,不用root裸奔;
- PHP负责动态功能,装好扩展、配好Nginx联动,就能跑博客程序;
- 整套LNMP搭完,你的服务器就从空主机,变成能建站、能写博客、能对外服务的成熟环境。