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

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

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

;M]C1!D9#  
预览目录 >hY" 3  
6io, uh!  
|%~+2m  
配置服务 ( *G\g=D  
1.安装nginx I *c;H I  
2.安装node.js 2!N8rHRt  
3.安装git co _oMc  
本地配置 a:~@CUD >I  
因为己喜欢瞎拍一些东西,希望弄个博客记录记录,原以为就在eiblog的基础上添加相册栏目,自定义一些东西,但自己的前端知识几乎为0,行动起来,需要点时间。看到hexo上有很多适合的主题,决定用hexo搭建一个,通过git hooks就可线下推送,线上自动拉取部署。 D+lzFn$3  
SPj><5Ro  
,wwZI`>-  
其原理是:通过本地渲染静态文件,将文件推送到GitHub仓库,在服务器上再通过git-hooks同步网站根目录。这样就完成了线下一次操作,线上自动更新的步骤。 #6Xs.*b5C  
>-E<n8  
`"vZ);i <  
废话不多说,看操作。 wix5B@  
iE0ab,OF  
w",? Bef  
配置云服务 dQezd-y*  
在配置云服务器前,你得首先本地搭建好你的hexo博客,并可以通过hexo d部署到GitHub。 >Ps7I  
9Pd* z>s  
4 !`bZ`_Bw  
其步骤很多博客都有详细的描叙,不做累述。 H* !EP  
5)1+~B  
- ~O'vLG  
1.安装nginx u% 2<\:~j  
在屈屈的博客中很多关于Nginx的按照,配置,你可以看看。 }~Q"s2  
(_* wt]"'  
! BU)K'mj  
安装完成后你可以在配置中单独指定一个配置,或直接修改原配置指向你准备存放静态文件的文件夹。我用的前者。在nginx.conf文件添加指定配置文件路径, @|bP+8oU  
<(@Syv)  
b(GFMk  
include            /data/hexo/nginx/cong.d/*.conf; ^SEdA=!  
在/data/hexo/nginx/cong.d/ 下添加配置文件razeencheng.com.conf U7&x rif  
SM[{BH<  
v}Wmd4Y'  
NGINX b hjZ7=  
server {  \d.F82  
    listen                       443; ^Cz YDq  
(k-YI{D3  
#i QX 6WF  
    server_name                  razeencheng.com; )tZ`K |  
    server_tokens                off; }{7e7tW6  
bggusK<  
U` R;P-  
    access_log                   /data/hexo/nginx/logdata/nginx.log; QHf$f@bjI  
L3y5a?G  
J$uM 03  
    # ip 黑名单 <2Y0{ 8)  
    include                      /data/hexo/nginx/ip.blacklist; NlR"$  
f%^'P"R  
`LP!D  
    ssl_ct                       on; ayp b  
f %fa{  
Q/_#k/R  
    # 中间证书 + 根证书 =(U/CI  
    ssl_trusted_certificate      /data/hexo/nginx/ssl/razeencheng.com.pem; 4-4?IwS  
~2%3FV^  
* UcjQ  
    ssl_certificate              /data/hexo/nginx/ssl/razeencheng.com.pem; #0 y <a:}R  
    ssl_certificate_key          /data/hexo/nginx/ssl/razeencheng.com.key; 3_ 2hC!u!K  
    ssl_ct_static_scts           /data/hexo/nginx/ssl/scts/ecc/; c;!g  
E1q%gi4Q%  
(}H ,ng'4  
    ssl_dhparam                  /data/hexo/nginx/ssl/dhparams.pem; 5rN _jC*U  
_,; %mK  
IvU{Xm"qB  
    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; #a}N"*P  
    ssl_prefer_server_ciphers    on; W}gVIfe  
    ssl_protocols                TLSv1 TLSv1.1 TLSv1.2; ^" 6f\  
    ssl_session_cache            shared:SSL:50m; XCPb9<L  
    ssl_session_timeout          1d; r#h {$iW  
    ssl_session_tickets          on; ?z.Isvn  
;w6s<a@Zh  
8]*Q79  
    # ssl stapling XL"=vbD  
    ssl_stapling                 on; 3z,2utH  
    ssl_stapling_verify          on; #tz8{o?ebN  
    resolver                     114.114.114.114 8.8.8.8 valid=300s; _ VKgs]Y  
    resolver_timeout             10s; g5}7y\  
# cWHDRLX  
oS!/|#m n  
    if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$ ) { {visv{R<  
        return                   444; -N^ =@Yx)  
    } 8&Wx@QI  
02M7gBS  
-Op@y2+c  
    location / { m^0A?jBrR  
        root /data/hexo/nginx/html; (4ZLpsbJ  
        index index.html; 'Kd7l}e!  
    } 32KR--mn%  
} r%[1$mTOR  
从配置文件也可看出,我将网站的根目录放在/data/hexo/nginx/html文件夹。 '}zT1F* p=  
/$*; >4=>f  
XPVV+.  
2.安装node.js rG5i-'  
$ yum install nodejs -y =#'+"+lQ }  
3.安装git +9~ZA3DiP  
$ yum install git -y 8!6<p[_  
新建git用户,添加权限。 e@+v9Bs]q  
g\j>qUjs%Q  
`E%(pjG  
BASH $l43>e{E  
## 新建git用户 AG=9b  
$ adduser git s #`cX0L)  
$ chmod 740 /etc/sudoers :%>oe> _"  
$ vim /etc/sudoers (Z'WR  
Ol_/uy1r[  
h bdEw=r?  
## 添加下面一行设置git权限 iPNd!_  
git   ALL=(ALL)     ALL - Ra\^uz  
h#;?9DP  
{\F2*P  
$ chmod 440 /etc/sudoers i"KL;t[1  
之后我们初始化一个Git的裸仓库,它只是为共享而存在,不需要工作区。 9PWm@ Nlf  
CARq^xI-  
@t "~   
BASH US"2O!u  
$ su git KgL<}=S  
$ cd /data/hexo E Gr|BLl  
$ git init --bare hexo.git TR+Q4Y:  
如果你之前你有设置过ssh登陆,可以测试一下是否测试成功。 ~}Kp  
Ae3,W  
k`{RXx  
$ ssh git@ip(or domain) Hs.6;|0%  
如果能登录的话就设置OK了。 / O|Td'Z  
i=x.tsJ:hB  
!4i,%Z& 6  
如果没有设置,可看ssh免密登陆,设置成功及OK。 t*5z1T?  
fpI; `s  
d%S=$}o  
为git用户添加ssh key )R8%wk?2  
"m wl-=  
cH+h=E=  
BASH tCd{G c  
$ su git /h1dm,  
$ cd ~ K'a#Mg  
$ mkdir .ssh -lJx%9>  
# 然后将你电脑上的公钥复制到authorized_keys,保存。 BG(R=, 7  
$ vim /home/git/.ssh/authorized_keys H9oXZSm  
$ chmod 600 .ssh/authorized_keys ZX~>uf\n  
$ chmod 700 .ssh/ $.suu^>^w  
赋予git对网站目录的所有权。 mf Wz@=0  
}1X11+/W  
zN?$Sxttx  
$ chown git:git -R /data/hexo/nginx/html 1]D/3!  
配置git hooks。 j?d;xj  
WI*^+E&=*  
Fy4<  
$ cd ~/data/hexo/hexo.git/hooks X]3l| D  
编辑post-receive文件, 输入如下内容保存退出。 P%<aGb4  
^rxfNcU7  
ShEaL&'J  
BASH CYTuj>Ww  
# !/bin/bash `g4Ekp'Rp[  
rm -rf /tmp/hexo P ],)  
git clone /data/hexo/hexo.git ^cKv JSY  
rm -rf /data/hexo/nginx/html {|7OmslC@  
cp -rf /tmp/hexo/* /data/hexo/nginx/html kB$,1J$q  
然后赋予脚本执行权限。 jFJW3az@z  
m-Z'K_oQ  
ecSdU>  
$ chmod +x post-receive ,\m;DR1  
之后重启nginx就可以了。 /q*Qx )y+1  
c*M)DO`y;h  
O>b&-U"R  
本地配置 ||*&g2Y  
修改_config.yml的deploy内容,例如: 3u"J4%zg|L  
,,wyydG  
kERaY9L\  
YAML r=P$iG'&  
deploy: F-reb5pt.=  
  type: git 2o s6c te  
  repository: blogit:/data/hexo/hexo.git B 4*X0x  
  branch: master KH@) +Rj  
.ssh/config这么配置的。 x#}j3" PP  
Bgo"JNM  
F|n$0vQ*  
SSH gn e #v  
Host blogit 5Ky9Pz  
    HostName 120.78.181.210 P7BJ?x  
    User git #`6OC)1J  
    IdentityFile ~/.ssh/blog.pem {7M4SC@p|  
以后正常的hexo d既可以一键部署。 x1hs19s  
]B[/sqf  
3/SqXu  
转载:RAZEEN 博客
本人不是云栖社区工作人员。
无论您在使用中遇到什么问题,不要出言不逊!谢谢合作!
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
上一个 下一个