Docker构建lnmp环境部署typecho

2020-08-27 15:44:04 浏览数 (1)

下载镜像

代码语言:javascript复制
docker pull cytopia/php-fpm-5.6
docker pull mariadb
docker pull nginx

查看本地镜像

代码语言:javascript复制
[root@linux /]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
mariadb               latest              7c1c380b0dd8        31 hours ago        407MB
nginx                 latest              2622e6cca7eb        4 weeks ago         132MB
cytopia/php-fpm-5.6   latest              2943ebf1ef81        2 years ago         1.1GB

自定义网络

创建一个lnmp专用网络

代码语言:javascript复制
[root@linux /]# docker network create lnmp  
[root@linux /]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
e517db42a8c9        bridge              bridge              local
af8272ab53c4        host                host                local
21930b09b6ae        lnmp                bridge              local
81db32272f98        none                null                local

PHP-FPM部署

代码语言:javascript复制
mkdir -p /docker/nginx/{www,html,www,conf,conf.d,log} docker run --name myphp-fpm -v /docker/nginx/www:/www --net lnmp -d cytopia/php-fpm-5.6

--name myphp-fpm : 将容器命名为 myphp-fpm。 -v /docker/nginx/www:/www : 将主机中项目的目录 www 挂载到容器的 /www

Nginx部署

代码语言:javascript复制
vim /docker/nginx/conf.d/defaults.conf
server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ [^/].php(/|$)  
        {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
        include        fastcgi_params;
    }
    }  

php:9000: 表示 php-fpm 服务的 URL. /www/: 是 myphp-fpm 中 php 文件的存储路径,映射到本地的 /docker/nginx/www 目录

启动nginx

代码语言:javascript复制
docker run --name runoob-php-nginx -p 1000:80 -d -v /docker/nginx/www:/usr/share/nginx/html:ro -v /docker/nginx/conf.d:/etc/nginx/conf.d:ro --net lnmp nginx

-p 1000:80: 端口映射,把 nginx 中的 80 映射到本地的 1000 端口。 /docker/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。 /docker/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。 --net lnmp 加入lnmp网络,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 php-fpm的IP,让 nginx 通过 php:9000 访问 php-fpm

接下来我们在 /docker/nginx/www 目录下创建 index.php

代码语言:javascript复制
<?php
echo phpinfo();
?>

通过浏览器访问http://IP:1000测试php页面是否解析成功

mariadb部署

代码语言:javascript复制
mkdir -p /docker/mariadb/data
docker run --name mariadb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -v /docker/mariadb/data:/var/lib/mysql --net lnmp -d mariadb

MYSQL_ROOT_PASSWORD=123 配置数据库root用户的密码为123

进入mariadb容器,数据库设置远程连接

代码语言:javascript复制
docker exec -it mariadb bash
mysql -uroot -p123
mysql> create database typecho;  #创建数据库typecho
mysql> grant all privileges  on *.* to 'root'@'%' identified by '123';  #为root添加远程连接的能力 
mysql> flush privileges;  #刷新

开始安装typecho

代码语言:javascript复制
cd /docker/nginx/www  #进入网站的根目录
wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz #下载typecho源码包
tar -xvzf 1.1-17.10.30-release.tar.gz  #解压源码包

浏览器访问http://IP:1000/

这里显示需要手动在根目录创建config.inc.php文件

如果登录后台页面,输入正确用户名密码后提示access denied进不去的解决方法 进入PHP-FPM 容器修改/etc/php.ini文件内的cgi.fix_pathinfo = 0修改成cgi.fix_pathinfo = 1

代码语言:javascript复制
docker exec -it myphp-fpm bash 
vim /etc/php.ini

修改完成后重启PHP-FPM就能访问后台了

0 人点赞