使用docker在CentOS 7上安装php+mysql+nginx环境教程并运行WordPress

news2024/9/9 1:31:48

文章目录

  • 一、安装docker
    • 1、切换yum源并更新系统
    • 2、卸载旧版docker
    • 3、配置Docker的yum库
    • 4、安装Docker
    • 5、启动和校验Docker
    • 6、配置镜像加速
      • 6.1、注册阿里云账号
      • 6.2、开通镜像服务
      • 6.3、配置镜像加速
  • 二、部署php+mysql+nginx环境
    • 1、准备目录结构
    • 2、拉取镜像
    • 3、运行容器并从中拷贝出需要的配置文件
    • 4、修改配置文件
    • 5、启动容器
      • 5.1、使用docker compose方式启动(推荐)
        • 5.1.1、创建docker-compose.yml文件
        • 5.1.2、修改目录权限
      • 5.1.3、修改MySQL的root密码
        • 5.1.3、停止并删除容器
      • 5.2、使用docker run命令启动(不推荐)
        • 5.2.1、创建网络
        • 5.2.2、启动容器
      • 5.2.3、修改MySQL的root密码
      • 5.2.4、docker run命令和docker-compose.yml转换——Composerize
  • 三、安装WordPress
    • 1、创建数据库
    • 2、创建MySQL用户并授权
    • 3、导入数据库(初始安装不需要这一步)
    • 4、解压代码到工程目录
    • 5、修改WordPress配置文件
    • 6、增加nginx配置文件
    • 7、重启nginx容器
      • 7.1、方式一:使用docker命令重启
      • 7.2、方式二:使用docker compose命令重启
    • 8、访问WordPress
    • 9、使用Dockerfile构建安装了扩展的php镜像
  • 四、安装https证书
  • 参考资料

前言:为什么会写这篇文章,一切都是因为手欠。两周前,我准备在服务器上安装docker,就先更新了yum源,并执行了yum update命令,但由于嫌弃yum更新太慢就中断了命令,后来发现命令并没有中断,而是在后台运行,心太急,就不相等,就想重启服务器之后重新安装,然后就执行了reboot命令,然后我的服务器就挂了,无奈只能初始化重装了。之前一直采用的是本地化安装php+nginx+mysql的方式,这次正好重装,就想试试用docker安装这个环境,然后过程中自己也踩了一些坑,所以写一篇文章记录一下,避免过后就忘记了。

写在前面:本文适合有Linux和Docker基础的人,如果不了解基础的Linux命令和基础的docker命令看起来可能会有点困难~~

一、安装docker

1、切换yum源并更新系统

本案例是基于阿里云服务器CentOS 7操作系统为宿主机进行的,所以,第一步为切换宿主机的yum源,依次执行以下命令即可(以下命令需要以root权限执行,如果不是以root身份登录的,需要在每条命令前面加上sudo )。

# 进入yum源存放路径
cd /etc/yum.repos.d/
# 备份初始的yum源
cp CentOS-Base.repo CentOS-Base.repo.bak
# 下载阿里云的yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清除YUM缓存
yum clean
# 生成新的缓存
yum makecache
# 更新系统
yum update

注意:尤其是最后一条yum update命令,一般会需要较长时间,中途不要中断!!!

2、卸载旧版docker

如果你的服务器或操作系统中已经安装有docker,需要先进行卸载,命令如下:

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine \
    docker-selinux 

在安装docker这部分,可以参考这个链接进行:安装docker参考资料

3、配置Docker的yum库

配置过程依次执行以下命令:

# 首先需要安装yum工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# 安装成功后,执行命令,配置Docker的yum源(更新为阿里云源,否则直连国外,如果你的服务器没有梯子,可能会导致拉取镜像失败):
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum,建立缓存
yum makecache fast

4、安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

5、启动和校验Docker

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker

# 重启
systemctl restart docker

# 设置开机自启
systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

6、配置镜像加速

这里以阿里云镜像加速为例。

6.1、注册阿里云账号

访问阿里云官网,并注册一个账号。阿里云官网:https://www.aliyun.com/

6.2、开通镜像服务

在阿里云的首页最上方,找到产品-容器-容器镜像服务 ACR,然后

在这里插入图片描述
点击后进入控制台:
在这里插入图片描述
首次可能需要选择立刻开通,然后进入控制台。

6.3、配置镜像加速

找到镜像工具下的镜像加速器:
在这里插入图片描述
页面向下滚动,即可找到配置的文档说明:
在这里插入图片描述
具体命令如下(如果不是以root身份登录的,则需要在每个命令前追加sudo ):

# 创建目录
mkdir -p /etc/docker

# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF

# 重新加载配置
systemctl daemon-reload

# 重启Docker
systemctl restart docker

二、部署php+mysql+nginx环境

先说一下大概的思路:先创建默认的容器,并从容器中拷贝出必要的配置文件,然后再根据实际需求将容器中相关的目录和文件映射到宿主机上,并安装对应的扩展,最后使用docker compose实现一键创建。

1、准备目录结构

为了使docker能够按照我们的需求运行,我们需要将docker容器中的一些特殊目录和文件映射到宿主机上,以便我们修改配置、拷贝工程等操作,这里按本人的习惯组织目录结构,具体目录结构如下:

/
|- alidata
		|- server
			|- mysql
				|- conf
				|- data
				|- init
			|- nginx
				|- cert
				|- conf.d
			|- php
				|- conf
					|- conf.d
		|- wwwroot
		|- logs
			|- mysql
			|- nginx
			|- php

对上述目录结构进行一个简短说明

  • 在根目录下创建/alidata目录,用于存放docker容器映射出来的各种目录和文件;
  • 所有的容器运行所需的目录和文件都存放在/alidata/server目录下;
  • 所有的日志文件都存放在/alidata/logs目录下;
  • 所有的工程运行代码都存放在/alidata/wwwroot目录下。
  • /alidata/server/mysql/conf目录存放mysql配置文件;
  • /alidata/server/mysql/data目录存放mysql数据文件;
  • /alidata/server/mysql/init目录存放mysql初始化脚本;
  • /alidata/server/nginx/cert目录存放https证书;
  • /alidata/server/nginx/conf.d目录存放nginx单个网站的配置文件(子配置文件);
  • /alidata/server/nginx/目录存放nginx.conf配置文件;
  • /alidata/server/php/conf目录存php配置文件;
  • /alidata/server/php/conf/conf.d目录存php的Sodium 扩展的配置文件。

按照上述目录结构常见文件夹:

mkdir -p /alidata/server/mysql/conf
mkdir -p /alidata/server/mysql/data
mkdir -p /alidata/server/mysql/init

mkdir -p /alidata/server/nginx/cert
mkdir -p /alidata/server/nginx/conf.d

mkdir -p /alidata/server/php/conf/conf.d

mkdir -p /alidata/wwwroot

mkdir -p /alidata/logs/mysql
mkdir -p /alidata/logs/nginx
mkdir -p /alidata/logs/php

2、拉取镜像

由于这个环境是准备跑WordPress的,所以php选的7.4.27-fpm版本,而mysql和nginx都是最新版。

# 拉取nginx镜像
docker pull nginx

# 拉取mysql镜像
docker pull mysql

# 拉取php镜像
docker pull php:7.4.27-fpm

# 查看镜像下载情况
docker images

如果能够看到以下显示,则表示拉取成功
在这里插入图片描述

3、运行容器并从中拷贝出需要的配置文件

在阅读下面的内容时需要注意拷贝的到底是文件还是文件夹!!!

  • 运行PHP容器
# 启动php容器并在后台运行
docker run -d --name php-fpm -p 9000:9000  php:7.4.27-fpm

# 查看运行情况
docker ps -a

如果能够看到以下效果代表php容器启动成功
在这里插入图片描述

# 通过docker cp命令将php配置文件拷贝到宿主机对应目录,注意,这里我使用的php容器的名称,如果在上面docker run命令指定的名称不是php-fpm需要替换成对应的容器名称
# 将php容器中的/usr/local/etc/php/conf.d/目录下的所有文件,拷贝到宿主机的/alidata/server/php/conf/conf.d/目录下
docker cp php-fpm:/usr/local/etc/php/conf.d/* /alidata/server/php/conf/conf.d
# 将php容器中的/usr/local/etc/php/php.ini-production文件,拷贝到宿主机的/alidata/server/php/conf/目录下,并改名为php.ini
docker cp php-fpm:/usr/local/etc/php/php.ini-production /alidata/server/php/conf/php.ini

# 配置文件拷贝完毕,停止并移除php容器
docker stop php-fpm
docker rm php-fpm
  • 运行nginx容器
# 启动nginx容器并在后台运行
docker run 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1959232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Opencv】模糊

消除噪声 用该像素周围的平均值代替该像素值 4个函数 blur():最经典的 import os import cv2 img cv2.imread(os.path.join(.,dog.jpg)) k_size 7 #窗口大小&#xff0c;数字越大&#xff0c;模糊越强 img_blur cv2.blur(img,(k_size,k_size)) #窗口是正方形&#xff…

用依赖倒置和控制反转,突破Golang循环调用限制之后的思考

在软件开发中&#xff0c;随着项目规模的扩大和业务逻辑的复杂化&#xff0c;重构代码变得越来越重要。本文将介绍如何在既有代码基础上&#xff0c;通过依赖倒置&#xff08;DIP&#xff09;和控制反转&#xff08;IoC&#xff09;&#xff0c;实现新增加的代码可以循环引用到…

UI设计经验心得:优化设计流程与实战技巧分享

随着互联网的快速发展&#xff0c;UI 设计在中国也逐渐发展起来。UI 设计的目的不仅仅是让用户享受视觉享受&#xff0c;而是解决用户如何与互联网设备互动。因此&#xff0c;UI 设计是通过深入研究用户的使用习惯和操作逻辑来设计界面的互动和视觉效果。那么&#xff0c;UI 设…

邮箱API在CRM系统中如何高效的应用与集成?

邮箱API的高级功能和使用指南&#xff1f;怎么安全集成邮箱API&#xff1f; CRM系统已成为企业与客户保持联系的关键工具。通过集成邮箱API&#xff0c;企业可以大幅提升CRM系统的功能和效率。AokSend将探讨邮箱API在CRM系统中的高效应用与集成。 邮箱API&#xff1a;主要功能…

龙迅LT8642UXE 矩阵HDMI *4转HDMI *2输出切换芯片,支持HDMI 2.0,可带HDCP

LT8642UXE描述&#xff1a; LT8642UXE HDMI2.0/1.4交换机具有4&#xff1a;2的开关&#xff0c;符合HDMI2.0/1.4规格&#xff0c;最大6Gbps高速数据速率&#xff0c;自适应均衡RX输入和预先强调的TX输出&#xff0c;以支持长电缆应用程序。LT8642UXE HDMI2.0/1.4交换机自动检测…

JVM—运行时数据区域

Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 1、程序计数器—线程私有 字节码解释器工作时通过改变这个计数器的值&#xff0c;选取下一条执行的字节码指令。程序计数器是程序控制的指示器&#xff0c;分支、循环、跳转、异常处理、线…

适合证券公司的跨网传输解决方案,了解一下

证券公司由于其业务特性&#xff0c;涉及大量的敏感财务数据和交易信息&#xff0c;因此通常会在内部实施网络隔离措施。目的是为了保护数据免受未授权访问和网络攻击&#xff0c;确保数据的安全性和保密性&#xff0c;因此急需寻找安全可靠的跨网传输解决方案&#xff0c;实现…

拆解了数百个独立站,我们总结的高转化页面布局精华

高转化的独立站的页面布局都具备什么要素呢&#xff1f; 我们研究了几百个独立站&#xff0c;结合我们自己的项目经验&#xff0c;总结出转化率相对高的网站布局&#xff0c;都有以下注意的要点清单&#xff1a; 1 品牌Logo基本放在头部左边或者中间 2 首屏大banner 3 社交媒…

【可能是全网最丝滑的LangChain教程】十九、LangChain进阶之Agents

幸福&#xff0c;不是长生不老&#xff0c;不是大鱼大肉&#xff0c;不是权倾朝野。幸福是每一个微小的生活愿望达成。当你想吃的时候有得吃&#xff0c;想被爱的时候有人来爱你。 01 Agent介绍 在LangChain中&#xff0c;Agent 是一个核心概念&#xff0c;它代表了一种能够利…

CTF Web信息搜集 25000字详解

目录 前言信息收集常见信息分类域名信息whois备案CDN子域名解析记录 旁站C段服务器信息端口服务器类型数据库类型waf防火墙 网站信息备份文件备份文件常见的后缀名备份文件常见的文件名gedit备份文件vim备份文件收集方法 敏感目录CMS类型&#xff08;指纹识别&#xff09;探针泄…

牛客JS题(十二)列表动态渲染

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 忍者码风reduce注意事项 题干&#xff1a; 我的答案 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"></head><body><ul></ul><…

决策树 和 集成学习、随机森林

决策树是非参数学习算法&#xff0c;可以解决分类问题&#xff0c;天然可以解决多分类问题&#xff08;不同于逻辑回归或者SVM&#xff0c;需要通过OVR&#xff0c;OVO的方法&#xff09;&#xff0c;也可以解决回归问题&#xff0c;甚至是多输出任务&#xff0c;并且决策树有非…

浅谈监听器之后端监听器

浅谈监听器之后端监听器 “后端监听器”&#xff08;Backend Listener&#xff09;是一种高级功能&#xff0c;用于异步地将测试结果数据发送至外部系统&#xff0c;如数据库、消息队列或时间序列数据库等&#xff0c;以便于长期存储、实时分析和可视化展示。 后端监听器的作…

python 可视化探索(二):高级图表与组合图表

总结&#xff1a;本文为和鲸python 可视化探索训练营资料整理而来&#xff0c;加入了自己的理解&#xff08;by GPT4o&#xff09; 原作者&#xff1a;作者&#xff1a;大话数据分析&#xff0c;知乎、公众号【大话数据分析】主理人&#xff0c;5年数据分析经验&#xff0c;前…

centos安装crictl

上章文章已经讲诉了如何安装centos安装containerd-CSDN博客&#xff0c;本文章讲解如何安装crictl 一、官网安装说明文档&#xff0c;官网 二、二进制安装 #!/bin/sh VERSION"v1.30.0" # check latest version in /releases page wget https://github.com/kubernet…

IDEA 本地有jar包依赖文件,但是所有引用的jar包全部爆红

前端时间 看源码&#xff0c;下载源码额按钮不见了&#xff0c;折腾了很久&#xff0c;遂打算重新安装idea&#xff0c;但是重新安装后&#xff0c;发现代码全都爆红&#xff0c;按照晚上说的删除idea 文件夹&#xff0c;idea缓存删除&#xff0c;都不好使&#xff0c;但是看到…

PMP冲刺题及知识点整理

PMP题目整理 冲刺题1错题整理冲刺题1相关重点记录&#xff1a;零散不熟悉知识点整理团队章程责任分配矩阵RAM定义是啥风险识别的工具都有啥 冲刺题2错题整理知识点整理情商风险登记在风险登记册&#xff0c;风险管理计划中没有风险团队章程项目经理来确保进行知识转移交付哪一个…

【C++】STL-红黑树封装出set和map

目录 1、实现红黑树的泛型 2、set和map的插入 3、set和map的迭代器 3.1 operator 3.2 operator-- 3.3 const迭代器 4、find 5、map的operator[] 6、完整代码 6.1 红黑树 6.2 set 6.3 map 1、实现红黑树的泛型 我们先引入上一节中写的红黑树 enum Colour {RED,BL…

Unity Shader 初学者指南

《Unity Shader 初学者指南》(3D Game Shaders For Beginners) 是一个面向初学者的教程项目&#xff0c;由David Lettier创建。该项目通过一系列分步指导&#xff0c;教授如何在3D游戏中实现各种着色技术&#xff0c;包括环境光遮蔽(SSAO)、景深(Depth of Field)、光照、法线贴…

产品经理-​简历内容的可准备点(24)

在互联网岗位中,产品经理是一个没有针对性的专业&#xff0c;知识结构不明确&#xff0c;那该具体准备哪些内容呢&#xff1f; 大家知道大公司实习含金量高&#xff0c;但作为纯产品“小白”&#xff0c;冷启动找实习很困难&#xff08;本科生不太好找产品实习&#xff0c;普通…