美文网首页
使用docker搭建nginx挂载hexo博客

使用docker搭建nginx挂载hexo博客

作者: kevinfaith | 来源:发表于2018-10-09 10:44 被阅读130次

    介绍

    原先我的博客是挂载在github pages上面的,但是因为github pages的服务器在国外,国内访问速度就会有点感人,于是就想把我的博客挂载在自己阿里云的服务器上面。

    环境

    1. 一台有独立ip的服务器(centos 7)
    2. 在本地搭建好了hexo框架

    实现

    因为我的博客是hexo写的,众所周知这是一个快速生成静态博客的框架,既然是静态网页,web服务器方面当然是选择nginx了,为什么选择nginx不选择apache呢,因为nginx轻量级,同样起web服务,比apache 占用更少的内存及资源、抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能、高度模块化的设计,编写模块相对简单、社区活跃。等等的优点。
    既然选择了nginx,那选择如何搭建了,普通安装或者编译nginx,多多少少会有各种残留,这对一个系统洁癖的人来说,却是非常痛苦的,所以我选择了使用docker安装nginx。

    获取nginx镜像

    1. 拉取镜像:

      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端口。

    相关文章

      网友评论

          本文标题:使用docker搭建nginx挂载hexo博客

          本文链接:https://www.haomeiwen.com/subject/nmkeaftx.html