博客搬家日记--搭建基于Docker的LNMP环境

背景

由于云主机马上就要到期了,所以最近对比了几家云服务器提供商。最终决定尝试一下 UCloud。于是不得不把原博客(typecho)迁移过来。下面是流水账式地记录一下过程。

过程记录

本想尝试按照以前的笔记重新搭建一套环境,然后再把数据导过来,但是一想到这一长串的步骤,以及可能碰到的问题就头疼,于是决定构建一个基于容器的 LNMP 环境,一劳永逸,也方便日后继续做博客迁移。当然如果有同学也想搭建基于 LNMP 的博客如 Typecho,则可以参考我的模板:-)(文末有 Github 链接)。
注:以下命令及配置都是基于 CentOS7

容器环境

由于此次环境的搭建是用的 docker,所以先保证机器上安装了 dockerdocker-compose

# 安装 docker
sudo yum install -y yum-utils
sudo yum-config-manager \
  --add-repo \
  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl enable docker
sudo systemctl start docker

# 安装 docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

LNMP 环境配置

构建基于 docker-compose,目录结构如下:

.
├── docker-compose.yml # docker-compose 配置文件
├── mysql
│   ├── conf # mysql 配置文件目录
│   │   ├── my.cnf
│   └── data # mysql 数据文件目录
├── nginx
│   ├── cert # nginx ssl 证书目录
│   │   ├── nightfield.com.cn.key
│   │   ├── nightfield.com.cn.pem
│   ├── conf # nginx 配置目录
│   │   ├── nightfield.com.cn.conf
│   ├── html # nginx Web 根目录
│   │   ├── info.php
│   └── log # nginx 日志目录
├── php
│   ├── conf # php 配置目录
│   │   └── php.ini
│   └── Dockerfile # php 的 Dockerfile 配置

可以看到主要是对应软件的一些配置文件。docker-compose.yml 文件内容如下:

version: "3"
services:
    nginx:
        image: nginx:latest
        container_name: nginx
        networks:
            - lnmp
        depends_on:
            - php
        ports:
            - "80:80"
            - "443:443"
        expose:
            - "80"
            - "443"
        volumes:
            - /opt/docker/nginx/html:/usr/share/nginx/html # nginx web 根目录
            - /opt/docker/nginx/conf/:/etc/nginx/conf.d # 配置目录
            - /opt/docker/nginx/log:/var/log/nginx # 日志目录
            - /opt/docker/nginx/cert:/etc/nginx/cert # ssl 证书目录
        links:
            - php
    php:
        build: # 由于 PHP 的构建相对较为复杂,所以用了 Dockerfile 的方式
            context: ./php
            dockerfile: Dockerfile
        container_name: php
        volumes:
            - /opt/docker/nginx/html:/usr/share/nginx/html # nginx web 根目录
            - /opt/docker/php/conf/:/usr/local/etc/php/conf.d # 配置目录
        networks:
            - lnmp
        depends_on:
            - mysql
        expose:
            - "9000"
    mysql:
        image: mysql:5.7
        container_name: mysql
        volumes:
            - /opt/docker/mysql/conf/:/etc/mysql/conf.d # 配置目录
            - /opt/docker/mysql/data:/var/lib/mysql # 数据目录
        environment:
            MYSQL_ROOT_PASSWORD: password # 改为自定义密码
        networks:
            - lnmp
        expose:
            - "3306"
        ports:
            - "3306:3306"

networks:
    lnmp:

Mysql

Mysql 的配置较为简单不再赘述,注意将对应的配置目录以及数据目录从容器中映射出来便于管理。

Nginx

Nginx 的配置从容器中映射出来,模版如下:

# https ssl, 对应 443 端口
server {
   
    listen       443 ssl;
    server_name  nightfield.com.cn; # 域名或者服务器 ip
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    index index.php;
    root         /usr/share/nginx/html;
    # ssl 配置
    ssl_certificate_key cert/nightfield.com.cn.key; # 证书 key
    ssl_certificate cert/nightfield.com.cn.pem; # 证书 pem
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_prefer_server_ciphers  on
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值