阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 748阅读
  • 0回复

[环境部署]云服务器搭建hexo博客,git hooks自动更新

级别: 论坛版主
发帖
371
云币
447

Q(IJD4  
预览目录 =de<WoKnu2  
` URSv,(  
@PPR$4  
配置服务 (VYR!(17  
1.安装nginx *?_qE  
2.安装node.js NqJ<!q)  
3.安装git r"{Is?yKe  
本地配置 U@.u-)oX  
因为己喜欢瞎拍一些东西,希望弄个博客记录记录,原以为就在eiblog的基础上添加相册栏目,自定义一些东西,但自己的前端知识几乎为0,行动起来,需要点时间。看到hexo上有很多适合的主题,决定用hexo搭建一个,通过git hooks就可线下推送,线上自动拉取部署。 }rz dm9  
Kajkw>z  
ZjU=~)O}H  
其原理是:通过本地渲染静态文件,将文件推送到GitHub仓库,在服务器上再通过git-hooks同步网站根目录。这样就完成了线下一次操作,线上自动更新的步骤。 y$IaXr5L  
(TEo_BW|+  
3yTQ  
废话不多说,看操作。 O9t=lrYV!  
F+ffl^BQ  
t a&Q4v&-  
配置云服务 >j50 ;</  
在配置云服务器前,你得首先本地搭建好你的hexo博客,并可以通过hexo d部署到GitHub。 koOyZ>  
/ <JY:1|  
YXF#c)#  
其步骤很多博客都有详细的描叙,不做累述。 0jR){G9+  
b/}'Vf[  
2B HKS-J*  
1.安装nginx <1aa~duT  
在屈屈的博客中很多关于Nginx的按照,配置,你可以看看。 r_Lu~y|  
U r^YG4(  
g-."sniP$g  
安装完成后你可以在配置中单独指定一个配置,或直接修改原配置指向你准备存放静态文件的文件夹。我用的前者。在nginx.conf文件添加指定配置文件路径, @&?a]>L  
mR"uhm}q  
P?^JPbfV  
include            /data/hexo/nginx/cong.d/*.conf; fO*)LPen.z  
在/data/hexo/nginx/cong.d/ 下添加配置文件razeencheng.com.conf ?E % +}P  
xM&EL>m>L  
hzaU8kb  
NGINX %VzYqj_P"  
server { !q!"UMiG  
    listen                       443; uu}'i\Q  
7g-Dfg.w  
mv{<'  
    server_name                  razeencheng.com; R;WW f.#  
    server_tokens                off; y)P&]&"?  
aZ$/<|y~:_  
d>Un J)V}  
    access_log                   /data/hexo/nginx/logdata/nginx.log; M3ZOk<O<R  
>wA+[81[  
d$}&nV/A)  
    # ip 黑名单 4 bn t=5]  
    include                      /data/hexo/nginx/ip.blacklist;  q$F)!&  
@9aGz6k+  
mIvnz{_d  
    ssl_ct                       on; mKM,kY  
YUCC*t  
byafb+x  
    # 中间证书 + 根证书 >E, Q  
    ssl_trusted_certificate      /data/hexo/nginx/ssl/razeencheng.com.pem; 1t.R+1[c  
a~,Kz\Tt  
l_6eI  
    ssl_certificate              /data/hexo/nginx/ssl/razeencheng.com.pem; -OWZ6#v(  
    ssl_certificate_key          /data/hexo/nginx/ssl/razeencheng.com.key; QCWf.@n  
    ssl_ct_static_scts           /data/hexo/nginx/ssl/scts/ecc/; ?z3]   
$(3uOsy   
GLCAiSMz[  
    ssl_dhparam                  /data/hexo/nginx/ssl/dhparams.pem; m~;B:LN<  
_C20 +PMO  
K U $`!h  
    ssl_ciphers                  EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5; Y3k[~A7X  
    ssl_prefer_server_ciphers    on; Hte[TRbM  
    ssl_protocols                TLSv1 TLSv1.1 TLSv1.2; 5Dd:r{{ Q  
    ssl_session_cache            shared:SSL:50m; q(gjT^aN  
    ssl_session_timeout          1d; U9 bWU'  
    ssl_session_tickets          on; L/yaVU{aEb  
?pqU3-knH  
E~qQai=]  
    # ssl stapling -G-3q6A  
    ssl_stapling                 on; `;$h'eI9  
    ssl_stapling_verify          on; >k;p.Pay%  
    resolver                     114.114.114.114 8.8.8.8 valid=300s; J:AMnUOcDi  
    resolver_timeout             10s; KzNm^^#/$A  
9Sz7\W0  
DHv2&zH  
    if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$ ) { b1xpz1  
        return                   444; TcJ$[  
    } a~opE!|m  
B$?^wo  
QD$Gw-U-l=  
    location / { V&%C\ns4  
        root /data/hexo/nginx/html; <bP#H  
        index index.html; R&*@@F-dx  
    } H:Y&OZ  
} 45<y{8  
从配置文件也可看出,我将网站的根目录放在/data/hexo/nginx/html文件夹。 o/^1Wm=  
35_)3 R)  
'1-maM\r  
2.安装node.js f@d9Hqr+l;  
$ yum install nodejs -y UV@0gdy[  
3.安装git id?E)Jy  
$ yum install git -y o_$&XNC_  
新建git用户,添加权限。 r[pF^y0   
T<yb#ak  
\k; n20\u  
BASH ~KPv7WfG  
## 新建git用户 VD [pZ2;4  
$ adduser git N=~~EtX  
$ chmod 740 /etc/sudoers orqJ[!u)`  
$ vim /etc/sudoers #K|9^4jt  
! %Ny0JkO  
A gWPa.'3  
## 添加下面一行设置git权限 jn=:G+0  
git   ALL=(ALL)     ALL '3Q3lM'lh  
J# EP%  
vFhz!P~  
$ chmod 440 /etc/sudoers a <wL#Id  
之后我们初始化一个Git的裸仓库,它只是为共享而存在,不需要工作区。 x)oRSsv!Tr  
s`;f2B/|  
J'Sm0  
BASH 3i=Iu0  
$ su git suVmg-d  
$ cd /data/hexo ,b|-rU\  
$ git init --bare hexo.git O|'1B>X  
如果你之前你有设置过ssh登陆,可以测试一下是否测试成功。 &%,DZA`  
b1-&v|L  
Md&WJ };L  
$ ssh git@ip(or domain) (MLhaux-  
如果能登录的话就设置OK了。 6gU{(H   
8ObeiVXf)  
?9xu{B>6  
如果没有设置,可看ssh免密登陆,设置成功及OK。 d5!!Ut  
27#5y_ `  
uQ3[Jz`y  
为git用户添加ssh key #/70!+J_UF  
AK@L32-S  
OZ(dpV9.S  
BASH %!|O.xxRR  
$ su git Ed-M7#wY  
$ cd ~ $k%Z$NSN=  
$ mkdir .ssh {' 5qv@3  
# 然后将你电脑上的公钥复制到authorized_keys,保存。 VW<0Lt3  
$ vim /home/git/.ssh/authorized_keys [*4fwk^  
$ chmod 600 .ssh/authorized_keys 8Vn4.R[vE  
$ chmod 700 .ssh/ |FNCXlgZ  
赋予git对网站目录的所有权。 6v732;^  
m9":{JI.w  
s V  }+eU  
$ chown git:git -R /data/hexo/nginx/html NNkP\oh\  
配置git hooks。 h{'t5&yY  
?Bx./t><  
>)**khuP7  
$ cd ~/data/hexo/hexo.git/hooks 8%:]W^  
编辑post-receive文件, 输入如下内容保存退出。 ,r^"#C0J}  
S#l5y%&  
"484 n/D  
BASH uGVy6,  
# !/bin/bash z`3( ,V  
rm -rf /tmp/hexo I;MD>%[W,  
git clone /data/hexo/hexo.git egR-w[{  
rm -rf /data/hexo/nginx/html %,q. ),F  
cp -rf /tmp/hexo/* /data/hexo/nginx/html <L0#O(L  
然后赋予脚本执行权限。 @N.jB#nEb  
5iX! lAFJ  
WF2-$`x  
$ chmod +x post-receive MuI2?:~:*4  
之后重启nginx就可以了。 K[?Xm"4  
5.0e~zlM -  
,xsH|xW  
本地配置 3HC  
修改_config.yml的deploy内容,例如: tkKJh !Q7  
H)(jh  
zJN7<sv  
YAML p Pro }@@  
deploy: G4-z3e,crr  
  type: git 19U]2D/z  
  repository: blogit:/data/hexo/hexo.git \XzM^K3  
  branch: master X$n(-65  
.ssh/config这么配置的。 4'>1HW  
t ?eH'*>  
5K%W a]W  
SSH gzn^#3b  
Host blogit ^+|De}`u  
    HostName 120.78.181.210 42C<1@>zO  
    User git Y3U9:VB  
    IdentityFile ~/.ssh/blog.pem V!/:53  
以后正常的hexo d既可以一键部署。 e@<?zS6  
7<\C ?`q"  
0\QR!*'$  
转载:RAZEEN 博客
本人不是云栖社区工作人员。
无论您在使用中遇到什么问题,不要出言不逊!谢谢合作!
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: 74 + 7 = ?
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)