1.lnmp网络与目录规划

172.16.10.0/24

nginx:172.16.10.10
mysql:172.16.10.20
php:172.16.10.30
网站访问主目录:/wwwroot
nginx的配置文件:/docker/nginx
mysql持久化的目录: /docker/mysql
mysql 密码: Aa123456

2.起临时nginx容器获取nginx配置文件

[root@docker ~]# mkdir /docker /wwwroot
[root@docker ~]# docker run -itd --name test nginx
[root@docker ~]# docker cp test:/etc/nginx /docker/
[root@docker ~]# docker cp test:/usr/share/nginx/html /wwwroot/
[root@docker ~]# docker rm -f test

3.创建自定义网络

#创建自定义网络
docker network create -d bridge --subnet 172.16.10.0/24 --gateway 172.16.10.1 lnmp #服务器开启内核转发:
echo '1' >/proc/sys/net/ipv4/ip_forward #重启容器服务
systemctl restart docker

4. 启动php容器

docker run -itd --name lnmp-php7.4 \
-p 9000:9000 \
-v /wwwroot/html:/usr/share/nginx/html \
--network lnmp \
--ip 172.16.10.30 \
registry.cn-hangzhou.aliyuncs.com/chenleilei/php74:latest

5. 启动nginx容器

docker run -d --name lnmp-nginx \
-p 80:80 \
-p 443:443 \
-v /wwwroot/html:/usr/share/nginx/html \
-v /docker/nginx:/etc/nginx \
--network lnmp \
--ip 172.16.10.10 nginx #修改配置文件:
vim /docker/nginx/conf.d/default.conf [root@node02 conf.d]# egrep -v '#|^$' /docker/nginx/conf.d/default.conf
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /usr/share/nginx/html; #修改html所在目录
index index.php index.html index.htm; #添加默认首页文件 index.php
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
#解除PHP注释,改为如下:
location ~ \.php$ {
root /usr/share/nginx/html; #添加PHP解析能力
fastcgi_pass 172.16.10.30:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #修改为当前配置
include fastcgi_params;
}
} #server区段改为上面的配置后保存

6. 测试代码

docker restart lnmp-nginx lnmp-php7.4

cd /wwwroot/html
echo test > index.html
cat index.php <?php
phpinfo();
?> chmod -R a+w /wwwroot/html

7. 其他配置[php容器增加mysql支持]

部署动态站点需要赋予目录足够权限,推荐
docker exec -it lnmp-nginx bash
#chown -R www-data.www-data /usr/share/nginx/html 可以不用
chmod -R a+w /usr/share/nginx/html
exit chown -R root.root /wwwroot/html 此时已经可以运行php了,还有一些扩展需要部署如: GD支持 MySQL支持,可以在部署dede程序时看到
docker部署的php容器需要 安装扩展 #进入容器
docker exec -it lnmp-php7.4 bash
修改源:
sed -i 's#http://deb.debian.org#https://mirrors.163.com#g' /etc/apt/sources.list
apt-get update 安装软件支持:
apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng-dev libonig-dev
docker-php-ext-install gd mysqli pdo pdo_mysql mbstring shmop 安装完成后退出重启php容器
exit
docker restart lnmp-php7.4

没有安装扩展提示:

安装扩展后:

8. 启动mysql容器

#启动mysql
[root@docker html]# docker run -itd --name test -e MYSQL_ROOT_PASSWORD=Aa123456 registry.cn-hangzhou.aliyuncs.com/chenleilei/mysql5.7 #测试创建库
[root@docker html]# docker exec -it test bash
root@d46a7cc8407f:/# mysql -uroot -pAa123456
mysql> show databases;
mysql> create database test; mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec) mysql> exit
root@d46a7cc8407f:/var/lib/mysql# exit #获取mysql数据:
[root@docker html]# docker cp test:/var/lib/mysql /docker
[root@docker html]# docker rm -f test
[root@node02 conf.d]# ll /docker/mysql
total 188484
-rw-r----- 1 polkitd root 56 Jun 29 10:40 auto.cnf
-rw------- 1 polkitd root 1676 Jun 29 10:40 ca-key.pem
-rw-r--r-- 1 polkitd root 1112 Jun 29 10:40 ca.pem
-rw-r--r-- 1 polkitd root 1112 Jun 29 10:40 client-cert.pem
-rw------- 1 polkitd root 1680 Jun 29 10:40 client-key.pem
-rw-r----- 1 polkitd root 1352 Jun 29 10:40 ib_buffer_pool
-rw-r----- 1 polkitd root 79691776 Jun 29 10:45 ibdata1
-rw-r----- 1 polkitd root 50331648 Jun 29 10:45 ib_logfile0
-rw-r----- 1 polkitd root 50331648 Jun 29 10:40 ib_logfile1
-rw-r----- 1 polkitd input 12582912 Jun 29 10:45 ibtmp1
drwxr-x--- 2 polkitd root 4096 Jun 29 10:40 mysql
drwxr-x--- 2 polkitd root 8192 Jun 29 10:40 performance_schema
-rw------- 1 polkitd root 1676 Jun 29 10:40 private_key.pem
-rw-r--r-- 1 polkitd root 452 Jun 29 10:40 public_key.pem
-rw-r--r-- 1 polkitd root 1112 Jun 29 10:40 server-cert.pem
-rw------- 1 polkitd root 1680 Jun 29 10:40 server-key.pem
drwxr-x--- 2 polkitd root 8192 Jun 29 10:40 sys 启动mysql:
docker run -d --name lnmp_mysql \
--network lnmp --ip 172.16.10.20 \
-p 3306:3306 -p 33060:33060 \
-v /docker/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=Aa123456 \
registry.cn-hangzhou.aliyuncs.com/chenleilei/mysql5.7 \
--character-set-server=utf8 登录mysql:
[root@docker html]# docker exec -it lnmp_mysql bash
root@60b705b2b10e:/# mysql -uroot -p'Aa123456'
mysql> exit

9. 测试部署php项目

9.1 部署dedecms

# 进入数据库容器:
docker exec -it lnmp_mysql bash #创建运行wordpress的mysql数据库和用户: mysql> create database dede;
Query OK, 1 row affected (0.00 sec) mysql> grant all on dede.* to dede@'%' identified by 'dede';
Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec) #下载DedeCMS
#wget https://cn.wordpress.org/latest-zh_CN.tar.gz mkdir /wwwroot/html/dede
cd /wwwroot/html/dede
wget --no-check-certificate https://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7.96-UTF8.zip
unzip DedeCMS-V5.7.96-UTF8.zip
mv uploads up
mv up/* ./
rm -fr up [root@node02 dede]# ll
total 12816
drwxr-xr-x 2 root root 6 Jun 27 09:24 a
drwxr-xr-x 5 root root 38 Jun 27 09:24 assets
drwxr-xr-x 20 root root 4096 Jun 27 09:24 data
drwxr-xr-x 7 root root 12288 Jun 27 09:24 dede
-rw-r--r-- 1 root root 13052376 Jun 28 15:03 DedeCMS-V5.7.96-UTF8.zip
-rw-r--r-- 1 root root 16958 Dec 31 1979 favicon.ico
drwxr-xr-x 6 root root 227 Jun 27 09:24 images
drwxr-xr-x 15 root root 4096 Jun 27 09:24 include
-rw-r--r-- 1 root root 1392 Dec 31 1979 index.php
drwxr-xr-x 5 root root 304 Jun 27 09:24 install
-rw-r--r-- 1 root root 3474 Dec 31 1979 license.txt
drwxr-xr-x 3 root root 69 Jun 27 09:24 m
drwxr-xr-x 5 root root 4096 Jun 27 09:24 member
drwxr-xr-x 5 root root 4096 Jun 27 09:24 plus
-rw-r--r-- 1 root root 505 Dec 31 1979 robots.txt
drwxr-xr-x 2 root root 23 Jun 27 09:24 special
-rw-r--r-- 1 root root 998 Dec 31 1979 tags.php
drwxr-xr-x 6 root root 142 Jun 27 09:24 templets
drwxr-xr-x 8 root root 104 Jun 27 09:24 uploads #添加权限
[root@node02 html]# chmod -R a+w /wwwroot/html #nginx容器添加权限
docker exec -it lnmp-nginx bash
chown -R www-data.www-data /usr/share/nginx/html/dede
exit

后台登录不显示验证码经检查属于程序bug与配置无关,安装wordpress 无此故障

9.2 部署wordpress

创建数据库:
[root@node02 wordpress]# docker exec -it lnmp_mysql bash
root@059faa26e36a:/# mysql -uroot -p'Aa123456'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.32 MySQL Community Server (GPL) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec) mysql> grant all on wordpress.* to wordpress@'%' identified by 'wordpress';
Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec) mysql> exit
Bye
下载wordpress源码,解压到wordpress目录下
[root@node02 wordpress]# tar xf wordpress-4.7.3-zh_CN.tar.gz
[root@node02 wordpress]# mv wordpress/* .
[root@node02 wordpress]# chown -R root.root *

web安装页面:

目录授权:
[root@node02 html]# chmod -R 755 wordpress
[root@node02 html]# chmod -R a+w wordpress #应该只执行这个就可以了
[root@node02 html]# docker exec -it lnmp-nginx bash
root@42ceb54db60c:/# chown -R www-data.www-data /usr/share/nginx/html/wordpress



测试更新版本与安装插件:

docker lnmp配置的更多相关文章

  1. docker安装配置lnmp

    一.安装配置docker 1.下载docker:yum install -y docker 2.设置docker远程镜像地址为国内路径:curl -sSL https://get.daocloud.i ...

  2. PhpStorm连接Docker容器配置xdebug断点调试

    本教程主要演示xdebug在PhpStorm中配置方法. 一.环境说明 1.Mac笔记本(本教程演示过程使用的是Mac OS操作系统,和windows环境是有区别的,这一点需要特别注意): 2.在Ma ...

  3. 使用 Docker LNMP 部署 PHP 运行环境

    简介 Docker LNMP 是基于 Docker 的 PHP 集成开发环境. Github 地址:https://github.com/YanlongMa/docker-lnmp 包含软件 ngin ...

  4. Docker下配置双机热备PXC集群

    架构: 步骤: 1.安装centos7   ,设置宿主机IP:192.168.1.224 2.先更新yum软件管理器,再安装docker 1.yum -y update 2.yum install - ...

  5. 解决docker主机配置了DaoCloud.io的加速后重启失败问题Failed to start Docker Application Container Engine

    问题说明 正常运行的docker主机配置了DaoCloud.io加速后重启报如下错 解决过程 问题原因: 重新配置加速器后发现,daocloud的配置信息是写在/etc/docker/daemon.j ...

  6. CentOS上安装 Docker-CE以及Docker 加速器配置

    在CentOS 7.0上安装 Docker-CE 官方源安装教程 https://docs.docker.com/install/linux/docker-ce/centos/#install-usi ...

  7. docker安装配置gitlab详细过程

    docker安装配置gitlab详细过程   获取镜像 1.方法一 1 docker pull beginor/gitlab-ce:11.0.1-ce.0 2.方法二如果服务器网路不好或者pull不下 ...

  8. docker容器配置独立ip

    一般安装docker后都会通过端口转发的方式使用网络,比如 “-p 2294:22” 就将2294抓发到22端口来提供sftp服务,这样使用起来没有问题.但端口号很难记忆,如果前边有nginx等抓发工 ...

  9. docker——网络配置

    一.网络启动与配置参数 Docker启动时会在主机上自动创建一个docker0虚拟网桥,实际上是一个Linux网桥,可以理解为一个软件交换机,它会在挂载其上的接口之间进行数据转发.同时,Docker随 ...

  10. Docker中配置国内镜像

    1. 为什么要为docker配置国内镜像   在正常情况下,docker有一个默认连接的国外官方镜像,在国外的网友访问该官方镜像自然不成问题,但是国内毕竟不是国外,由于国情不同,中国的网络访问国外官方 ...

随机推荐

  1. Ez_pycode_dis qsnctfwp

    Python字节码基础 下载相关文件并打开,其中为 Python 字节码. 字节码格式为 源码行号 | 指令在函数中的偏移 | 指令符号 | 指令参数 | 实际参数值 根据上述字节码格式以及文件内容开 ...

  2. pytest接口自动化搭建经验

    前言:目前公司的主要产品是一个web类型的产品:需要做一些自动化,目前的想法是只做接口自动化,不做ui的一个自动化,目前的思路是先对主流程做正常校验,后期再对每一个接口做校验: 一.版本信息: pyt ...

  3. uniapp小程序页面实现元素与胶囊进行居中对齐

    无论是否为uni,关键在于获取胶囊中点的位置,如果是原生小程序根据小程序文档获取,其余逻辑处理是一致的 代码语法都只是技术选择,重点是逻辑处理,对于技术的运用,代码技术好比是积木,好的程序就是好的组合 ...

  4. 红日安全vulnstack (一)

    网络拓扑图 靶机参考文章 CS/MSF派发shell 环境搭建 IP搭建教程 本机双网卡 65网段和83网段是自己本机电脑(虚拟机)中的网卡, 靶机外网的IP需要借助我们这两个网段之一出网 Kali ...

  5. 力扣551(java)-学生出勤记录Ⅰ(简单)

    题目: 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤'L':Late,迟到'P':Pres ...

  6. 力扣7(java)-整数反转(中等)

    题目: 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果. 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0. 假设环境不允许存 ...

  7. 巧用API网关构建大型应用体系架构

    简介: 近期阿里云重磅发布了BizWorks一体化的云原生应用的开发和运营平台,内置阿里巴巴业务中台构建的最佳技术实践.它已经将API网关作为关键组件融入其中,并且基于API网关为用户提供能力开放平台 ...

  8. Flagger on ASM·基于Mixerless Telemetry实现渐进式灰度发布系列 1 遥测数据

    简介: 服务网格ASM的Mixerless Telemetry技术,为业务容器提供了无侵入式的遥测数据.遥测数据一方面作为监控指标被ARMPS/prometheus采集,用于服务网格可观测性:另一方面 ...

  9. Navicat Premium 16永久激活

    链接: https://pan.baidu.com/s/1wG0IGWOpgF1tmQRxcsvkBw 提取码: gtmk

  10. 第三章-常用的渗透测试工具-(sqlmap)

    常用渗透测试工具 1.sqlmap 支持的数据库:MySQL.Oracle.PostgreSQL.SQL Server.Access.IBM DB2.SQLite.Firebird.Sybase.SA ...