【Linux服务器】基础服务实战部署|Nginx+MySQL+PHP+WordPress,让服务器真正可用

注:本文使用AI辅助写作

前言

一台Linux服务器,光系统干净、网络安全还不够,最终价值是跑业务、挂网站、提供服务

日常建站、搭博客、跑小程序后台,离不开三个核心组件:

  1. Nginx:负责接收浏览器访问、分发页面,承载静态网页;
  2. MySQL/MariaDB:负责存数据,文章、账号、配置全都放数据库;
  3. 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:

  1. 设置数据库root管理员密码;
  2. 删除匿名无用账号;
  3. 禁止root账号外网登录;
  4. 删除默认测试库;
  5. 刷新权限生效。

这一步做完,数据库基础安全就锁死了。

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个人博客

前面所有铺垫,就是为了这一步:搭一个真正能用的个人博客。

  1. 进入网站根目录;
  2. 下载官方源码;
  3. 解压覆盖;
  4. 修正权限;
  5. 浏览器可视化安装。
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,按页面提示填:数据库名、数据库账号、密码,一路下一步,博客就装好了。


全篇总结

  1. Nginx负责展示网页,先学会装、启停、建站点、改配置、排80端口访问问题;
  2. MariaDB负责存数据,必须做安全初始化,建站单独建库建用户,不用root裸奔;
  3. PHP负责动态功能,装好扩展、配好Nginx联动,就能跑博客程序;
  4. 整套LNMP搭完,你的服务器就从空主机,变成能建站、能写博客、能对外服务的成熟环境。
相关推荐
文静小土豆2 小时前
CPU 飙高 ≠ 服务器真的卡?
运维·服务器
xingyuzhisuan2 小时前
给4090服务器配电源:8卡并行需要多少瓦才稳定?
服务器·网络·云计算·gpu算力
M158227690552 小时前
三格电子串口服务器:串口设备快速联网解决方案
运维·服务器
风酥糖2 小时前
Android上部署Linux环境的方案总结对比
android·linux·运维
今夕资源网2 小时前
LANDrop 跨平台局域网文件传输工具 支持 iOS、Android、macOS、Windows、Linux、Android TV 等操作系统
android·linux·macos·跨平台·文件传输·局域网文件共享·局域网文件传输
飘忽不定的bug2 小时前
RK3588 linux+rtos(mcu)串口适配
linux·单片机·elasticsearch
chase。2 小时前
Ubuntu 22.04 解决 nvblox 编译依赖冲突:libgoogle-glog-dev 安装问题全记录
linux·运维·ubuntu
Joy T2 小时前
【Web3】NFT 元数据去中心化存储与智能合约集成实战
开发语言·web3·去中心化·区块链·php·智能合约·hardhat
123过去4 小时前
wordlists使用教程
linux·网络·测试工具·安全