title: hexo博客部署到云服务器
date: 2019-4-19 23:13:00
tags: [云服务器,web部署]
categories: 搭建博客
最近买了一个搬瓦工的云服务器,想着国内访问github或者加载github资源稍慢,想着自己把博客搬到服务器上。中间遇到挺多坑,想着记录一下搭建的过程。
环境部署
本地环境:windows10(64位)
,hexo+git+Nodejs
服务器环境:Ubuntu14.04
,nginx+git
本地环境搭建
- 安装Git
- 安装Hexo
- 生成ssh公钥(这一步百度到处都有,生成过了就不用了)
- 命令行或者gitbash输入:
ssh-keygen -t rsa -C "[email protected]"
- 生成的文件在
~/.ssh
目录中id_rsa.pub
,这个之后要写入服务器中
- 命令行或者gitbash输入:
服务器环境搭建
-
安装git
- 因为Ubuntu自带git,我的已经是最新版本了,所以无需下载,如果安装的话,如果是最新版本也会提醒无需安装。
- 如果不是ubuntu可以
yum install git
-
创建git账户
adduser git chmod 740 /etc/sudoers vim /etc/sudoers
这里也很重要,因为创建git账户,后面很多命令必须在git下执行,否则会没有权限。
-
打开文件后找到
root ALL=(ALL) ALL
-
在后面添加
git ALL=(ALL) ALL
-
保存并退出,修改权限
chmod 400 /etc/sudoers
-
设置git账户密码
sudo passwd git
-
切换至git用户,创建
~/.ssh
文件和~/.ssh/authorized_keys
文件,并赋予相应的权限:su git mkdir ~/.ssh vim ~/.ssh/authorized_keys #这里把本地主机的id_rsa.pub中的内容粘贴到authorized_keys中 chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
Tip:这一步在git用户下进行很重要,因为后面部署到云服务器上的时候可能会permission denied。
-
在本地终端中测试是否能免密登陆git
ssh -v git@server_ip
-
创建目录
#repo作为git仓库目录 mkdir -R /var/repo #Hexo作为网站根目录 mkdir -R /var/www/hexo
Tip:这一步若是没有权限,可以在root下创建,之后修改权限(后面会说到)
-
配置nginx
apt-get install nginx
然后
vi /etc/nginx/sites-available
(不同Linux发行版会略微有差别,比如centos好像就是nginx.conf
文件):server { listen 80; # server_name 填写自己的域名 server_name www.xxx.com; # 这里root填写自己的网站根目录 root /var/www/hexo; index index.html index.php index.htm; #/usr/local/tomcat/webapps/Forum # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } location ~ .php$ { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
如果本地已经写过博客了的话,只是搬移到服务器,可以在
/etc/www/
下把代码clone下来,并改为hexo文件夹,现在你访问服务器ip就已经能够看到之前的博客界面啦~下面要做的就是用git自动化部署博客。
使用Git自动化部署博客
现在服务器上已经有了一个nginx的web环境,也有了静态页面的目录,但是要实现本地发布博客需要利用git,但是用git每次pull,clone又会很麻烦,这里用到了
git-hooks
同步实现自动化部署。-
服务器建立裸库,这里要用
git
用户登录,确保git
拥有仓库所有权。su git cd /var/repo/ git init --bare blog.git
-
使用
git-hooks
同步网站根目录在这里我们使用
post-receive
这个脚本实现自动部署:vim /var/repo/blog.git/hooks/post-receive #写入 #!/bin/sh git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f
保存,接着
chmod +x post-receive
-
在本地的博客主目录下,配置
_config.yml
:找到deploy:
deploy: type: git repo: git@server_ip:/var/repo/blog.git branch: master
现在就完成啦~测试部署:
hexo generate && hexo deploy
Connection denied
在部署过程中,执行
hexo d
发现部署出错,什么权限不允许之类的,这里我们需要检查我们在上述的git操作部署是否使用了git
用户操作,若是没有,需要给相应的目录更改用户组
使用chown -R git:git /var/repo/
这条命令递归的将repo
目录及其子目录用户组设置为git
,同时chown -R git:git /var/www/hexo
,这样即可解决此类问题。域名注册解析
我用的是搬瓦工服务器,$49.99一年,用优惠码大概$46左右,配置也很不错,最重要的是无需备案~太爽了!还可以搭梯子(谨慎,容易被封IP)
-
但是用这个服务器的时候他为了安全,ssh端口号是随机的,因此最好自己改回22,然后重启reboot
,因为自动部署默认22端口,否则会造成一直连不上服务器的情况。
然后,我在namesilo上注册了一个.com域名,一年只要$8.99,配上优惠码还能再省$1,可以说很划算了,我的博客,接着配置域名解析,教程很多,附上我参考的解析教程–>域名解析
大功告成!!!这样博客就成功部署到云服务器上啦速度比GitHub快了很多