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

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

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

GUSEbIz):  
预览目录 yH/m@#  
R.^ Y'TLyc  
aYW 9 C<5  
配置服务 it77x3Mm F  
1.安装nginx grrM[Y7#~b  
2.安装node.js nHyqfd<V>  
3.安装git d;@"Naw  
本地配置 -c4g;;%  
因为己喜欢瞎拍一些东西,希望弄个博客记录记录,原以为就在eiblog的基础上添加相册栏目,自定义一些东西,但自己的前端知识几乎为0,行动起来,需要点时间。看到hexo上有很多适合的主题,决定用hexo搭建一个,通过git hooks就可线下推送,线上自动拉取部署。 PUcxlD/a}  
j]P'xrWl]8  
2+s#5K&i  
其原理是:通过本地渲染静态文件,将文件推送到GitHub仓库,在服务器上再通过git-hooks同步网站根目录。这样就完成了线下一次操作,线上自动更新的步骤。 Q,v/]bXd  
ur\<NApT;  
c]}F$[>oN'  
废话不多说,看操作。 rel_Z..~  
uHeKttR-  
6pP:Q_U$  
配置云服务 _59f.FsVR  
在配置云服务器前,你得首先本地搭建好你的hexo博客,并可以通过hexo d部署到GitHub。 zCji]:  
sD#*W<  
D||)H  
其步骤很多博客都有详细的描叙,不做累述。 "o)jB~ :L  
YC[c QX  
WF] |-)vw  
1.安装nginx )sN}ClgJ  
在屈屈的博客中很多关于Nginx的按照,配置,你可以看看。 45Hbg  
oZ5 ,y+L4  
4ibOVBG:*,  
安装完成后你可以在配置中单独指定一个配置,或直接修改原配置指向你准备存放静态文件的文件夹。我用的前者。在nginx.conf文件添加指定配置文件路径, 8Wba Hw_  
?`T Q'#P`  
I >aKa  
include            /data/hexo/nginx/cong.d/*.conf; 70 -nAv  
在/data/hexo/nginx/cong.d/ 下添加配置文件razeencheng.com.conf l=UXikx  
@)XR  
F1*xY%Jv^M  
NGINX #$X _,+<HZ  
server { $+|. @ss  
    listen                       443; \AeM=K6q+D  
x7GYWK 9  
@d|3c7` A  
    server_name                  razeencheng.com; xc}kDpF=g  
    server_tokens                off; s~06%QEG  
RiG]-K:  
G5hf m-  
    access_log                   /data/hexo/nginx/logdata/nginx.log; &$bcB]C\3  
6<fcG  
{4{X`$  
    # ip 黑名单 bgeJVI  
    include                      /data/hexo/nginx/ip.blacklist; `m}G{jfk  
_MW W  
ivg W[]  
    ssl_ct                       on; ; GEr8_7  
&PPYxg<  
5,|of{8  
    # 中间证书 + 根证书 RR2M+vQ  
    ssl_trusted_certificate      /data/hexo/nginx/ssl/razeencheng.com.pem; Dtox/ ,"  
_ h/:r1  
(%'`t(<  
    ssl_certificate              /data/hexo/nginx/ssl/razeencheng.com.pem; %GP`H/H(  
    ssl_certificate_key          /data/hexo/nginx/ssl/razeencheng.com.key; .qLX jU  
    ssl_ct_static_scts           /data/hexo/nginx/ssl/scts/ecc/; 1{Ik.O)  
5Y 7 %Z  
0ybMI+*  
    ssl_dhparam                  /data/hexo/nginx/ssl/dhparams.pem; Pv|sPIIB7  
Gd`s01GKQ  
tr58J% Mu  
    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; J| 1!4R~  
    ssl_prefer_server_ciphers    on; \E6 0  
    ssl_protocols                TLSv1 TLSv1.1 TLSv1.2; /.(~=6o5  
    ssl_session_cache            shared:SSL:50m; ?69E_E  
    ssl_session_timeout          1d; v%kl*K`*  
    ssl_session_tickets          on; K#Xl)h}y7  
)Fw#]~Z  
vuZ'Wo:S{  
    # ssl stapling 411z -aS  
    ssl_stapling                 on; WD5jO9Oai  
    ssl_stapling_verify          on; ( G~ME>  
    resolver                     114.114.114.114 8.8.8.8 valid=300s; N/[!$B0H@  
    resolver_timeout             10s; G^Y^)pc]   
VR'zm\< D  
V+zn` \a  
    if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$ ) { ,&g-DC ag  
        return                   444; Jpy~5kS  
    } 5~$WSL?O)  
qoZe<jW (  
2Sk hBb=d  
    location / { !^EA}N.u  
        root /data/hexo/nginx/html; nkz<t   
        index index.html; aWNj l  
    } GPx+]Jw8\  
} 3BAQ2S}  
从配置文件也可看出,我将网站的根目录放在/data/hexo/nginx/html文件夹。 a|DCpU}  
;Ah eeq746  
]bbP_n8  
2.安装node.js JEK_W<BD  
$ yum install nodejs -y UGvUU<N|N  
3.安装git a p(PI?]X  
$ yum install git -y o?+?@Xb'  
新建git用户,添加权限。 `)kxFD_bH  
xiL+s-   
(!?%"e  
BASH VA`VDUG,  
## 新建git用户 4;(W0RQa  
$ adduser git t3*.Bm:^  
$ chmod 740 /etc/sudoers QIdml*Np?H  
$ vim /etc/sudoers C' WX$!$d  
:fUNc^\2  
)TBm?VMe  
## 添加下面一行设置git权限 s2F[v:|Wq  
git   ALL=(ALL)     ALL gQ|?~hYYv  
^W`RBrJay  
#TV #*  
$ chmod 440 /etc/sudoers Hd TB[(  
之后我们初始化一个Git的裸仓库,它只是为共享而存在,不需要工作区。 f3s4aARP  
ZkdSgc')  
`uqe[u;`6  
BASH e`+ej-o,  
$ su git TkIiO>  
$ cd /data/hexo 9JeT1\VvHY  
$ git init --bare hexo.git *g9VI;X  
如果你之前你有设置过ssh登陆,可以测试一下是否测试成功。 a/rQ@c>  
xCyD0^KY  
IR&b2FTcU  
$ ssh git@ip(or domain) rT[b ^l}  
如果能登录的话就设置OK了。 5A%Uv*  
QtcYFf g  
sp_19u  
如果没有设置,可看ssh免密登陆,设置成功及OK。 x]608I T  
1_8@yO  
AbQ nx%$u  
为git用户添加ssh key U.=TjCW  
w}M)]kY  
\K lY8\c[  
BASH ) bd`U  
$ su git bn=7$Ax  
$ cd ~ f1B t6|W%  
$ mkdir .ssh %fXgV\xY  
# 然后将你电脑上的公钥复制到authorized_keys,保存。 qZlL6  
$ vim /home/git/.ssh/authorized_keys c0_512  
$ chmod 600 .ssh/authorized_keys n" vO?8Sx  
$ chmod 700 .ssh/ \_)mWK,h  
赋予git对网站目录的所有权。 9U@>&3[v  
f'tQLF[r<  
er@.<Dc  
$ chown git:git -R /data/hexo/nginx/html |-%dN }O  
配置git hooks。 RF~c/en  
<! *O[0s  
Ss1&fZoj  
$ cd ~/data/hexo/hexo.git/hooks BDX>J3h  
编辑post-receive文件, 输入如下内容保存退出。  Sg(\+j=  
D+h`Z]"|  
nFefDdP  
BASH UY)Iu|~0b  
# !/bin/bash q1A0-W#4  
rm -rf /tmp/hexo n0uL^{B  
git clone /data/hexo/hexo.git u~Y+YzCxV  
rm -rf /data/hexo/nginx/html |9)y<}c5oM  
cp -rf /tmp/hexo/* /data/hexo/nginx/html /~g.j1g  
然后赋予脚本执行权限。 o KY0e&5  
3)l<'~"z<  
Q.f D3g  
$ chmod +x post-receive Xx^v%[!`+  
之后重启nginx就可以了。 = d!YM6G  
<}%gZ:Z6g  
i}C%`1+(  
本地配置 uzT>|uu$  
修改_config.yml的deploy内容,例如: :x!'Eer n  
LEAU3doK;  
8>:u%+ C1c  
YAML )2F%^<gZ#  
deploy: 4@@gC&:Y  
  type: git TezwcFqH  
  repository: blogit:/data/hexo/hexo.git 0}\8,U  
  branch: master sw,p6T[  
.ssh/config这么配置的。 TEbE-h0)]  
W"s)s  
bFfDaO<k  
SSH |YrvY1d!  
Host blogit +4k4z:<n  
    HostName 120.78.181.210 3e|,Z'4}4  
    User git B,A\/%<  
    IdentityFile ~/.ssh/blog.pem c`#4}$  
以后正常的hexo d既可以一键部署。 sP%J`L@h  
@SAJ*h fb0  
q94*2@KV  
转载:RAZEEN 博客
本人不是云栖社区工作人员。
无论您在使用中遇到什么问题,不要出言不逊!谢谢合作!
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)