阿里云
阿里云大学认证0元起
发表主题 回复主题
  • 157阅读
  • 0回复

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

级别: 论坛版主
发帖
370
云币
639

}KI/fh  
预览目录 ,vR?iNd:q[  
rAH!%~  
.AfZ5s]/F  
配置服务 [.gk{> #  
1.安装nginx AW]\n;f  
2.安装node.js O3} JOv_  
3.安装git >h\y1IrAaG  
本地配置 H7zN|NdNw  
因为己喜欢瞎拍一些东西,希望弄个博客记录记录,原以为就在eiblog的基础上添加相册栏目,自定义一些东西,但自己的前端知识几乎为0,行动起来,需要点时间。看到hexo上有很多适合的主题,决定用hexo搭建一个,通过git hooks就可线下推送,线上自动拉取部署。 +>Wo:kp3  
tbFAVGcAM  
^_WR) F'K  
其原理是:通过本地渲染静态文件,将文件推送到GitHub仓库,在服务器上再通过git-hooks同步网站根目录。这样就完成了线下一次操作,线上自动更新的步骤。 v e&d"8+]  
PCviQ!X  
K:,V>DL  
废话不多说,看操作。 e^y9Kmd  
*~#I5s\s!  
${f<}  
配置云服务 7Ak<e tHD  
在配置云服务器前,你得首先本地搭建好你的hexo博客,并可以通过hexo d部署到GitHub。 -DI >O/  
vqm|D&HU  
TeHJj`rdAU  
其步骤很多博客都有详细的描叙,不做累述。 w*F[[*j@.  
Ku(YTXtK  
{9@D zP  
1.安装nginx 4V@%Y,:ee  
在屈屈的博客中很多关于Nginx的按照,配置,你可以看看。 (GJtTp~2C4  
>mb}~wx`  
~; 9HGtg  
安装完成后你可以在配置中单独指定一个配置,或直接修改原配置指向你准备存放静态文件的文件夹。我用的前者。在nginx.conf文件添加指定配置文件路径, eh86-tQI~(  
=U]9>  
? i{?Q,  
include            /data/hexo/nginx/cong.d/*.conf; $L*gtZ  
在/data/hexo/nginx/cong.d/ 下添加配置文件razeencheng.com.conf zp}7p~#k^  
\+ se%O  
on_h'?2  
NGINX I dK*IA4  
server { wC1pfXa  
    listen                       443; z?byNd8  
<V?2;Gy  
$$9H1)Ny  
    server_name                  razeencheng.com; Nq8ON!<<  
    server_tokens                off; ~+Wx\:TT  
A8% e _XA  
4Mt3<W5  
    access_log                   /data/hexo/nginx/logdata/nginx.log; MBWoPK  
,/f\  
K9N31'  
    # ip 黑名单 &~:EmLgv  
    include                      /data/hexo/nginx/ip.blacklist; "~4V(  
iOiF kka  
'2lV(>"  
    ssl_ct                       on; v "l).G?  
/~,*DH$)  
9D3W_eIc  
    # 中间证书 + 根证书 Vn#}f=u\  
    ssl_trusted_certificate      /data/hexo/nginx/ssl/razeencheng.com.pem; 9qap#A  
- Jaee,P  
![z2]L+TB  
    ssl_certificate              /data/hexo/nginx/ssl/razeencheng.com.pem; Ej(BE@6>s  
    ssl_certificate_key          /data/hexo/nginx/ssl/razeencheng.com.key; hz/mNDE]  
    ssl_ct_static_scts           /data/hexo/nginx/ssl/scts/ecc/; 9PB%v.t5 y  
f I1CT)0<e  
ka_m Q<{9  
    ssl_dhparam                  /data/hexo/nginx/ssl/dhparams.pem; Tvv>9gS  
[n"eD4)K|  
Q>5f@aN  
    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; tddwnpnSw  
    ssl_prefer_server_ciphers    on; ,!Wo6{'  
    ssl_protocols                TLSv1 TLSv1.1 TLSv1.2; ? dJd7+A  
    ssl_session_cache            shared:SSL:50m; `l45T~`]$  
    ssl_session_timeout          1d; Bz'.7" ":0  
    ssl_session_tickets          on; k]ZE j/y~  
/ &Z8g4vc  
QGN+f)  
    # ssl stapling |X@s {?  
    ssl_stapling                 on; pCt2 -aam  
    ssl_stapling_verify          on; Q0xGd(\  
    resolver                     114.114.114.114 8.8.8.8 valid=300s; q 4Pv\YO  
    resolver_timeout             10s; EMnz;/dMt  
 )M;~j  
JWHsTnB  
    if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$ ) { 8Yc-3ozH  
        return                   444; l2;$qNAo  
    } QtfL'su:  
GP+=b:C{E  
YT-ua{ .^  
    location / { P[fy  
        root /data/hexo/nginx/html; q:kGJ xfaW  
        index index.html; r(S h  
    } YWU@e[  
} yr'-;-u  
从配置文件也可看出,我将网站的根目录放在/data/hexo/nginx/html文件夹。 (A=PDjP!  
oI#TjF  
NrS+N;i  
2.安装node.js cq>J]35  
$ yum install nodejs -y _wXT9`|3  
3.安装git @(L}:]{@  
$ yum install git -y ft7M9<#v  
新建git用户,添加权限。 od#Lad@p  
dWzf C@]  
(}wPu&Is,C  
BASH BcQUD?LC`  
## 新建git用户 P, ZQ*Ju  
$ adduser git X8v)yDtw  
$ chmod 740 /etc/sudoers i;pg9Vw  
$ vim /etc/sudoers xJw" 8V<  
AAfhh5i  
41/civX>V  
## 添加下面一行设置git权限 YKUAI+ks  
git   ALL=(ALL)     ALL ]2L11" erP  
]*]*O|w  
,Gy,bcv{  
$ chmod 440 /etc/sudoers @[joM*U  
之后我们初始化一个Git的裸仓库,它只是为共享而存在,不需要工作区。 Y->sJm  
I!Dx)>E&  
*DcIC]ao[  
BASH lq-F*r\/~+  
$ su git Vel(+HS  
$ cd /data/hexo /T qbl^[  
$ git init --bare hexo.git N6kMl  
如果你之前你有设置过ssh登陆,可以测试一下是否测试成功。 IM6n\EZ^  
6Jy%4]wK  
)/f#~$ws  
$ ssh git@ip(or domain) Q,9KLi3  
如果能登录的话就设置OK了。 )6XnxBSH  
qm#?DSLap  
B^M L}$  
如果没有设置,可看ssh免密登陆,设置成功及OK。 )( YJ6l  
3\{acm  
Y&M{7  
为git用户添加ssh key 9(X~  
 o4 "HE*  
zI"&g]TV5  
BASH Gyy4)dP  
$ su git .FYRi_Zd  
$ cd ~ cMtUb  
$ mkdir .ssh EQ"_kJ>81Y  
# 然后将你电脑上的公钥复制到authorized_keys,保存。 f7 ew<c\  
$ vim /home/git/.ssh/authorized_keys 6V9r[,n  
$ chmod 600 .ssh/authorized_keys UC`sq-n  
$ chmod 700 .ssh/ 9JMf T]  
赋予git对网站目录的所有权。 U3aM^  
+|oLS_  
C<QpUJ`k  
$ chown git:git -R /data/hexo/nginx/html ?=?*W7  
配置git hooks。 O d6'bO;G  
-NzOX"V]3  
hYFi"ck  
$ cd ~/data/hexo/hexo.git/hooks 9l[C&0w#\  
编辑post-receive文件, 输入如下内容保存退出。 6 P9#6mZ  
'&|%^9O/"  
4*n1Xu 7^x  
BASH #RdcSrw)W!  
# !/bin/bash rCGKE`H  
rm -rf /tmp/hexo $Zi {1w  
git clone /data/hexo/hexo.git P$O@G$n  
rm -rf /data/hexo/nginx/html ( Q&jp!WU  
cp -rf /tmp/hexo/* /data/hexo/nginx/html 8;UkZN"hy5  
然后赋予脚本执行权限。 iF:NDqc  
FD8  
D+BflI~9mP  
$ chmod +x post-receive sBxCi~  
之后重启nginx就可以了。 ]RVme^=  
`]&'yt  
L'a s^Od  
本地配置 ]3U|K .G  
修改_config.yml的deploy内容,例如: UBuG12U4Y  
c!$~_?]  
-|czhO)R  
YAML =*?XZA)c  
deploy: aXbj pb+  
  type: git cnDBT3$~Z  
  repository: blogit:/data/hexo/hexo.git Z 2uU'T  
  branch: master Yk7^?W  
.ssh/config这么配置的。 Kna@K$6{w=  
.KYDYdoS'  
1ww~!R  
SSH 'Te'wh=Y  
Host blogit 9\r5&#<(I  
    HostName 120.78.181.210 HM\}C.u  
    User git ~VF?T~Kr_  
    IdentityFile ~/.ssh/blog.pem eA9r M:  
以后正常的hexo d既可以一键部署。 %)r1?H} #%  
cPl$N5/5  
(jh0cy}|]  
转载:RAZEEN 博客
本人不是云栖社区工作人员。
无论您在使用中遇到什么问题,不要出言不逊!谢谢合作!
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个