之前个人所有笔记都是放在语雀上,主要除了学生也没啥人看,后面接触多了感觉写写博客好像也蛮不错的。
陆陆续续也搭建过 WordPress 和 Hexo 再三权衡(拖了半年)最后还是选择了 Hexo,并将 Hexo 博客托管在了 GitHub 上并绑定了 yongz.icu 这个域名(现在不用了)。
但总所周知 GitHub 由于某些原因在国内访问速度极慢,hexo deploy 慢的一匹。最后还是下定决心买了阿里云服务器,然后将 Hexo 博客部署到云服务器上,顺便绑个新域名。
本文来自 koenli 大佬:https://www.koenli.com/bda2f0d3.html
服务器配置
CPU
内存
操作系统
Git
Web
2 核
2G
CentOS 7.6
yum install
宝塔
CPU/内存:由于 Hexo 是静态博客,不需要多高的配置,1 核 1G 都是随便带(访问量贼大当我没说)。
操作系统:这里我必须要吐槽,Ubuntu 为什么不行,我装了三遍都不行,最终认命装了 CentOS 7.3 就可以了(我敲)。
Git:大佬博客上写的是 Git 在 CentOS 上版本会很旧,我直接就用 yum 安装了一个,实际试下来,没啥问题。
Web:可自行安装 Nginx 或 Apache(不嫌麻烦的话),这里推荐使用宝塔
是因为其不仅可以方便的添加网站和开启 HTTPS,还支持对服务器进行资源监控,端口管理等功能,是一款能够有效提升运维效率的服务器管理软件(不是推广)。
Git 配置 创建 Git 用户并配置 sudo 权限
由于 Git 用户会涉及到 root 命令的使用,配置一下 sudo 权限(CentOS visudo 用的是 Vim,Ubuntu 用的是 Nano):
找到root ALL=(ALL) ALL
,在下面一行添加以下内容并保存退出:
1 2 root ALL=(ALL) ALL git ALL=(ALL) ALL
配置 SSH 密钥
在本地机器执行以下命令创建密钥,如果本地机器是 Windows 则在 Git Bash 中执行(可以不用,但是最好要用)。
注意:如果本地机器已有密钥,可跳过此步,无需重复创建~
生成的公钥文件,Windows 和 Linux 的位置有所不同:
Windows:c:/User/username/.ssh/id_rsa.pub
Linux:~/.ssh/id_rsa.pub
在服务器上执行如下命令,创建.ssh
目录和authorized_keys
文件,并修改文件权限(非常主要,权限问题会导致 SSH 连接失败):
1 2 3 4 5 6 7 8 9 10 11 12 13 # 切换至 git 用户,连同环境变量一起 su - git mkdir ~/.ssh # 这里其实不太建议用 echo ,建议是 vim ~/.ssh/authorized_keys,然后直接粘贴保存 echo "替换为id_rsa.pub文件的内容" > ~/.ssh/authorized_keys # 修改文件权限 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys # 切换回root用户 exit
测试从本地机器上是否可以通过 git 用户免密登录服务器:
创建网站根目录
注:
这里我是直接照搬大佬博客的路径(其实就是懒)。
此网站根目录对应 Web 软件的网站发布目录,可自定义。
1 2 mkdir -p /data/web/blog chown git:git -R /data/web/blog
初始化 Git 裸仓库并配置自动化部署
1 2 3 4 5 6 7 # 创建 git 目录 mkdir -p /data/git cd /data/git/ # 一定要加上 --bare 参数,将仓库设置为共享仓库 git init --bare blog.git chown git:git -R blog.git
此时在 Git 仓库目录(/data/git/blog.git
)下,有一个自动生成的 hooks
目录,在 hooks
目录下创建一个新的钩子 post-receive
,用于自动化部署:
1 vim /data/git/blog.git/hooks/post-receive
在文件中添加以下内容,根据实际情况修改工作树目录和 Git 目录:
1 2 3 # !/bin/bash # git --work-tree=<work-tree-dir> --git-dir=<git-dir> checkout -f git --work-tree=/data/web/blog --git-dir=/data/git/blog.git checkout -f
1 2 chown git:git /data/git/blog.git/hooks/post-receive chmod +x /data/git/blog.git/hooks/post-receive
安装并配置宝塔 安装宝塔
宝塔 Linux 面板是提升运维效率的服务器管理软件,支持一键 LAMP/LNMP/ 集群 / 监控 / 网站 / FTP / 数据库 / JAVA 等 100 多项服务器管理功能。
宝塔官网:https://www.bt.cn/new/index.html
由于此处我用的是 CentOS,安装命令如下(记得一定要是纯净系统):
1 cd /tmp ; yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
中间会让确认是否默认安装到 /www
目录下,输入 y
回车即可:
1 Do you want to install Bt-Panel to the /www directory now?(y/n):y
网络状况良好的情况下大概 3 分钟即可安装完成,安装成功会输出如下内容,其中包括面板的外网、内网访问地址和默认的用户名密码,这些信息也可通过之后再通过 /etc/init.d/bt default
命令查看:
1 2 3 4 5 6 7 8 9 10 11 12 13 ================================================================== Congratulations! Installed successfully! ================================================================== 外网面板地址: https://xxx.xxx.xxx.xxx:39893/f0621e2c 内网面板地址: https://172.19.10.62:39893/f0621e2c username: l8fxgpwg password: 62420ae9 If you cannot access the panel, release the following panel port [39893] in the security group 若无法访问面板,请检查防火墙/安全组是否有放行面板[39893]端口 注意:初始密码仅在首次登录面板前能正确获取,其它时间请通过 bt 5 命令修改密码 ================================================================== Time consumed: 3 Minute!
注:服务器端口记得开放。
配置宝塔 Linux 面板
通过浏览器访问面板地址,通过上述的默认用户名密码登录即可。
因为宝塔面板许多功能都依赖于官网,第一次登录后需要绑定宝塔账号,如果还没有宝塔账号可以点击 “登录” 按钮下方的 “未有账号,免费注册” 跳转到注册,如果已有宝塔账号则直接输入账号信息点击 “登录” 进行绑定。
在 “推荐安装套件” 窗口选择安装 LNMP (推荐),仅勾选安装 “Nginx”,安装方式选择 “极速安装”,最后点击 “一键安装”,等待安装完成(我已经装完了,用下大佬的图):
添加网站并按需配置 SSL 证书
填写网站相关信息后,点击 “提交”:
域名 :设置网站域名,如需填写多个域名,请换行填写,每行一个域名,默认为 80 端口。
根目录 :此处设置的根目录就是之前创建的网站根目录 /data/web/blog
,如果不是根据教程创建的,选择相应的目录即可。
先到 aliyun 上购买个免费证书,信息填写完后,大概十分钟就能发到邮箱:
到域名注册商根据服务器类型(此处为 Nginx)下载对应域名的 SSL 证书(以阿里云为例),其中.key
后缀的是密钥,.pem
后缀的是证书:
点击刚创建的网站 SSL 证书下的 “未部署” 字样,选择 “当前证书”,用文本编辑器完整复制粘贴密钥(KEY)和证书 (PEM 或 CRT 格式) 的内容到对应的文本框中,点击 “保存”并强制开始 HTTPS:
配置本地 Hexo
由于之前我是配置提交到 GitHub 上,选在需要修改提交到自己的服务器上,在博客根目录 _config.yml
中添加以下内容:
1 2 3 4 5 6 7 8 9 deploy: type: 'git' repo: git@xxx.xxx.xxx.xxx:/data/git/blog.git branch: master
1 hexo clean all && hexo g && hexo d
访问前需要在域名注册商配置域名解析,将域名解析到云服务器 IP 地址,如果是本地服务器也可通过配置 hosts 解析进行测试: