• 容器化部署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 然后内容写入保存再次访问。

  • 相关阅读:
    Failed to start mysqld.service: Unit not found
    Nginx转发前后端分离跨域引发的问题-转发请求header头中含有下划线,无法转发取值
    云上Centos7新硬盘挂载流程
    马哥教育第二阶段考试
    Linux集群准备-同步
    Lucene查询语法
    权限系统设计
    docker compose thinkphp5.1 lnmp环境搭建加项目部署全过程
    docker compose 的使用
    [转载]PHP-FPM
  • 原文地址:https://www.cnblogs.com/superlinux/p/13289361.html
Copyright © 2020-2023  润新知