title: hexo部署到云服务器
- 云服务器部署
1.查看本文章的前提是已经在本地搭建好了hexo框架的博客
2.服务器系统centOS7.6(华为云)
服务器环境搭建
1.安装执行命令如下
yum -y install nginx
2.配置服务器路由
systemctl start nginx systemctl enable nginx
此时用公网ip访问即可看到一个欢迎页面,欢迎页面可能是“Welcome to nginx”也可能是“Welcome to centos”,欢迎页面的字样取决于nginx版本和下载方式的不同,只要能正常显示一个欢迎页面就好
为了让我们的nginx服务器指向我们的博客而不是指向默认的欢迎页面
那么就需要我们更改nginx的配置。
关于nginx的配置文件共两种情况:
1.首先是位于etc/nginx/conf.d/下的dafault.conf
2.其次是有些云服务器比如我的华为云配置文件是etc/nginx/ 下的 nginx.conf 。
3.我们也可用nginx -t
命令查看我的配置文件所在
配置过程如下:
1.打开/etc/nginx/nginx.conf文件
vi /etc/nginx/nginx.conf 按照注释修改 include /etc/nginx/conf.d/*.conf; server { listen 80; listen [::]:80; server_name _; root /home/www/website; include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /404.html { }
:wq保存
2.在刚才我们自己写的nginx.conf配置文件中root的路径相应路径建立博客的目录:
cd /home mkdir www cd /www mkdir website
这样我们就可以得到 /home/www/website 作为博客的根路径,就和配置文件中的路径对应上了。
3.在root用户下设置www的权限
chmod -R 777 ./www
为了让nginx能够访问我的作为博客目录的www文件夹需要在root设置权限并且添加递归参数R
安装Git 以及Node.js
Node.js众多安装方式的一种
curl -sL https://rpm.nodesource.com/setup_10.x | bash - yum install -y nodejs
安装完成后执行 node -v 和 npm -v 如果打印版本号则安装成功
此部分的主要目的是让我们的个人电脑可以通过ssh的方式连接到云服务器,然后通过命令将博客部署到服务器上。
1.安装git:
yum install git
2.配置git用户;
adduser git
3.修改用户权限:
chmod 740 /etc/sudoers vi /etc/sudoers
4.在root ALL=(ALL) ALL下添加
git ALL=(ALL) AL
5.保存退出后 将sudoers文件权限改回原样
chmod 400 /etc/sudoers
6.设置git用户的密码
sudo passwd git
7.切换到git用户,然后在~根目录下创建.ssh文件夹
su git cd ~ mkdir .ssh cd .ssh
8.生成公钥密钥文件
ssh-keygen
此时在目录下就会有两个文件,分别是:id_rsa 和 id_rsa.pub
其中 id_rsa.pub 就是公钥文件 我们复制一份
cp id_rsa.pub authorized_keys
这样目录下就会有一个authorized_keys文件,它和id_rsa.pub一模一样。
9.修改authorized_keys文件权限
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
10.然后_我们在自己的电脑上_打开终端,使用ssh方式连接我们的云服务器。
ssh -v 用户名@服务器公网ip 在本例中为:ssh -v git@服务器公网ip
输入用户git的密码后,最后提示Welcome to XXX Compute Service ! 即为登陆成功!!!!
11.现在我们要创建一个git的仓库(创建仓库的过程要在git用户下进行),并且新建一个post-receive文件,操作如下:
cd ~ git init --bare blog.git vi ~/blog.git/hooks/post-receive
12.输入以下内容:
git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f
13.保存退出并授予该文件可执行权限
在root用户下cd /home/git/
执行
chmod +x /home/git/blog.git/hooks/post-receive
解释一下12的目的:我们在本地博客的根目录下通过
hexo generate -deploy
完成对本地博客文件的解析,并且部署到云服务器的/home/git/blog.git目录下,最后然后通过git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f
将本地上传上来的文章解析到我们的博客目录/home/www/website。
本地配置_config.yml完成部署
hexo的目录下(博客的根目录),找到_config.yml,打开它。
找到deploy 做如下配置:
deploy: type: git repo: git@这里改为服务器公网IP:/home/git/blog.git branch: master
在服务器上重新运行nginx服务器:
nginx -s reload
本地终端执行:
hexo clean && hexo g && hexo d
最后打开公网ip或者域名!!!
踩坑补充
1.部署git厂库整个过程一定要git用户下实现。
2.如果在本地 hexo d指令能执行成功,/home/www/wesite 没有文件,可以直接执行
git –work-tree=/home/www/website –git-dir=/home/git/blog.git checkout -f
命令,看看/home/www/wesite会不会生成文件
3.如果hexo d和ssh -v 用户名@公网IP,无法连接首先排查密钥是否复制并且赋予权限,其次可能是服务器系统重新安装过,并且之前在本地使用ssh -v 用户名@公网IP成功连接过,导致本地缓存的是服务器系统重装之前的密钥,可以通过在本地终端输入:“ssh-keygen -R "你的远程服务器ip地址
”,清除本地关于服务器公网ip的缓存。