Docker部署个人博客

admin
admin 2019年05月10日
  • 在其它设备中阅读本文章

环境说明

  • 基本环境:docker,可以看作一个轻量级的虚拟机软件,可以运行各种容器包括 Linux 系统
  • 容器:Debian10,稳定著名的 linux 操作系统
  • typecho:基于 php 的开源博客网站,可以自定义主题和安装一些增强插件
  • nginx:linux 系统上常用的 web 服务器
  • sqlite:简单而又强大的本地数据库,保存博客的文章

安装 Docker

安装方法网络上有很多,如果是 Linux 系统,推荐安装 manjaro 操作系统,自带的包管理软件很强大,可以直接使用系统自带的包管理器安装 Docker

# sudo pacman -S docker

允许开机启动 Docker 守护进程

# sudo systemctl enable docker
# sudo systemctl start docker

执行 Docker 的一些命令可能会提示没有权限操作,将当前用户加入到 docker 组或者用 sudo 命令
# sudo gpasswd -a $USER docker

创建初始 debian10 容器和连接容器终端

执行 create 命令创建容器,启用容器终端功能并映射 80 端口(80 是 http 服务器默认开放的端口,如果要使用 https 协议要开放 443 端口,当然也可以指定其他端口,但是配置和使用都不方便),返回容器完整 id

# docker create -i -t -p 80:80 debian:10
eff30f458c68e5ae85d1e127dee02b9cc746cf17a9caeda721995e73e09a0900

docker ps -a可以查看刚才创建的容器信息
使用docker start <id>命令启动这个容器,id 可以是完整的或者是前缀(12 位)

# docker start eff30f458c68

exec 命令连接到已经启动的容器终端,登录用户默认为 root 用户,通过这个终端,我们可以控制容器,安装和运行软件

# docker exec -it eff30f458c68 /bin/bash
root@eff30f458c68:/#

在容器里配置 ngin+php-fpm 环境

默认的源比较慢,换成 163 的源

# echo -e "deb http://mirrors.163.com/debian/ buster main non-free contrib\n\
deb http://mirrors.163.com/debian/ buster-updates main non-free contrib\n\
deb http://mirrors.163.com/debian/ buster-backports main non-free contrib\n\
deb http://mirrors.163.com/debian-security/ buster/updates main non-free contrib" > /etc/apt/sources.list

安装 sqlite3 php php-fpm php-xml php-sqlite3 nginx wget 等软件

# apt update && apt install -y sqlite3 php php-fpm php-xml php-sqlite3 nginx wget

开启 PHP 的 sqlite 支持,去掉配置文件/etc/php/7.3/fpm/php.ini;extension=php_pdo_sqlite之前的分号(没有编辑器,使用 cat grep sed 方式编辑文件,也可以安装文本编辑器)

# sed -i "s/;extension=php_pdo_sqlite/extension=php_pdo_sqlite/g" /etc/php/7.3/fpm/php.ini

nginx 添加默认主页 index.php,在配置文件/etc/nginx/sites-available/default增加 php 主页的支持

# sed -i "s/index.html i/index.php index.html i/g" /etc/nginx/sites-available/default

nginx 开启 php 支持

# sed -i "56,63s/#//" /etc/nginx/sites-available/default
# sed -i "62s/^/#&/" /etc/nginx/sites-available/default
# sed -i "s#location ~ \\\.php#location ~ \.*\\\.php(\\\/\.*)*#" /etc/nginx/sites-available/default

主要是配置 /etc/php/7.0/fpm/php.ini 和 /etc/nginx/sites-available/default 两个文件,修改成如下内容:

# sed -n "897,900p" /etc/php/7.3/fpm/php.ini 
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
# sed -n "56,63p" /etc/nginx/sites-available/default   
    location ~ .*\.php(\/.*)*$ {
        include snippets/fastcgi-php.conf;
    
        # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        # With php-cgi (or other tcp sockets):
                # fastcgi_pass 127.0.0.1:9000;
    }

获取网站文件启用网站

使用 wget 下载最新网站并用 unzip 解压且替换 /var/www/html

# cd /var/www/
# wget http://typecho.org/build.tar.gz
# tar -xzvf build.tar.gz && rm build.tar.gz html -r && mv * html

启用 nginx 和 php-fpm 服务

# service php7.3-fpm start
# service nginx start

至此可以打开浏览器访问 127.0.0.1 查看自己博客了