1. 从零开始搭建个人博客的完整指南
上周帮朋友部署个人博客时,发现很多新手在搭建过程中都会遇到相似的困惑。今天我就把完整的搭建流程和域名解析的注意事项整理出来,特别适合刚接触服务器运维的开发者。整个过程涉及服务器选择、环境配置、域名管理和安全设置等多个环节,我会用最直白的方式讲解每个步骤。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础环境准备
2.1 服务器选购要点
国内主流云平台提供的轻量应用服务器就完全够用,1核2G配置跑WordPress这类博客系统毫无压力。重点注意:
- 地域选择离目标用户近的机房(如用户主要在南方选广州)
- 系统镜像推荐CentOS 7.9或Ubuntu 20.04 LTS
- 务必在购买时设置好SSH密钥对
重要提示:新服务器开通后要立即修改默认端口,我通常改用5位数的非常用端口,能减少90%的暴力破解尝试。
2.2 基础服务安装
连接服务器后首先更新系统:
bash复制sudo apt update && sudo apt upgrade -y # Ubuntu
sudo yum update -y # CentOS
必备组件安装:
bash复制# Ubuntu示例
sudo apt install -y nginx mysql-server php-fpm php-mysql
# CentOS需额外启用EPEL仓库
sudo yum install -y epel-release
sudo yum install -y nginx mariadb-server php-fpm php-mysql
3. 博客程序部署
3.1 WordPress安装流程
- 创建数据库:
bash复制mysql -u root -p
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4;
GRANT ALL ON wordpress.* TO 'wpuser'@'localhost' IDENTIFIED BY '复杂密码';
FLUSH PRIVILEGES;
exit
- 下载并配置WordPress:
bash复制cd /tmp && wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
sudo mv wordpress /var/www/html/
sudo chown -R www-data:www-data /var/www/html/wordpress
- Nginx配置示例:
nginx复制server {
listen 80;
server_name yourdomain.com;
root /var/www/html/wordpress;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}
3.2 安全加固措施
- 限制PHP执行权限:
nginx复制location ~* /wp-content/uploads/.*\.php$ {
deny all;
}
- 安装Fail2Ban防爆破:
bash复制sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
4. 域名解析实战
4.1 DNS解析设置
以阿里云域名为例:
- 登录控制台进入域名解析
- 添加A记录:主机记录@和www,记录值填服务器IP
- TTL建议设为600秒(10分钟)
实测发现:国内解析生效通常5分钟内,国际解析可能需要24-48小时完全同步。
4.2 SSL证书配置
使用Let's Encrypt免费证书:
bash复制sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
自动续期测试:
bash复制sudo certbot renew --dry-run
5. 常见问题排查
5.1 502 Bad Gateway错误
检查方向:
- PHP-FPM是否运行:
bash复制systemctl status php7.4-fpm
- Nginx错误日志:
bash复制tail -f /var/log/nginx/error.log
5.2 数据库连接失败
确认:
- MySQL用户权限:
sql复制SHOW GRANTS FOR 'wpuser'@'localhost';
- wp-config.php中的配置项:
php复制define('DB_HOST', 'localhost:/var/run/mysqld/mysqld.sock');
6. 性能优化技巧
- 启用OPcache:
ini复制[opcache]
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
- Nginx缓存配置:
nginx复制location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
- 我用着最顺手的插件组合:
- WP Rocket缓存插件
- Smush图片压缩
- Wordfence安全防护
最后分享个真实案例:曾遇到客户域名解析始终不生效,折腾半天发现是本地DNS缓存问题。现在遇到类似情况,我都会让用户先执行:
bash复制ipconfig /flushdns # Windows
sudo dscacheutil -flushcache # Mac
