基于Docker容器运行环境下的全手动安装WordPress

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 采用阿里云提供的云服务器配合容器技术搭建各种应用环境(Paas和SaaS)已经成为一种流行趋势。于是,我抽空研究了一下容器技术,小试牛刀,采用基于Docker容器运行环境下的全手动安装WordPress来作为这次的演练。

在过去,搭建wordpress个人博客一般都是在主机里面直接安装数据库和web服务,使得主机利用不够充分,而且硬件扩展性和软件移植行不够好,随着云计算和虚拟化技术的大力发展,采用阿里云提供的云服务器配合容器技术搭建各种应用环境(Paas和SaaS)已经成为一种流行趋势。于是,我抽空研究了一下容器技术,小试牛刀,采用基于Docker容器运行环境下的全手动安装WordPress来作为这次的演练。

1.  运行环境和应用软件

  • 操作系统:Ubuntu Server 16.04.1 LTS 64位
  • 容器:Docker 1.13及以上
  • 数据库:MySQL 5.6
  • Web应用服务:Nginx,php-fpm
  • 博客应用:WordPress V4.9.1

2.  安装步骤

注:远程SSH请用root用户登录进行操作。

2.1.安装Docker

参考:

2.2.在Docker上安装数据库MySQL

1)首先从仓库拉取一个MySql的镜像

docker pull mysql:5.6

完成后,可以通过命令 docker images 查看我们刚刚拉下来的mysql的镜像:

175 1 - 基于Docker容器运行环境下的全手动安装WordPress

2)使用mysql镜像运行单独的容器

docker run -d --name myMysql -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:5.6

参数说明:

-d : –detach,后台运行。

--name : 为你的镜像创建一个别名,该别名用于更好操作,可以随便取,但是必须唯一。

-p : 映射端口,一般我们会将默认端口进行更改,避免与本机的mysql端口冲突,如果你宿主机有mysql,请更改端口,如 -p 33060:3306。

-e : 环境变量。为mysql的root用户设置密码为123456。

-v : 指定数据卷,意思就是将mysql容器中的/var/lib/mysql(这个是数据库所有数据信息文件)映射到宿主机/data/mysql里面。即使删除了容器,/data/mysql里面的数据文件依然还在,这说明如果我们创建新的mysql容器,那么只需要指定数据卷就可以了

接下来,可以通过命令docker ps -a 查看我们刚刚创建的容器:

175 2 1024x39 - 基于Docker容器运行环境下的全手动安装WordPress

这里我们可以看到我的容器状态的Up状态,表示容器正在运行,并且把可以看到主机和容器的端口映射关系。

3)进入到myMysql容器中

docker exec -it myMysql /bin/bash

参数说明:

-i : –interactive,交互界面。

-t : –tty,伪终端界面。

4)登录到myMysql容器中,登录到mysql服务器中

mysql -uroot -p

175 3 - 基于Docker容器运行环境下的全手动安装WordPress

5)查询用户表信息

use mysql;
select host,user from user;

175 4 - 基于Docker容器运行环境下的全手动安装WordPress

第一行的host值为%,说明MySQL可以通过root用户进行网络访问(估计是MySQL镜像版本的预先设定的)。

6)退出myMysql容器

键盘:ctrl + p + q

注:不要使用exit命令,这个命令会将容器退出运行。

7)创建Wordpress数据库

为了操作方面,通过PC客户端,采用Navicat远程登录到MySQL数据库(主机IP是宿主机的IP地址,用户为root,密码为123456),创建信息如下:

    • 数据库名称:wordpress,编码采用utf8 — UTF-8 Unicode
    • 用户名:wordpress,—设定访问权限只有wordpress数据库。
    • 密码:123456

注:以上信息可以自行设定,上述值只是为了举例而已。

Natvicat下载地址:链接:https://pan.baidu.com/s/1qXNggPY 密码:kq76

8)查看myMysql容器的IP

在主机上执行:

docker inspect myMysql | grep “IPAddress”

175 5 - 基于Docker容器运行环境下的全手动安装WordPress

注:IP地址的用途,在后面PHP访问MySQL数据库,需要用到这个地址。

2.3.在Docker上安装Nginx和php-fpm

1)首先从仓库拉取richarvey/nginx-php-fp镜像

经过研究,richarvey/nginx-php-fpm是一个汇集了Nginx和php-fpm于一体镜像,使用非常方面。

docker pull richarvey/nginx-php-fpm

查看拉取的镜像:

175 6 - 基于Docker容器运行环境下的全手动安装WordPress

2)配置运行环境

执行下面的命令:

docker run --name web -p 80:80 -v ~/www/html:/var/www/html -d richarvey/nginx-php-fpm

参数说明:

-p : 映射端口,一般我们会将默认端口进行更改,避免与本机的Web服务端口冲突,如果你宿主机有Nginx,请更改端口,如 -p 8080:80。

-d : 该参数为后台运行。

-v : 指定宿主机与容器的映射关系。~/www/html为宿主机的项目目录(自定义的),/var/www/html为容器服务器项目默认的路径。可以通过以下命令了解:

docker inspect richarvey/nginx-php-fpm | grep “WorkingDir”

175 7 - 基于Docker容器运行环境下的全手动安装WordPress

接下来,配置宿主机的目录环境,方便后期维护项目文件。

docker cp web:/etc/nginx/sites-available  ~/www/nginx_conf

注:结果是在root目录下新建“~/www/nginx_conf”目录,将镜像服务中的配置文件拷贝到此处。查看此目录的文件:

175 8 - 基于Docker容器运行环境下的全手动安装WordPress

default.conf即为Nginx的网站配置文件。

3)正式运行容器

先删除原有容器:

docker rm -f web

  • 启动方式1:

docker run --name web -p 80:80 -v ~/www/html:/var/www/html -v ~/www/nginx_conf:/etc/nginx/sites-available -d richarvey/nginx-php-fpm

175 9 1024x92 - 基于Docker容器运行环境下的全手动安装WordPress

  • 启动方式2(与方式1的区别在于增加了mysql容器的link访问):

docker run --name web -p 80:80 -v ~/www/html:/var/www/html -v ~/www/nginx_conf:/etc/nginx/sites-available -d –link myMysql:db richarvey/nginx-php-fpm

参数说明:

-d 让容器在后台运行

-p 添加主机到容器的端口映射

-v 添加目录映射, 容器中的/var/www/html映射到主机的~/www/html, 容器中的/etc/nginx/sites-available映射到主机的~/www/nginx_conf

--name 容器的名字,此处为web。

–link 与另外一个容器建立起联系,此处映射为db。

容器web启动成功,以后维护的时候只需要处理宿主机上以下两个位置即可:

a)网站目录:~/www/html

b)Nginx配置文件:~/www/nginx_conf/default.conf

4)测试web服务是否部署成功

手动添加index.php文件

cd ~/www/html
vim index.php

添加以下代码:

try {
         $con = new PDO(‘mysql:host=db;dbname=mysql’, ‘root’, ‘123456’);//db为上述link的名字
        $con->query(‘SET NAMES UTF8’);
        $res =  $con->query(‘select host,user,password from user’);
        echo “this is a test!!!

”; while ($row = $res->fetch(PDO::FETCH_ASSOC)) { echo “host:{$row[‘host’]} user:{$row[‘user’]} password:{$row[‘password’]}”; echo “

”; } } catch (PDOException $e) { echo ‘ex’ . $e->getMessage(); } ?>

保存后在浏览器里面打开网站,如下图:

175 10 - 基于Docker容器运行环境下的全手动安装WordPress

看到此结果,说明LNMP运行环境已经部署成功。下面进行WordPress的搭建,过程非常简单。

2.4.安装WordPress

1)下载WordPress

wget https://cn.wordpress.org/wordpress-4.9.1-zh_CN.tar.gz

2)解压缩到网站目录

tar xzf wordpress-4.9.1-zh_CN.tar.gz -C ~/www/html/

查看wordpress文件,已经在www/html目录下了。

175 11 - 基于Docker容器运行环境下的全手动安装WordPress

此时重启一下web容器,如果不重启,后面创建WordPress配置文件的时候会出现“抱歉,我不能写入wp-config.php文件”的错误。执行以下命令:

docker restart web

3)安装WordPress

启动浏览器,地址输入:http://主机IP/wordpress,安装界面出来了。

175 12 - 基于Docker容器运行环境下的全手动安装WordPress

点击“现在就开始”后,按照如下图内容输入:

175 13 - 基于Docker容器运行环境下的全手动安装WordPress

点击提交后,如下图:

175 14 - 基于Docker容器运行环境下的全手动安装WordPress

后续安装过程按照向导一步步的操作即可大功告成。

4)其他注意事项

在wordpress中,如果更改了文章的“固定链接”设置,页面会出现404问题,要解决此问题,需要修改nginix的配置文件(地址位于主机:~/www/nginx_conf/default.conf),让其支持重定向。具体解决方案见:

wordpress更改“固定链接”模式后,页面出现404原因及解决方法


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
存储 安全 C++
Odoo 安装方式选择:源码安装 vs Docker
Odoo部署常采用源码编译或Docker容器化,但分别面临依赖复杂、版本风险和服务化难题,以及镜像臃肿和扩展受限的问题。Websoft9提出混合方案,融合两者优势:通过智能环境适配、三阶段部署流程(环境预检、混合模式选择、持久化配置)及声明式YAML配置,实现高效、灵活的双模运行时。此方案显著降低依赖冲突解决时间(从83分钟至0),生产环境构建耗时缩短至8分钟,并达100% CVE漏洞修复率,适合ERP定制开发与规模化部署的企业需求。
|
7天前
|
Linux iOS开发 Docker
MyEMS开源系统安装之Linux/macOS上的DOcker
本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。
34 1
|
22天前
|
开发者 Docker 容器
获取Docker基础使用方法:让容器化变得轻松。
对于Docker的初学者来说,了解这些基础知识点就足够了。实践是最好的老师,越是动手操作,对Docker的理解会越深。祝阅读这篇文章的开发者们一切顺利,愿你在Docker的海洋中航行顺利!
72 17
|
29天前
|
关系型数据库 MySQL 数据库
Docker 安装常用软件相关命令
本文介绍了在CentOS 7.9系统上安装Docker的详细步骤,包括添加阿里云镜像源、安装Docker及相关组件、启动服务以及配置镜像加速。同时,还展示了如何通过Docker安装MySQL 5.7版本数据库,涵盖拉取镜像、创建数据目录、运行容器及配置挂载点等操作,并提供验证安装成功的命令和截图。适合需要部署Docker与MySQL环境的用户参考。
115 4
|
1月前
|
关系型数据库 MySQL Docker
|
2月前
|
Ubuntu Linux Docker
Docker容器的实战讲解
这只是Docker的冰山一角,但是我希望这个简单的例子能帮助你理解Docker的基本概念和使用方法。Docker是一个强大的工具,它可以帮助你更有效地开发、部署和运行应用。
124 27
|
8天前
|
Docker 容器
Docker网关冲突导致容器启动网络异常解决方案
当执行`docker-compose up`命令时,服务器网络可能因Docker创建新网桥导致IP段冲突而中断。原因是Docker默认的docker0网卡(172.17.0.1/16)与宿主机网络地址段重叠,引发路由异常。解决方法为修改docker0地址段,通过配置`/etc/docker/daemon.json`调整为非冲突段(如192.168.200.1/24),并重启服务。同时,在`docker-compose.yml`中指定网络模式为`bridge`,最后通过检查docker0地址、网络接口列表及测试容器启动验证修复效果。
|
1月前
|
存储 弹性计算 Linux
安装Docker
常见操作系统安装docker步骤
109 15
|
1月前
|
Docker 容器
在openEuler 22.03 LTS上安装Docker CE和Docker Compose
以上就是在openEuler 22.03 LTS上安装Docker CE和Docker Compose的过程。希望这个指南能帮助你顺利完成安装。
286 12
|
2月前
|
Linux 虚拟化 Docker
win11怎么安装docker的必要设置自学软硬件工程师778天
win11怎么安装docker的必要设置自学软硬件工程师778天
win11怎么安装docker的必要设置自学软硬件工程师778天