Hexo博客部署到云服务器

个人博客部署到阿里云服务器的具体步骤以及问题解决

Hexo部署到阿里云

服务器部署git

  1. 安装依赖库
1
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 
  1. 安装编译工具
1
yum install gcc perl-ExtUtils-MakeMaker package
  1. 查看git版本
    git --version
  2. 删除并安装解压最新版
1
2
3
4
5
6
7
8
9
10
yum remove git -y
cd /usr/local/src #下载的目录
wget https://www.kernel.org/pub/software/scm/git/git-2.28.0.tar.gz #下载最新版
tar -zxvf git-2.28.0.tar.gz #解压到当前文件夹
cd git-2.28.0 #进入文件夹
make prefix=/usr/local/git all #编译源码
make prefix=/usr/local/git install #安装路径
echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc # 配置git环境变量
source /etc/bashrc
git --version
  1. 创建git用户并修改权限
1
2
3
4
5
6
7
adduser casea 
passwd casea
chmod 740 /etc/sudoers
vim /etc/sudoers

root ALL=(ALL) ALL
casea ALL=(ALL) ALL
  1. 将本地创建的id_rsa.pub文件密钥复制

    id_rsa.pub文件由ssh-keygen生成。

1
2
3
4
su casea
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
# 将密钥粘贴
  1. 本地测试
1
ssh -v casea@服务器ip

网站配置

  1. 创建网站目录并设置权限
1
2
3
su root
mkdir /home/hexo
chown casea:casea -R /home/hexo
  1. 安装nginx
1
2
yum install -y nginx
systemctl start nginx.service #启动服务
  1. 修改Nginx配置文件
1
2
3
4
5
6
7
8
9
10
vim /etc/nginx/nginx.conf 

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name xxx.xx; #域名
root /home/hexo; #网站目录
4. 重启服务器
​```bash
systemctl restart nginx.service
  1. 建立git仓库
1
2
3
4
su root
cd /home/casea
git init --bare blog.git
chown casea:casea -R blog.git
  1. 同步网站根目录
1
2
3
4
vim blog.git/hooks/post-receive

#!/bin/sh
git --work-tree=/home/hexo --git-dir=/home/casea/blog.git checkout -f
  1. 修改权限
1
chmod +x /home/fuchen/blog.git/hooks/post-receive
  1. 在windows10本地hexo目录修改_config.yml文件
1
2
3
4
5
deploy:
type: git
repository: casea@101.xxx.xxx.xxx:/home/casea/blog.git #用户名@服务器Ip:git仓库位置
branch: master
# 同时修改url和root,注释掉即可
  1. 本机gitbash部署
1
2
hexo clean
hexo g -d

SSL证书认证

  1. 阿里云申请免费的ssl证书

问题

  1. 部署成功也可以ping通,但网页无法访问
1
2
3
4
5
6
7
# 此问题是服务器防火墙的问题,关闭即可使用
systemctl stop firewalld.service # 关闭防火墙
firewall-cmd --state # 查看防火墙状态
systemctl disable firewalld.service # 禁止开机启动防火墙
systemctl unmask firewalld.service
systemctl start firewalld.service # 开启网络防火墙