介绍
原先我的博客是挂载在github pages上面的,但是因为github pages的服务器在国外,国内访问速度就会有点感人,于是就想把我的博客挂载在自己阿里云的服务器上面。
环境
- 一台有独立ip的服务器(centos 7)
- 在本地搭建好了hexo框架
实现
因为我的博客是hexo写的,众所周知这是一个快速生成静态博客的框架,既然是静态网页,web服务器方面当然是选择nginx了,为什么选择nginx不选择apache呢,因为nginx轻量级,同样起web服务,比apache 占用更少的内存及资源、抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能、高度模块化的设计,编写模块相对简单、社区活跃。等等的优点。
既然选择了nginx,那选择如何搭建了,普通安装或者编译nginx,多多少少会有各种残留,这对一个系统洁癖的人来说,却是非常痛苦的,所以我选择了使用docker安装nginx。
获取nginx镜像
-
拉取镜像:
docker search nginx
pull第一个nginx官方的镜像
docker pull nginx
查看获取到的镜像
➜ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 06144b287844 2 weeks ago 109MB
可以看到镜像已经pull下来了
安装docker
➜ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
然后进入阿里云docker库首页https://dev.aliyun.com/
登入
然后进入管理中心
点击加速器,复制链接
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["粘贴那个链接"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
安装docker-compose
下载shell脚本
➜ sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
修改权限
➜ sudo chmod +x /usr/local/bin/docker-compose
测试
➜ docker-compose --version
docker-compose version 1.22.0, build 1719ceb
通过docker-compose管理生成容器
➜ cd /home/
➜ mkdir blog && cd blog //创建一个blog的目录
➜ vi docker-compose.yml //创建一个名叫docker-compose.yml的文件
#写入
version: '3'
services:
nginx:
restart: 'always'
image: 'nginx'
ports:
- '80:80'
- '443:443'
volumes:
- '/home/blog/www/public:/usr/share/nginx/html' #这里的/home/blog/www/public是主机的目录,意思是把这个目录挂载到容器的/usr/share/nginx/html目录中,该目录防止了网页的静态文件
- '/home/blog/log:/var/log/nginx/' #同理,log文件夹里是nginx的日志文件
- '/home/blog/conf:/etc/nginx/conf.d' #同理,配置文件
#:wq保存退出
创建挂载目录
在/home/blog/下创建/www、/log、/conf三个目录
➜ mkdir {www,log,conf}
➜ cd conf
➜ vi default.conf
添加以下内容
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
root /usr/share/nginx/html;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
## 下面三行是添加的。
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
上传静态文件
在本地hexo的博客目录下
运行hexo g
生成静态文件
他会在该目录下生成一个public的一个文件,里面是关于你博客的所有静态文件,然后这个文件scp到服务器的/home/blog/www/下
➜ scp /home/kevin/blog/public root@119.23.241.xxxx:/home/blog/www
# /home/kevin/blog/public是你本地的public目录地址
# 119.23.24.xxxx表示你远程服务器的地址
# /home/blog/www/public表示上传到远程服务器的位置
然后进入服务器端
➜ cd /home/blog
➜ docker-compose up -d
# -d表示后台运行的意思
然后在浏览器输入你服务器的ip
发现博客已经挂在成功了,
因为我的服务器是阿里云的,所以还有加一步,去阿里的控制台配置防火墙入口规则,添加80端口和443端口。
网友评论