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

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

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

FfNUFx2N  
预览目录 =O3)tm;  
MML=J~1  
o Vpq*"  
配置服务 Lp) P7Yt-  
1.安装nginx jG{OLF6 !  
2.安装node.js :DrF)1C  
3.安装git t:"3M iM=c  
本地配置 1Qw_P('}  
因为己喜欢瞎拍一些东西,希望弄个博客记录记录,原以为就在eiblog的基础上添加相册栏目,自定义一些东西,但自己的前端知识几乎为0,行动起来,需要点时间。看到hexo上有很多适合的主题,决定用hexo搭建一个,通过git hooks就可线下推送,线上自动拉取部署。 [1nUq!uTm  
@b!W8c 6  
EbG&[v  
其原理是:通过本地渲染静态文件,将文件推送到GitHub仓库,在服务器上再通过git-hooks同步网站根目录。这样就完成了线下一次操作,线上自动更新的步骤。 wjfq"7Q  
oFGWI#]ts>  
J0Gjo9L  
废话不多说,看操作。 2u$rloc$b  
&M:o(T  
]!j%Ad  
配置云服务 ,m8mh)K?0>  
在配置云服务器前,你得首先本地搭建好你的hexo博客,并可以通过hexo d部署到GitHub。 3m| C8:  
Q' Tg0,,S  
"n_X4e+18P  
其步骤很多博客都有详细的描叙,不做累述。 VVDW=G  
9s1^hW2%Q  
W>5[_d  
1.安装nginx _N=f&~T  
在屈屈的博客中很多关于Nginx的按照,配置,你可以看看。 o7s!ti\G  
jtUqrJFlQ  
80ox$U  
安装完成后你可以在配置中单独指定一个配置,或直接修改原配置指向你准备存放静态文件的文件夹。我用的前者。在nginx.conf文件添加指定配置文件路径, u HW'F(;  
=t`cHs29  
yO}5.  
include            /data/hexo/nginx/cong.d/*.conf; \2]_NU5.  
在/data/hexo/nginx/cong.d/ 下添加配置文件razeencheng.com.conf {xH?b0>  
I _gE`N  
)_1 GPS  
NGINX yRIXUCy  
server { C}(@cn `L  
    listen                       443; QZtQogNy#  
L SP p  
Xjkg7p,HD@  
    server_name                  razeencheng.com; JhfVm*,  
    server_tokens                off; 6pSi-FH  
#c5jCy}n  
Xl$, f`f~  
    access_log                   /data/hexo/nginx/logdata/nginx.log; Z*i p=FYR  
"FWx;65CR  
RqtBz3v  
    # ip 黑名单 b,E?{uG  
    include                      /data/hexo/nginx/ip.blacklist; r<ucHRO#  
[mA-sl]  
Gv_~@MN  
    ssl_ct                       on; kFv*>>X`  
#*'Qm  A  
wSN9`"  
    # 中间证书 + 根证书 z#^fS |  
    ssl_trusted_certificate      /data/hexo/nginx/ssl/razeencheng.com.pem; n^Ca?|} ,  
x#J9GP.  
~v+kO~  
    ssl_certificate              /data/hexo/nginx/ssl/razeencheng.com.pem; ->8Kd1^F  
    ssl_certificate_key          /data/hexo/nginx/ssl/razeencheng.com.key; N/bOl~!y  
    ssl_ct_static_scts           /data/hexo/nginx/ssl/scts/ecc/; %.Ma_4o Z  
At'CT5=  
,~1'L6Ri?  
    ssl_dhparam                  /data/hexo/nginx/ssl/dhparams.pem; {> YsrD C  
 Y~WdN<g  
jYHnJ}<  
    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; d:@+dS  
    ssl_prefer_server_ciphers    on; "' JnFM  
    ssl_protocols                TLSv1 TLSv1.1 TLSv1.2; *siX:?l  
    ssl_session_cache            shared:SSL:50m; c ZYy+  
    ssl_session_timeout          1d; _MBhwNBxZ  
    ssl_session_tickets          on; {]k#=a4  
C/e.BXA  
wJy]Vyd  
    # ssl stapling HwUaaK   
    ssl_stapling                 on; Mg;pNK\n  
    ssl_stapling_verify          on;  E^1yU  
    resolver                     114.114.114.114 8.8.8.8 valid=300s; c/|{yp$Ga>  
    resolver_timeout             10s; VeGSr  
r#sg5aS7O|  
uUI#^ A  
    if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$ ) { KD kGQh#9  
        return                   444; 0D(8-H  
    } &C9IR,&  
AxH;psj  
#a e@VedM  
    location / { p&(0e,`z/  
        root /data/hexo/nginx/html; uY]';Ot G  
        index index.html; OrkcY39"~a  
    } gP% <<yl  
} )Te\6qM  
从配置文件也可看出,我将网站的根目录放在/data/hexo/nginx/html文件夹。 U,W OP7z  
. >"xp6  
2{ F-@}=  
2.安装node.js xV> .]  
$ yum install nodejs -y .I`>F/Sjr  
3.安装git F*k =JL  
$ yum install git -y A;co1,]gR  
新建git用户,添加权限。 +~5Lo'^  
PaTOlHr  
Ua}R3^_)a  
BASH f#s6 'g  
## 新建git用户 b `P6Ox3  
$ adduser git LphCx6f,X  
$ chmod 740 /etc/sudoers =[n !3M+X  
$ vim /etc/sudoers ]3v)3Wp  
&* VhtT?=5  
zZ[kU1Fyv  
## 添加下面一行设置git权限 (Yy#:r;U  
git   ALL=(ALL)     ALL T!x/^  
G? SPz  
\n}%RD-Ce  
$ chmod 440 /etc/sudoers 0*MUe1{  
之后我们初始化一个Git的裸仓库,它只是为共享而存在,不需要工作区。 94!} Z>  
YIN* '!N  
rO}1E<g (  
BASH 6PsT])*>DE  
$ su git Bl>m`/\1i  
$ cd /data/hexo :a8Sy("  
$ git init --bare hexo.git E?]$Y[KJKs  
如果你之前你有设置过ssh登陆,可以测试一下是否测试成功。 MgiW9@_(  
1#Vd)vSP  
+`flIG3RV  
$ ssh git@ip(or domain) _#~D{91 j:  
如果能登录的话就设置OK了。 56Lxr{+X  
",~ZO<P  
%0&,_jM/9  
如果没有设置,可看ssh免密登陆,设置成功及OK。 D{t_65c-  
7b~uU@L`  
TTO8tT3[6}  
为git用户添加ssh key |ghyH  
I?1 BGaAA  
o5]-Kuw`  
BASH ]R~hzo  
$ su git Q0-gU+ig  
$ cd ~ ,./ n@.na  
$ mkdir .ssh $mT)<N ;w  
# 然后将你电脑上的公钥复制到authorized_keys,保存。 kh}h(z^  
$ vim /home/git/.ssh/authorized_keys A pzC  
$ chmod 600 .ssh/authorized_keys D_( NLC  
$ chmod 700 .ssh/ r7R39#  
赋予git对网站目录的所有权。 BJ_"FG  
y ~-v0/  
SWtqp(h]'  
$ chown git:git -R /data/hexo/nginx/html B3yTN6-  
配置git hooks。 07=I&Pum  
NVQ.;"2w  
ga,kKPL  
$ cd ~/data/hexo/hexo.git/hooks \R9izuc9  
编辑post-receive文件, 输入如下内容保存退出。 leF!Uog  
K20Hh7cVJ  
-~RGjx  
BASH Ugo!  
# !/bin/bash d %FLk=]  
rm -rf /tmp/hexo ,yp#!gE~  
git clone /data/hexo/hexo.git {\k }:)  
rm -rf /data/hexo/nginx/html =i}lh}(  
cp -rf /tmp/hexo/* /data/hexo/nginx/html 4C?4M;  
然后赋予脚本执行权限。 oP T)vN?  
W8x&:5Fc)3  
tZx}/&m-  
$ chmod +x post-receive q77qdm q7  
之后重启nginx就可以了。 }l}_'FmQ  
OVxg9  
Xe:rPxZf~  
本地配置 [jCYj0Qf8  
修改_config.yml的deploy内容,例如: "*`!.9pt  
g[O  
qnQ".  
YAML __+8wC  
deploy: ;"#yHP`  
  type: git @+~>utr  
  repository: blogit:/data/hexo/hexo.git cL%"AVsj >  
  branch: master KiFTj$w,  
.ssh/config这么配置的。 p(="73  
h 2JmRO  
C[jX;//Jiu  
SSH 2wPc yD  
Host blogit @vib54G  
    HostName 120.78.181.210 1M_Vhs^  
    User git q$b 4S4Z7  
    IdentityFile ~/.ssh/blog.pem LXJ;8uW2y  
以后正常的hexo d既可以一键部署。 o%`=+- K  
z Fj|E  
\et2aX !  
转载:RAZEEN 博客
本人不是云栖社区工作人员。
无论您在使用中遇到什么问题,不要出言不逊!谢谢合作!
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: 75 - 43 = ?
上一个 下一个