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. Docker compose 部署 nginx+php

    Docker compose 部署 nginx+php 拉取Docker镜像 docker pull nginx:1.21.6 docker pull php:7.4.28-fpm 创建docker- ...

  2. 力扣175(MySQL)-组合两个表(简单)

    题目: 表: Person 表: Address 编写一个SQL查询来报告 Person 表中每个人的姓.名.城市和州.如果 personId 的地址不在 Address 表中,则报告为空  null ...

  3. Spring Boot Serverless 实战系列“架构篇” | 光速入门函数计算

    ​简介:如何以 Serverless 的方式运行 Spring Boot 应用? ​ 作者:西流(阿里云函数计算专家) Spring Boot 是基于 Java Spring 框架的套件,它预装了 S ...

  4. [GPT] ./ssh/known_hosts 是什么

      ~/.ssh/known_hosts 是一个SSH客户端用来存储已知的远程主机的公钥的文件,这些公钥用于验证连接到远程主机时它们是否为真实可信的主机. 当你首次通过SSH连接到一个新的远程主机时, ...

  5. [ML] 详解 ChatGLM-webui 的启动使用与 ChatGLM-6B 常见问题

      1. ChatGLM-webui 总共支持以下几个命令选项: 2. 以 windows 为例,在 PowerShell 里运行命令: # 安装依赖 pip install torch==1.13. ...

  6. [FAQ] uni-app 运行微信小程序 main.wxss 报错 unexpected token "$"

    检查一下你是否在 App.vue 中有手动操作引入过 uni.scss,比如下面的 import: <style lang="scss"> @import url(&q ...

  7. dotnet 使用 XWT 构建跨平台客户端 入门篇

    本文告诉大家如何入门开始开发一个基于 mono 组织开源的 XWT 跨平台客户端 UI 框架的应用,本文的 xwt 是在 GitHub 上完全开源的,基于 MIT 协议的,底层采用 GTK# 的 UI ...

  8. ESP32 分区表

    当你编译程序,发现 app partition is too small for binary 错误的时候,就涉及到 ESP32 分区表的内容了. 一.基本概念 在了解分区之前,先了解一下以下概率,便 ...

  9. js部分数组方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 一分钟部署 Llama3 中文大模型,没别的,就是快

    前段时间百度创始人李彦宏信誓旦旦地说开源大模型会越来越落后,闭源模型会持续领先.随后小扎同学就给了他当头一棒,向他展示了什么叫做顶级开源大模型. 美国当地时间4月18日,Meta 在官网上发布了两款开 ...