- 部署到github或者部署到服务器上才能让别人也看到你的博客,而部署到github上的缺点是访问速度比较慢,而且.io不被百度认证。
- 原先的部署https://eliyser.github.io/,现在把博客部署到云服务器上,但也没有撤销在github上的托管,所以访问之前或者部署之后的地址都可以。
- 首先理解一下部署和托管都是怎么个流程
- 右边那个既可以是服务器也可以是github
- 左边我之前就已经在本地弄好了,包括安装node.js,hexo(e盘下的hexo2就是了),以及博客的初始美化和文章撰写。
- 接下来是服务器的环境搭建
服务器端
安装git
思路:在阿里云服务器上搭建git仓库,本地博客目录下运行hexo g -d生成静态文件,并提交到git仓库
yum install git
检查安装信息
git --version
创建git用户
adduser git chmod 740 /etc/sudoers //好像是开写权限 vim /etc/sudoers
找到以下内容
## Allow root to run any commands anywhere root ALL=(ALL) ALL
在下面添加一行
git ALL=(ALL) ALL
保存后退出改回权限
chmod 400 /etc/sudoers
设置git的密码
sudo passwd git
生成一对ssh认证密钥(这个应该是为了git push之类的时候免密吧)
su git cd /home/git mkdir /blog/.ssh cd blog/.ssh ssh-keygen -t rsa
- 下面是本地端的操作,主要是为了ssh连接远程服务器的时候可以免密
在本地生成公钥和密钥
ssh-keygen -t rsa //因为本地已经有了所以应该会提示已存在,那其实也可以直接跳过这一步
将本机生成的公钥发送到服务器上建立信任关系,目的是ssh连接的时候可以不输入密码
ssh-copy-id -i C:/Users/14103/.ssh/id_rsa.pub git@47.107.237.149
测试ssh远程登录是否成功,必须免密才算成功
ssh git@47.107.237.149
- 把上一步、上上一步的git换成root就可以实现ssh连接root用户免密了
- 然后回到服务端
新建git仓库
mkdir -p /home/git/blog/hexo.git #准备成为Git仓库 mkdir /home/git/blog/hexo #存储网站文件(文章啦渲染之类的) git init --bare /home/git/blog/hexo.git #设为git仓库,--bare代表这是裸库,裸库没有工作区,我们不会在裸库上进行操作,它只为共享而存在 cd /home/git/blog/hexo.git/hooks //进入该仓库 vim /home/git/blog/hexo.git/hooks/post-update.sample //配置post-update.sample
追加一行
git --work-tree=/home/git/blog/hexo --git-dir=/home/git/blog/hexo.git checkout -f
- 保存之后更改文件名为post-update
赋予可执行权限(这一步好像需要root用户,前面也是,有的需要root用户,那就切换用户再切换回来就是了,或者直接在命令前面加个sudo更好)
chmod +x post-update
安装Nginx
- nginx就是我们的web服务器了
首先进行服务端的系统更新,时间可能有点久
yum update -y
切换git用户,直接使用root用户是不符合安全规范的
su git
安装nginx
yum install nginx
修改配置文件
vim /etc/nginx/nginx.conf
- 有两个user,都要改成root
- server_name改成服务器ip地址
- root改成hexo网站文件存储路径
- location里面要不要加都随便
- 看到上面的默认端口是80了吧,我们来看看服务器上有没有这个端口,没有的话选择新建。PS:之前是直接把配置文件的默认端口改成服务器已有的22,但不知道为什么访问直接响应网页走丢
PS:下载nano
一种文本编辑器,其实用vim也一样
yum install nano //下载好之后直接 nano 文件名 //即可创建文件,然后Ctrl+O保存,Ctrl+X退出
修改了Nginx的配置文件nginx.conf后要重启Nginx:nginx -s reload出现错误:
nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)
- 执行其他命令:nginx或nginx -s stop也报错:
这是因为重启nginx后丢失nginx.pid,我们要先停止nginx,首先查询nginx的进程号
ps -ef | grep nginx
- 其中9011就是进程号了
从容停止nginx
kill -QUIT 9011
在重启之前,我们先检查一下刚才的修改是否正确
nginx -t -c /etc/nginx/nginx.conf
正确的话再执行
nginx -c /etc/nginx/nginx.conf
最后重启
nginx -s reload
- 浏览器输入ip地址:47.107.237.149
- 出现这个页面就算成功,不过我们刚才在location下配置类index.html,那个实际是我们自己写在/home/git/blog/hexo下面的一个代替此页面的网页,所以看到那个网页也算对
本地
C://用户/14103/.ssh下Git Bash
vim config
新建config文件并编辑
Host hexo #SSH主机配置的识别名,配置好后直接"ssh 识别名"即可快速连接 HostName 47.107.237.149 #SSH主机的地址 Port 22 #SSH主机端口 User git #用户,本例是Git IdentityFile ~/.ssh/id_rsa #私钥文件的存放地址,建议复制到~/.ssh下统一管理
然后修改E://hexo2/_config.yml
deploy: type: git #用户名 repo: git@hexo:/home/git/blog/hexo.git #Git仓库地址,:符号后为Git仓库服务器路径;hexo可以换成服务器ip地址 branch: master #分支,由于我们只用Git进行发布,master即可
进入E://hexe2,执行
hexo clean & hexo deploy -g //清除工作区加部署到git
浏览器访问
47.107.237.149:80
- 即可出现我的博客啦~