尝试通过ssh,在虚拟机系统为CentOS7上使用Nginx部署hexo,实现在物理机上用hexo的部署命令hexo d
实现一键部署更新。头一回搞,先在本地试试看,也是参考了网上各种教程资料,踩了各种坑,来写一篇至少对我来说是没有坑的,希望对看到的人也能有帮助吧。
ssh连接
这里使用的是finalshell,集成了sftp,传文件直接可视化界面拖就完事了。
首先左上打开连接管理,添加ssh连接,输入名称,虚拟机ip,用户名为root,密码为root密码,然后双击新建好的连接就可以连接并登录虚拟机的root账号了。
连上后如图:
nginx安装
这里选择是源码安装(直接yum安装也行,但装好后我没找到配置文件哈哈哈哈),首先去下载源码http://nginx.org/en/download.html,这里就选择稳定版1.18.0
下载好后通过finallshell底部的文件管理,拖到/root/目录中即可
进入/usr/local/目录,创建nginx文件夹并进入
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mkdir nginx
[root@localhost local]# cd nginx/
将源码压缩包解压到当前文件夹
[root@localhost nginx]# tar zxvf /root/nginx-1.18.0.tar.gz -C ./
当前目录中会出现一个解压好的文件夹nginx-1.18.0
预先安装额外的依赖
yum -y install pcre-devel
yum -y install openssl openssl-devel
最后编译安装nginx
cd nginx-1.18.0/
./configure
make && make install
这样nginx就安装完成了,可执行文件在/usr/local/nginx/sbin/nginx
执行以下命令nginx就启动了:
/usr/local/nginx/sbin/nginx
停止的命令:
/usr/local/nginx/sbin/nginx -s stop
修改配置文件后重新加载的命令:
/usr/local/nginx/sbin/nginx -s reload
配置文件的位置:
/usr/local/nginx/conf/nginx.conf
测试nginx
启动nginx
/usr/local/nginx/sbin/nginx
在物理机的浏览器上输入虚拟机的ip地址,发现无法跳不出来
网上资料查了一通,发现是防火墙的问题,那就配置防火墙80端口,并重启防火墙。
firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl restart firewalld.service
再次在物理机上访问,跳出如下网页,测试安装成功(yum安装的nginx这时候跳出来的会是CentOS的欢迎界面)
nginx配置
首先需要创建两个文件夹,并修改权限,一个放最终部署的网站,一个放git版本库。
mkdir -p /usr/share/hexo
chmod -R 755 /usr/share/hexo
mkdir -p /usr/share/blog
chmod -R 755 /usr/share/blog
打开nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
找到这儿
把location中的root改成/usr/share/hexo,保存退出
location / {
root /usr/share/hexo;
index index.html index.htm;
}
重启nginx
/usr/local/nginx/sbin/nginx -s reload
可以先在/usr/share/hexo
下随便写个html文件,然后在物理机上访问测试
然后来到放git版本库的目录
cd /usr/share/blog/
初始化一个git的bare仓库
git init --bare hexo.git
创建一个git hook将文件映射到最终最终部署到的地方/usr/share/hexo
vim /usr/share/blog/hexo.git/hooks/post-receive
编辑添加如下内容到post-receive
中,work-tree指向最终部署的地方,git-dir指向git版本库
#!/bin/bash
git --work-tree=/usr/share/hexo --git-dir=/usr/share/blog/hexo.git checkout -f
保存退出,给文件添加可执行权限
chmod +x /usr/share/blog/hexo.git/hooks/post-receive
然后虚拟机上的配置就差不多了
hexo配置
找个位置初始化一个hexo博客
打开hexo博客主目录下的配置文件_config.yml
拉到最下面做如下修改(单引号看改之前有没有给留着,留着就留着,没留着就不用加),message
应该可以不加吧,type
branch
都如下,主要是repo
为root@虚拟机ip:git版本库位置
,保存退出
deploy:
type: 'git'
repo: root@192.168.1.109:/usr/share/blog/hexo
branch: master
message: deploy
在当前位置打开命令行,生成静态网页并部署
hexo clean
hexo g
hexo d
在物理机上打开浏览器输入虚拟机ip即可看到部署上去的hexo博客了