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

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

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

baBPf{<  
预览目录 >;]S+^dXY  
DR @yd,  
odDVdVx0  
配置服务 ,k1ns?i9KH  
1.安装nginx >7)QdaB  
2.安装node.js $VjMd f  
3.安装git M+M  ;@3  
本地配置 yRi5t{!V  
因为己喜欢瞎拍一些东西,希望弄个博客记录记录,原以为就在eiblog的基础上添加相册栏目,自定义一些东西,但自己的前端知识几乎为0,行动起来,需要点时间。看到hexo上有很多适合的主题,决定用hexo搭建一个,通过git hooks就可线下推送,线上自动拉取部署。 ~]24">VZf  
}+}Cl T  
;s#I b_  
其原理是:通过本地渲染静态文件,将文件推送到GitHub仓库,在服务器上再通过git-hooks同步网站根目录。这样就完成了线下一次操作,线上自动更新的步骤。 p I.~j]*:{  
]yQqx*  
AHMvh 7O?  
废话不多说,看操作。 ~;-2eKw  
 c_,pd  
\[|X^8j  
配置云服务 m^zD']  
在配置云服务器前,你得首先本地搭建好你的hexo博客,并可以通过hexo d部署到GitHub。 R%~~'/2V  
cuI&Q?+c}  
qY!LzKM0  
其步骤很多博客都有详细的描叙,不做累述。 ;1s;"  
1;+77<  
bl^pMt1fv  
1.安装nginx Unansk  
在屈屈的博客中很多关于Nginx的按照,配置,你可以看看。 V6+:g=@U-l  
_j4 K  
Bio QV47B  
安装完成后你可以在配置中单独指定一个配置,或直接修改原配置指向你准备存放静态文件的文件夹。我用的前者。在nginx.conf文件添加指定配置文件路径, SmRFxqtN  
xOr"3;^  
ny!80I  
include            /data/hexo/nginx/cong.d/*.conf; Y] UoV_  
在/data/hexo/nginx/cong.d/ 下添加配置文件razeencheng.com.conf Pf;RJeD  
c,]fw2  
>p#_ L^oZ%  
NGINX Y9 Bk$$#\  
server { _,v>P2)  
    listen                       443; &_s^C?x  
,&s"f4Mft  
GO*D4<#u  
    server_name                  razeencheng.com; EMxMJ=  
    server_tokens                off; 6OJhF7\0&  
gxJ12' m  
h Fan$W$  
    access_log                   /data/hexo/nginx/logdata/nginx.log; * bhb=~  
loHMQKy@  
1.<gC  
    # ip 黑名单 }[PC YnS  
    include                      /data/hexo/nginx/ip.blacklist; t0?t Xe.B  
\@T;/Pj{[  
l>hvWK[ ?I  
    ssl_ct                       on; YN7O Qqa  
-G'3&L4 D  
TTWiwPo59  
    # 中间证书 + 根证书 6\v4#  
    ssl_trusted_certificate      /data/hexo/nginx/ssl/razeencheng.com.pem; ka{!' ^  
I]pz3!On4,  
gR_Exs'K  
    ssl_certificate              /data/hexo/nginx/ssl/razeencheng.com.pem; i=hA. y`  
    ssl_certificate_key          /data/hexo/nginx/ssl/razeencheng.com.key; *o!#5c  
    ssl_ct_static_scts           /data/hexo/nginx/ssl/scts/ecc/; 1=z\,~ b  
W[e2J&G  
b `}hw"f  
    ssl_dhparam                  /data/hexo/nginx/ssl/dhparams.pem; Z^%HDB9^  
P?jI:'u!R.  
vIZFI  
    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; T{N8 K K  
    ssl_prefer_server_ciphers    on; ^gY'^2bzxu  
    ssl_protocols                TLSv1 TLSv1.1 TLSv1.2; NSR][h_  
    ssl_session_cache            shared:SSL:50m; C~nL3w  
    ssl_session_timeout          1d; KFaYn  
    ssl_session_tickets          on; ER}5`*X{  
{h.j6  
}D3hP|.X  
    # ssl stapling 7&w[h4Lw  
    ssl_stapling                 on; w6-<HPW<S  
    ssl_stapling_verify          on; %F}d'TPx  
    resolver                     114.114.114.114 8.8.8.8 valid=300s; g0IvcA  
    resolver_timeout             10s; t\v~ A0  
vTWm_ed+^  
X+N8r^&  
    if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$ ) { ZqjLZ9?q  
        return                   444; YOA)paq+  
    } pTncx%!W5  
)M"xCO3a  
[8Z !dj   
    location / { .&8a ;Q?c  
        root /data/hexo/nginx/html; L!`PM.:9  
        index index.html; _NpxV'E  
    } C<w&mFozL  
} FMWM:  
从配置文件也可看出,我将网站的根目录放在/data/hexo/nginx/html文件夹。 O.8k [Ht  
IABF_GwF  
XK)0Mt\  
2.安装node.js !;${2Q  
$ yum install nodejs -y F6>oGmLy  
3.安装git 7" )~JBH  
$ yum install git -y tX,x%(  
新建git用户,添加权限。 y'non0P.  
%7?Z|'\  
@3S:W2k  
BASH QFgKEUNgl  
## 新建git用户 dyohs_  
$ adduser git k~fH:X~x  
$ chmod 740 /etc/sudoers xLgZtLt9  
$ vim /etc/sudoers @Qp#Tg<'  
%J1oz3n  
b # Llu$  
## 添加下面一行设置git权限 =F %lx[9Ye  
git   ALL=(ALL)     ALL 9n"MNedqH  
Ka<J* k3  
fVdu9 l  
$ chmod 440 /etc/sudoers v2="j  
之后我们初始化一个Git的裸仓库,它只是为共享而存在,不需要工作区。 'rA(+-.M;  
Sl@Ucc31  
x0)WrDb  
BASH ~qK/w0=j  
$ su git 2IUd?i3~l  
$ cd /data/hexo MV07RjeS  
$ git init --bare hexo.git q>5j (,6F  
如果你之前你有设置过ssh登陆,可以测试一下是否测试成功。 c@J@*.q]   
{-%8RSK=<  
<y&&{*KW8m  
$ ssh git@ip(or domain) G.PRPl  
如果能登录的话就设置OK了。 y*p02\)  
dcyHp>\)|  
(L(n%  
如果没有设置,可看ssh免密登陆,设置成功及OK。 V)vik  
l[rK)PM   
T''<yS  
为git用户添加ssh key B&6lG!K'?  
6Rmdf>a  
"M3;>"`G  
BASH 4IvT}Us#+  
$ su git Yy6$q\@rV  
$ cd ~ U]@?[+I0]  
$ mkdir .ssh PC|ul{[*}  
# 然后将你电脑上的公钥复制到authorized_keys,保存。 <Y2$'ETD  
$ vim /home/git/.ssh/authorized_keys =|8hG*D8  
$ chmod 600 .ssh/authorized_keys  WjCxTBI  
$ chmod 700 .ssh/ *ZxurbX#  
赋予git对网站目录的所有权。 sx}S,aIU  
)a x>*  
tw&v@HUP  
$ chown git:git -R /data/hexo/nginx/html DUh\x>^  
配置git hooks。 "/mt uU3rt  
D /GE-lq  
y%spI/(  
$ cd ~/data/hexo/hexo.git/hooks &/WE{W  
编辑post-receive文件, 输入如下内容保存退出。 1@JusS0^K  
xV 2C4K  
P;mp)1C  
BASH qmt9J?$k  
# !/bin/bash YRFz ]  
rm -rf /tmp/hexo G$%F`R[  
git clone /data/hexo/hexo.git )%3T1 D/  
rm -rf /data/hexo/nginx/html %.?V\l  
cp -rf /tmp/hexo/* /data/hexo/nginx/html a @d 15CN  
然后赋予脚本执行权限。 H-U_  
4+s6cQ]S`  
y&-QLX L  
$ chmod +x post-receive RtzSe$O  
之后重启nginx就可以了。 Y[dq"  
Z6A-i@  
(QJe-)0_y  
本地配置 H;l_;c`  
修改_config.yml的deploy内容,例如: "Y=`w,~~  
?%}!_F`h%  
CgrQ" N5  
YAML =I)43ah d  
deploy: XclTyUGoK+  
  type: git ?1a9k@[t  
  repository: blogit:/data/hexo/hexo.git )<:TpMdUk  
  branch: master s&(;  
.ssh/config这么配置的。 3m` >D e  
cgSN:$p(R  
KP>9hEh  
SSH $ VP1(C  
Host blogit %kjG[C  
    HostName 120.78.181.210 G9 O6Fi  
    User git ;ryNfP%  
    IdentityFile ~/.ssh/blog.pem @XV&^l -  
以后正常的hexo d既可以一键部署。 |#kY_d)10  
voRry6Q;  
AXW.`~ 4  
转载:RAZEEN 博客
本人不是云栖社区工作人员。
无论您在使用中遇到什么问题,不要出言不逊!谢谢合作!
发表主题 回复主题
« 返回列表上一主题下一主题

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