容器化部署wordpress个人博客系统lnmp环境[自定义网络]

容器化部署个人博客系统lnmp环境

#告警:
WARNING: IPv4 forwarding is disabled. Networking will not work.
96c083a8b58112f64e84baf73810197ea8ba4b48fa292bfb9635b92e6efc4e5c
因为转发没开,解决如下: 
echo  1 >/proc/sys/net/ipv4/ip_forward
sysctl -p


0. 配置源
yum install -y docker-ce
rm -f /etc/docker/*
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ajvcw8qn.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
systemctl enable docker.service

1. 自定义docker网络 network_lnmp
[root@k8s-master ~]# docker network create network_lnmp
742504219a6955425beb43f5cc014376a1efea2ed5b78b939f7cb92cc8879c83

2. mysql配置
2.1. 创建挂载卷:
docker volume create mysql-vol
2.2. 创建本地持久化卷
mkdir -p /var/lib/mysql/
挂载方法:
方法1:
--name=mysql-vol --mount src=mysql-vol,dst=/var/lib/mysql/
方法2:
--name=mysql-vol -v mysql-vol:/usr/share/nginx/html nginx

2.3 mysql容器创建与登录测试,并挂载到mysql-vol:
创建:
mkdir -p /var/lib/mysql 
docker  run -d --name lnmp_mysql 
--net network_lnmp 
--mount src=mysql-vol,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress mysql:5.7 
--character-set-server=utf8

登录测试:
docker inspect lnmp_mysql|sed -nr 's#^.*Address": "(.*)"\,.*$#1#gp'|egrep -o "([0-9]{1,3}.){3}[0-9]"
172.18.0.2   <---获取mysql容器IP

连接mysql测试:
[root@docker-02 ~]# yum install -y mysql
[root@docker-02 ~]# mysql -uroot -p123456  wordpress -h 172.18.0.2
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.7.30 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MySQL [(none)]> 

测试链接成功
---------------------------------------------------------------------
#创建授权wordpress数据库:
创建相关数据库:
mysql -uroot -p123456  -h 172.18.0.2

#创建wordpress数据库
create database wordpress;

#wordpress数据库权限配置,只允许本地访问 用户名 wordpress 密码 123456
grant all on wordpress.* to wordpress@'%' identified by '123456';

#刷新权限
flush privileges;

#测试新建账号 wordpress 连接数据库:
mysql -uwordpress -p123456 -h 172.18.0.2
[root@docker-02 _data]# mysql -uwordpress -p123456 -h 172.18.0.2
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MySQL connection id is 8
Server version: 5.7.30 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MySQL [(none)]> 



3. 创建php容器:
规划:
创建网站数据目录 www-vol 启动时指定解析该目录

创建:
 docker run -d 
 --name lnmp_php-1 
 --net network_lnmp 
 -p 9000:9000  
 -v www-vol:/usr/share/nginx/html 
 registry.cn-hangzhou.aliyuncs.com/iyunw/php:7.1
这里是将本地/www目录挂载到容器中的/usr/share/nginx/html

创建用户:
useradd -s /sbin/nologin -M www-data -u 1000
清理数据卷:
docker volume ls --filter dangling=true  过滤出没有使用的卷,然后使用"docker volume rm [卷名]"删除


#---------------------------------------------------------------------------------------------------------------
3. nginx容器
 3.1 准备目录和配置文件:
     mkdir  /etc/nginx/conf.d/ -p
     vim /etc/nginx/conf.d/nginx.conf
#---nginx.conf--------------------------------------------------------------------------------------------------
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}
#---nginx.conf-----------默认就有不用创建------------------------------------------------------------------------


添加server:
[root@docker-02 _data]# vim /root/nginx_php.conf
#---------------include /root/nginx_php.conf-----------------------------#
 server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        #root         /usr/share/nginx/html;
        index index.php index.html;
       # include /etc/nginx/default.d/*.conf;
    location / {   
     root         /usr/share/nginx/html;
    }

    location ~* .php$ {
    root           /usr/share/nginx/html;
    fastcgi_pass   lnmp_php-1:9000;    ## php的容器名,如果容器名不存在就不会启动容器。注意
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
    }
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
#---------------include /root/nginx_php.conf-----------------------------#

5. 创建nginx容器挂载相关配置文件和目录:
 网页目录卷: www-vol
 5.1. 创建挂载卷:
docker volume create www-vol
通过 docker inspect www-vol 可以看到这个卷所在的目录
挂载方法:
方法2:
-v www-vol:/usr/share/nginx/html -v /root/nginx_php.conf:/etc/nginx/conf.d/www.conf
 
 5.2 起容器:
docker run -d --name lnmp_nginx 
-p 80:80 --net network_lnmp 
-v www-vol:/usr/share/nginx/html 
-v /root/nginx_php.conf:/etc/nginx/conf.d/www.conf nginx

 5.3 容器里创建一个用户,用于和php交互:
 useradd -s /sbin/nologin -M www-data -u 1000

#注意,yum安装的时候这个index.html可能就是个软连接,她并不在容器中,而是在宿主机中,并且没有被映射到容器
#此时访问时会出现403错误
#只要删除这些文件。重新创建文件即可
#如:echo hello >/usr/share/nginx/html/index.html [容器中的目录]
#如:echo hello >>/var/lib/docker/volumes/www-vol/_data/index.html [映射出来的目录]
------------------------------------------------------------------------------------------------------

PHP解析测试:

echo '<?php phpinfo(); ?>' >/var/lib/docker/volumes/www-vol/_data/index.php

php-fpm.conf下载地址:
https://www.chenleilei.net/soft/php-fpm.conf

wordpress安装配置:

下载安装包:
cd /var/lib/docker/volumes/www-vol/_data/
wget https://cn.wordpress.org/latest-zh_CN.zip
unzip latest-zh_CN.zip
mv wordpress/* ./
rm -fr wordpress

数据库名:wordpress
用户名:  wordpress 
密码:    123456

网站目录权限设置:
useradd -u 1000 www-data -M -s /sbin/nologin
chown -R 755 /var/lib/docker/volumes/www-vol/_data
chown -R www-data /var/lib/docker/volumes/www-vol/_data

1. 进入网页数据目录(docker inspect www-vol):
cd /var/lib/docker/volumes/www-vol/_data
echo '<?php phpinfo(); ?>' >./index1.php
访问查看测试页面 index1.php ,如果正常,就将wordpress网站文件放到该目录下

2. 安装wordpress
 数据库地址:172.18.0.2 [通过 docker inspect lnmp_mysql |grep IPA 查看]
   数据库名: wordpress
     用户名:wordpress
       密码:123456
       
 链接测试:mysql -uwordpress -p123456 -h 172.18.0.2

图形页面:

出现这个页面,请复制他的内容在服务器网站根目录 创建一个文件 wp-config.php 然后内容写入保存再次访问。

原文地址:https://www.cnblogs.com/superlinux/p/13289361.html