本地部署

安装hexo

npm install -g hexo-cli hexo-server
npm install hexo-deployer-git --save

初始化

hexo init blog  # 会在当前文件夹从GitHub克隆项目并下载依赖
hexo s # 本地启动

项目备份

可以托管到gitee仓库,每次修改除了提交到云服务外也要提交到gitee仓库。当本地和云服务丢失的时候方便从gitee仓库拉取。比如更换电脑重装系统导致本地文件丢失。

云服务部署

安装git

yum install -y git

创建用户

useradd quxp
passwd quxp
#添加权限
vi /etc/sudoers
quxp ALL=(ALL) ALL

创建目录

mkdir /home/hexo
chown quxp:quxp -R /home/hexo

创建git仓库

mkdir -p /home/quxp
cd /home/quxp
git init --bare blog.git #创建一个名为blog的仓库,--bare参数为创建裸库
vim post-receive
#输入内容
#!/bin/sh
git --work-tree=/home/hexo --git-dir=/home/quxp/blog.git checkout -f

#赋予权限
chown quxp:quxp -R blog.git
cd /home/quxp/blog.git/hooks
chmod +x /home/repo/hexo-blog.git/hooks/post-receive #为钩子文件授予可执行权限(+x)
chown -R quxp:quxp /home/hexo #将仓库目录的所有权移交给git用户

修改本地config

#_config.yml
deploy:
type: git
repository: [email protected]:/home/quxp/blog.git
branch: master

nginx反向代理配置

user  nobody;
worker_processes 1;

events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

sendfile on;
keepalive_timeout 65;

server {
listen 80;
server_name quxingping.com;
location /drm {
return 301 https://blog.quxingping.com/drm;
}

location / {
return 301 https://blog.quxingping.com;
}

}
server {
listen 80;
server_name blog.quxingping.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name blog.quxingping.com;
#ssl on;
root /home/hexo;
index index.html index.htm;
ssl_certificate cert/blog.quxingping.com_bundle.crt;
ssl_certificate_key cert/blog.quxingping.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
add_header Cache-Control "public";
}

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
etag on;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
output_buffers 1 32k;



}
server {
listen 80;
server_name biji.quxingping.com;

proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 400 403 404 497 https://$host$uri$args;
}
}

本地提交到远程仓库

hexo d -g  # 提交部署到云服务
# 备份
git add .
git commit -m "xx"
git push

注意事项

因为多端写作,所以每次先拉取一下git上的文件。

git pull