在VPS上部署带数据库的网站的完整流程

2025.7.18 杂七杂八 531
33BLOG智能摘要
作者分享在VPS上部署个人博客的全过程。首先选择1核1G内存的VPS套餐,进行系统更新并创建新用户deployer。环境搭建使用LNMP组合,通过Oneinstack一键安装,注意MySQL 8.0的兼容性和PHP版本选择。数据库配置中创建专用用户blog_user并仅限localhost访问,强调安全性的重要性。Nginx配置重点包括监听80端口、设置根目录及优化PHP处理速度。最后进行基础安全设置,包括配置防火墙ufw、安装fail2ban和设置自动备份。整个部署历时两天,作者认为手动部署能学到更多底层知识,并计划下次尝试使用Docker部署。
— 此摘要由33BLOG基于AI分析文章内容生成,仅供参考。

从零开始:我的VPS网站部署踩坑全记录(含数据库配置)

在VPS上部署带数据库的网站的完整流程

大家好,今天想分享下上周我在新买的VPS上部署个人博客的全过程。作为一个习惯用现成云服务的前端开发,这次自己折腾服务器真是踩了不少坑,不过最终成功部署的感觉特别爽!

1. 前期准备:选购VPS和基础配置

我选择了某云服务商最便宜的套餐(1核1G内存),毕竟个人博客访问量不大。拿到服务器后第一件事:

# 更新系统
sudo apt update && sudo apt upgrade -y

# 创建新用户(强烈建议别直接用root!)
adduser deployer
usermod -aG sudo deployer

这里有个小插曲:第一次配置SSH密钥时手滑把公钥输错了,结果把自己锁在服务器外面…最后还是通过控制台的救援模式解决的(尴尬)。

2. 环境搭建:LNMP全家桶

我选择Nginx+MySQL+PHP的组合,用Oneinstack一键安装:

wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz
tar xzf oneinstack-full.tar.gz
cd oneinstack
./install.sh

安装过程中有几个注意点:

  • MySQL 8.0默认的身份验证方式可能不兼容老程序
  • PHP版本要根据你的CMS需求选择(我用的WordPress需要7.4+)
  • 记得记下MySQL的root密码!(别问我怎么知道的)

3. 数据库配置:安全第一

安装完成后,我做了这些安全加固:

-- 创建专用数据库用户
CREATE DATABASE myblog;
CREATE USER 'blog_user'@'localhost' IDENTIFIED BY '复杂密码';
GRANT ALL PRIVILEGES ON myblog.* TO 'blog_user'@'localhost';
FLUSH PRIVILEGES;

⚠️ 血泪教训:曾经有次我把数据库用户权限设成了’%’,结果被爆破攻击…现在永远只用localhost!

4. 网站部署:Nginx配置技巧

我的Nginx配置关键部分:

server {
    listen 80;
    server_name myblog.com;
    root /data/www/myblog;
    
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    location ~ .php$ {
        fastcgi_pass unix:/dev/shm/php-cgi.sock;
        include fastcgi.conf;
    }
}

这里有个性能优化点:把PHP的sock文件放在/dev/shm内存目录,速度比普通磁盘快很多。

5. 最后的防线:基础安全设置

完成部署后别忘了:

  1. 配置ufw防火墙:sudo ufw allow 22,80,443
  2. 安装fail2ban防爆破
  3. 设置自动备份(我用crontab+rsync)

折腾了两天终于搞定,现在访问自己的博客感觉特别有成就感。虽然云服务很方便,但自己动手部署能学到更多底层知识。下次准备试试用Docker来部署,应该会更简单吧?

评论

  • 感谢分享!正准备自己搭个博客,这篇教程太及时了。

  • 楼主提到的MySQL权限问题真的血泪教训,我之前也被攻击过😭

  • 小白问下,这个配置1核1G够用吗?访问量大了会不会卡?

  • 用Docker确实会更方便,期待楼主的下篇教程!