个人博客搭建流程
搭建的前置准备
- 一台有公网IP地址的服务器
流程图示意如下:
个人博客搭建硬件准备软件准备服务准备服务器NginxApache域名和DNS解析WordPressMySQL
搭建的知识准备
当一个用户请求浏览一个网站时,简化过程如下:
发起请求DNS解析TCP握手服务器返回要访问的资源
所以当我们有了一个服务器后,要考虑的问题就有两个:
- 在用户想访问服务器上的一个网页资源时,我们如何使其在茫茫的网络大海中准确找到我们的服务器。
- 服务器如何实现返回用户所请求的网页资源。
做到了这两点,不考虑细节的实现问题,至少整个访问过程的逻辑就走通了。
第一点显然是个简单的问题,IP地址就是为了解决这个问题而生的。当然,现在一般的做法是使用域名,也就是常看到的xxx。xxx,加上如http、https这种网络协议,就成了URL。
第二点也不难,实际上,一种简单的实现方式就是在服务器上跑一个python脚本,python脚本监听某些端口下的资源访问请求,脚本循环运行,一旦监听到请求,就按一定规则返回请求的资源,用户得到资源文件后在自己的浏览器上解析,就完成了一次访问。这完全可行,可实在是太过简陋。不过我们都知道,这种基础的东西早就有成熟的服务了,它们就是Nginx和Apache。其中,Nginx是基于事件驱动,所有请求以事件的形式在一个线程中被处理,而Apache则是多线程的,每有一个请求都会为其多开一个线程。所以,Nginx更适合处理静态网站和高并发,而Apache则更适合处理动态网站和一些花里胡哨的效果,不过,一般来说Nginx和Apache会被同时使用。
搭建过程
注: 视为已经做好基础准备,只记录关键步骤
免密配置
ssh-keygen生成密钥对,公钥上传至服务器,文件名:authorized_keys
安装LNMP(Linux + Nginx + MySQL + PHP)
由于LNMP的组合极为常用,所以已经有整合好的安装脚本,按指示下载解压安装接口,参考连接如:https://lnmp.org/download.html
下载命令:wget https://soft.lnmp.com/lnmp/lnmp2.1.tar.gz -cO lnmp2.1.tar.gz
其中,-c为断点续传, -O为将输出输入到指定文件
解压命令:tar zxf lnmp2.1.tar.gz && cd lnmp2.1 && ./install.sh lnmp
其中,z表示对-gz压缩格式进行解压, x表示提取归档内容, f指定要操作的文件名
安装命令: cd lnmp2.1 && ./install.sh lnmp
安装过程中会出现很多选项,一路回车使用默认配置即可。
安装完成后默认路径
- Nginx 配置路径:
/usr/local/nginx/
- MySQL 数据路径:
/usr/local/mysql/
- PHP 配置路径:
/usr/local/php/
- 网站根目录:
/home/wwwroot/default/
Nginx配置
使用命令cat /usr/local/nginx/conf/nginx.conf
查看nginx配置文件
则网站根目录为/home/wwwroot/default
使用http://ip
即可访问网站示例
安装WordPress
WordPress是使用PHP语言开发的博客平台,也就是一个博客框架。
- 使用
wget https://cn.wordpress.org/latest-zh_CN.zip && unzip latest-zh_CN.zip -d /home/wwwroot
将wordpress安装包下载并解压 - 登录MySQL,创建wordpress表,创建完成后输入exit退出。
mysql -u root -p
MySQL > create database wordpress;
- 修改nginx配置文件,修改网站根目录为wordpress
nginx -t
检查是否有配置错误, 启动nginx进程时需要使用sudo权限。- 修改wordpress目录的权限
cd /home/wwwroot && chown -R www wordpress/ && chgrp -R www wordpress/
计划有变
试了半天一键安装脚本总是有各种问题,不如chatgpt,以下是chatgpt给出的过程。
以下是完整的步骤,用于在 Linux 系统(如 Ubuntu 20.04)上安装 MySQL、Nginx、PHP,并配置 WordPress 建站。
1. 更新系统软件包
bash复制代码sudo apt update
sudo apt upgrade -y
2. 安装 Nginx
安装并启动 Nginx:
bash复制代码sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
验证 Nginx 是否运行:
bash
复制代码
sudo systemctl status nginx
在浏览器访问 http://your_server_ip
,应该看到默认的 Nginx 页面。
3. 安装 MySQL
安装并启动 MySQL:
bash复制代码sudo apt install mysql-server -y
sudo systemctl start mysql
sudo systemctl enable mysql
为 MySQL 设置 root 密码和安全配置:
bash
复制代码
sudo mysql_secure_installation
进入 MySQL 创建数据库和用户:
bash
复制代码
sudo mysql -u root -p
在 MySQL Shell 中执行以下命令:
sql复制代码CREATE DATABASE wordpress_db;
CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
4. 安装 PHP
安装 PHP 及其常用扩展:
bash
复制代码
sudo apt install php-fpm php-mysql -y
确认 PHP 安装版本:
bash
复制代码
php --version
5. 下载并配置 WordPress
下载最新版本的 WordPress:
bash复制代码cd /tmp
curl -O https://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz
sudo mv wordpress /var/www/html/
配置 WordPress 文件夹的权限:
bash复制代码sudo chown -R www-data:www-data /var/www/html/wordpress
sudo chmod -R 755 /var/www/html/wordpress
复制默认配置文件并编辑:
bash复制代码cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
sudo nano /var/www/html/wordpress/wp-config.php
修改以下内容,替换为你的数据库信息:
php复制代码define('DB_NAME', 'wordpress_db');
define('DB_USER', 'wordpress_user');
define('DB_PASSWORD', 'secure_password');
define('DB_HOST', 'localhost');
6. 配置 Nginx 为 WordPress 提供服务
创建 Nginx 配置文件:
bash
复制代码
sudo nano /etc/nginx/sites-available/wordpress
添加以下内容:
nginx复制代码server {
listen 80;
server_name your_server_ip;
root /var/www/html/wordpress;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
启用配置并重新加载 Nginx:
bash复制代码sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
7. 访问 WordPress 网站
- 在浏览器访问
http://your_server_ip
。 - 按照页面提示完成 WordPress 设置,选择语言、创建管理员账号等。
8. 可选配置
安装 SSL 证书(Let’s Encrypt)
如果你有域名,可以用 Let’s Encrypt 添加 SSL:
bash复制代码sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain
证书安装成功后,Certbot 会自动更新 Nginx 配置。
验证网站运行状态
确保所有服务正常运行:
bash复制代码sudo systemctl status nginx
sudo systemctl status mysql
sudo systemctl status php7.4-fpm
完成后,你的 WordPress 网站应该已经可以正常运行。🎉
当你通过浏览器访问服务器的 IP 地址时,Nginx 会根据其配置文件来决定如何处理请求并将其导引到 WordPress。以下是详细的工作流程:
1. 接收到请求
当你访问 http://your_server_ip
:
- 浏览器发送一个 HTTP 请求到服务器的 IP 地址。
- Nginx 监听端口(默认是 80)并接收到该请求。
2. Nginx 查找对应的配置
Nginx 会检查其配置文件,尝试找到与请求匹配的 server
块。 在你的 wordpress
配置文件(位于 /etc/nginx/sites-enabled/wordpress
)中定义了如下内容:
nginx复制代码server {
listen 80;
server_name your_server_ip;
root /var/www/html/wordpress;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
关键字段解析:
listen 80
:Nginx 监听端口 80(HTTP 默认端口)。server_name your_server_ip
:指定匹配的请求域名(或 IP)。当请求 IP 与配置匹配时,这个server
块生效。root /var/www/html/wordpress
:设置站点的根目录。WordPress 的文件就在此目录中。index index.php ...
:指定默认首页文件,优先加载index.php
。
3. Nginx 路由逻辑
(1) /
路径的处理
浏览器请求 /
,进入如下块:
nginx复制代码location / {
try_files $uri $uri/ /index.php?$args;
}
try_files $uri
:尝试找到用户请求的静态文件。如果用户访问/image.jpg
,Nginx 会检查是否存在/var/www/html/wordpress/image.jpg
。$uri/
:尝试找到匹配的目录。/index.php?$args
:如果前两步都找不到,Nginx 会将请求转发给index.php
,并附带查询参数。
最终,WordPress 的 index.php
文件接管请求。
(2) .php
文件的处理
当请求被转发给 index.php
或其他 PHP 文件时:
nginx复制代码location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
- PHP 解析器:Nginx 将请求转发给 PHP-FPM(通过
fastcgi_pass
),PHP-FPM 处理动态内容并生成 HTML。 $document_root$fastcgi_script_name
:告诉 PHP-FPM 具体要执行的文件。
4. WordPress 处理请求
- WordPress 的核心文件
index.php
接收请求。 - WordPress 解析路径、查询数据库(通过 MySQL)并生成 HTML。
- 最终 HTML 响应被返回给 Nginx。
将整个 WordPress 网站迁移到另一台服务器涉及以下步骤,包括文件和数据库的转移、配置调整以及验证。以下是详细的迁移流程:
1. 准备工作
在源服务器:
- 确保网站运行正常,没有数据丢失或未备份的更新。
- 检查 WordPress 版本和插件,确保目标服务器也满足运行要求。
在目标服务器:
- 安装并配置 LEMP/LAMP 环境(Linux、Nginx/Apache、MySQL、PHP)。
- 为 WordPress 创建一个新的数据库。
2. 备份源服务器
(1) 备份 WordPress 文件
使用以下命令将 WordPress 文件打包:
bash
复制代码
tar -czvf wordpress-files.tar.gz /var/www/html/wordpress
此命令将 /var/www/html/wordpress
中的所有文件(主题、插件、上传文件等)压缩到 wordpress-files.tar.gz
。
将该文件复制到本地或目标服务器:
bash
复制代码
scp wordpress-files.tar.gz user@target_server_ip:/path/to/destination/
(2) 备份数据库
导出 WordPress 的 MySQL 数据库:
bash
复制代码
mysqldump -u root -p wordpress_db > wordpress_db.sql
将备份文件复制到目标服务器:
bash
复制代码
scp wordpress_db.sql user@target_server_ip:/path/to/destination/
3. 在目标服务器还原
(1) 解压 WordPress 文件
在目标服务器上,将压缩文件解压到目标目录(例如 /var/www/html/wordpress
):
bash
复制代码
tar -xzvf /path/to/destination/wordpress-files.tar.gz -C /var/www/html/
(2) 导入数据库
登录 MySQL 并创建一个新的数据库:
bash
复制代码
mysql -u root -p
在 MySQL 提示符下执行:
sql复制代码CREATE DATABASE wordpress_db;
EXIT;
导入数据库备份:
bash
复制代码
mysql -u root -p wordpress_db < /path/to/destination/wordpress_db.sql
4. 配置 WordPress
编辑 WordPress 的配置文件(/var/www/html/wordpress/wp-config.php
),修改数据库连接信息:
php复制代码define('DB_NAME', 'wordpress_db'); // 新数据库名称
define('DB_USER', 'root'); // 数据库用户名
define('DB_PASSWORD', 'your_password');// 数据库密码
define('DB_HOST', 'localhost'); // 数据库主机
5. 配置 Nginx 或 Apache
Nginx 配置
更新 Nginx 配置文件:
bash
复制代码
sudo nano /etc/nginx/sites-available/wordpress
确保 root
指向 /var/www/html/wordpress
:
nginx复制代码server {
listen 80;
server_name your_target_server_ip;
root /var/www/html/wordpress;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
启用配置并重启 Nginx:
bash复制代码sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
6. 检查和测试
- 修改主机文件(如有需要) 如果域名未解析到新服务器,可以通过修改本地
hosts
文件来测试:
bash
复制代码
sudo nano /etc/hosts
添加一行:
复制代码
your_target_server_ip yourdomain.com
- 测试站点 通过浏览器访问新服务器的 IP 或域名,确保网站正常运行。
- 更新 WordPress 配置(如需要) 如果域名或路径发生变化,登录 WordPress 后台更新:
- 设置 → 常规 → 修改 WordPress 地址和站点地址。
7. 额外步骤
- 权限设置:确保 WordPress 文件的权限正确:bash复制代码sudo chown -R www-data:www-data /var/www/html/wordpress
sudo chmod -R 755 /var/www/html/wordpress - 更新 DNS:将域名解析记录更新到新服务器的 IP 地址。
完成迁移
迁移完成后,确认所有功能正常,包括插件、主题和多媒体内容。如果发现问题,可以检查以下日志:
- Nginx 错误日志:
/var/log/nginx/error.log
- PHP 错误日志:
/var/log/php-fpm.log
- WordPress 调试日志(如启用):
wp-content/debug.log
发表回复