之前我的 hexo 博客都是部署在 github 上,但是偶尔会访问不到,并且会有访问速度慢等问题,在前几天学完 docker
和 nginx
之后呢,自己尝试了一下部署到自己的服务器,发现成功了,特分享一下操作流程
我们知道 hexo
挂在 Github
的仓库中,仓库里有如下内容
这个目录结构和 hexo
编译出来的 public
文件夹其实是一样的
我们只需要把这个目录上传到我们的服务器即可,可以选择 nginx
做静态资源映射,也可以使用 Tomcat
的 webapps
,这里就演示一下 nginx
吧,直接从 docker
上拉一个
1、前期准备
mkdir -p /usr/doc/nginx/hexo/public
cd /usr/doc/nginx
vim nginx.conf
nginx.conf 的内容:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name 192.168.164.128;
location / {
root /usr/share/nginx/hexo;
}
}
include /etc/nginx/conf.d/*.conf;
}
2、容器初始化(请先安装 docker)
2.1、拉取镜像
docker pull nginx
2.2、创建容器
docker run -d\
-p 81:80\
-e TZ="Asia/Shanghai"\
--restart=always\
--name nginx\
-v /usr/doc/nginx/nginx.conf:/etc/nginx/nginx.conf\
-v /usr/doc/nginx/hexo/public:/usr/share/nginx/hexo\
nginx
-----------------------------------------------------
# 说明
# -p 指定暴露的端口,{暴露端口}:{容器内部端口}
# -e TZ 指定时区
# --restart 服务器重启后可自动启动
# --name 容器名
# -v /usr/doc/nginx/nginx.conf:/etc/nginx/nginx.conf
# 将服务器的 /usr/doc/nginx/nginx.conf 挂载到容器的 /etc/nginx/nginx.conf
# -v /usr/doc/nginx/hexo/public:/usr/share/nginx/hexo
# 将服务器的 /usr/doc/nginx/hexo/public 挂载到容器的 /usr/share/nginx/hexo
# 因为 nginx.conf 里配置过, 所以 /usr/share/nginx/hexo 就会被 nginx 作为静态资源代理展示
3、部署
3.1、打开 hexo
主目录,可以看到编译出来的 public
文件夹
3.2、上传
使用 scp
工具将 public
文件夹上传到 /usr/doc/nginx/hexo/
下
# scp 格式
scp 本地文件路径 服务器用户名@服务器域名或IP地址:服务器目录 # 上传文件
scp -r 本地文件夹路径 服务器用户名@服务器域名或IP地址:服务器目录 # 上传文件夹
如下:
回到服务器中查看 /usr/doc/nginx/hexo/public
就会有上传的内容了
结束
至此,读者便可访问自己服务器了,如我的域名为 cying.io
,nginx
暴露的端口为 81
,所以在浏览器地址栏输入 cying.io:81
即可访问
与 Github 博客 的访问效果是一样的
最后,读者可以在 hexo
项目的跟目录下写一个 upload.bat
脚本文件,免得每次手动写 scp
命令,如:
scp -r public root@Cying.io:/usr/doc/nginx/hexo/