基于Docker的Moodle+Wordpress搭建方法,以Centos7.9为例
注:如有侵权,请联系作者删除。如有转载,请说明出处。
本教程使用Centos7.9系统,其他Centos版本和Linux系统部署方式类似。系统环境部署采用bitnami/moodle和bitnami/wordpress容器方法。
本教程中bitnami/moodle和bitnami/wordpress容器都默认了数据库的Hostname为maridb,如果需要修改,可在启动的时候通过配置参数进行指定,具体配置参数见moodle部署章节和wordpress部署章节处提供的链接。
- 如果以学习为主要目的,请跳过本教程,因为本教程对你的技能提升没有明显帮助。建议使用全新环境并按官方指导教程逐步进行部署,以便于增加你对mariadb/httpd/php/firewalld等功能模块的认识、学习、配置和使用。当然也可以通过本文末参考资料中提供的链接辅助你的学习。
- 如果仅需要单独部署moodle环境或wordpress环境,建议参照[1]或[2]中的docker compose方法或docker command方法之一即可。可直接跳过本教程。
[1] moodle部署教程 https://hub.docker.com/r/bitnami/moodle
[2] wordpress部署教程 https://hub.docker.com/r/bitnami/wordpress
1. docker环境安装
此处采用脚本安装的方式完成Docker环境的部署
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
启动docker并设置开机自启动
sudo systemctl enable docker
sudo systemctl start docker
其他方式和其他系统可参照 https://www.runoob.com/docker/centos-docker-install.html
2. moodle部署
moodle部署方式主要参照 https://hub.docker.com/r/bitnami/moodle
(1)获取bitnami/mariadb和bitnami/moodle镜像
docker pull bitnami/mariadb
docker pull bitnami/moodle
(2)创建网络。考虑到moodle和wordpress要使用同一数据库,此处创建了名字为 mariadb-network的网络。(网络名字可自行修改)
docker network create mariadb-network
(3)创建mariadb数据库卷,并启动maiadb数据库。
- 此处启动容器时为moodle系统创建了名为bitnami_moodle的数据库,为该数据库配置了用户bn_moodle,并将用户访问密码设置为bitnami。(注:数据库名字/用户/密码可自行修改。但是使用数据库时,即启动moodle/wordpress容器时需保持一致。)
$ docker volume create --name mariadb_data
$ docker run -d --name mariadb \
--env ALLOW_EMPTY_PASSWORD=yes \
--env MARIADB_USER=bn_moodle \
--env MARIADB_PASSWORD=bitnami \
--env MARIADB_DATABASE=bitnami_moodle \
--network mariadb-network \
--volume mariadb_data:/bitnami/mariadb \
bitnami/mariadb:latest
(4)创建moodle数据库卷,并启动moodle。
- 此处启动容器时以用户名bn_moodle,密码bitnami方式对bitnami_moodle数据库进行了连接。并增加了PHP_POST_MAX_SIZE、PHP_UPLOAD_MAX_FILESIZE、PHP_MAX_EXECUTION_TIME三个参数的配置以解决moodle系统上传视频文件配置过小的问题。
$ docker volume create --name moodle_data
$ docker run -d --name moodle \
-p 8080:8080 -p 8443:8443 \
--env ALLOW_EMPTY_PASSWORD=yes \
--env MOODLE_DATABASE_USER=bn_moodle \
--env MOODLE_DATABASE_PASSWORD=bitnami \
--env MOODLE_DATABASE_NAME=bitnami_moodle \
--env PHP_POST_MAX_SIZE=2048M \
--env PHP_UPLOAD_MAX_FILESIZE=2048M \
--env PHP_MAX_EXECUTION_TIME=600 \
--network mariadb-network \
--volume moodle_data:/bitnami/moodle \
bitnami/moodle:latest
至此,完成了moodle的环境部署,可访问http://Server_IP:8080 进入moodle界面,管理员账号/密码为user/bitnami。(Server_IP需替换为本服务器的地址,端口由容器启动时映射的端口决定,本文moodle端口是8080)
3. wordpress部署
wordpress部署方式主要参照 https://hub.docker.com/r/bitnami/wordpress
(1)获取docker pull bitnami/wordpress镜像
docker pull bitnami/wordpress
(2)进入mariadb并为wordpress配置单独的数据库、用户和密码(数据库名、用户、密码可自行设置。但是使用数据库时需保持一致)。
- docker ps 查看mariadb容器名并进入容器
- root进入数据库、创建数据库、创建用户并授权(注:mysql -u root
-p,root账户进入数据库时,会提示输入密码,此处无需输入,直接Enter进入就行)。
mysql -u root -p
MariaDB [(none)]> create database bitnami_wordpress;
MariaDB [(none)]> create user 'bn_wordpress'@'%' identified by 'bitnami';
MariaDB [(none)]> grant all privileges on bitnami_wordpress.* to 'bn_wordpress'@'%' identified by 'bitnami';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit
(3)创建wordpress数据库卷,并启动wordpress。
- 此处启动容器时以用户名bn_wordpress,密码bitnami方式并使用mariadb-network对bitnami_wordpress数据库进行了连接。(此处需注意,在做端口映射的时候需要和moodle进行区分)
$ docker volume create --name wordpress_data
$ docker run -d --name wordpress \
-p 8081:8080 -p 8444:8443 \
--env ALLOW_EMPTY_PASSWORD=yes \
--env WORDPRESS_DATABASE_USER=bn_wordpress \
--env WORDPRESS_DATABASE_PASSWORD=bitnami \
--env WORDPRESS_DATABASE_NAME=bitnami_wordpress \
--network mariadb-network \
--volume wordpress_data:/bitnami/wordpress \
bitnami/wordpress:latest
至此,完成了moodle的环境部署,可访问http://Server_IP:8081/wp-login.php 进入moodle界面,管理员账号/密码为user/bitnami。(Server_IP需替换为本服务器的地址,端口由容器启动时映射的端口决定,本文wordpress端口是8081)
4. 问题定位方法介绍
(1)moodle/wordpress启动后Exit(-1)退出
- 使用docker logs -f [container] 查看是否由错误提示,命令使用方法如下
或
(2)无法连接数据库
- 在容器退出前查看每个容器的网络配置
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
如果网络不在同一网段,需要检查容器启动的时候是否使用了同一个网络。(本文中的网络为 ‘–network mariadb-network’)
(3)网络正确,无法访问数据库
- 使用创建数据库时配置的用户名/账号登录数据库验证数据库的账号密码是否正确。
- 检查数据库用户是否具有远程访问权限
I have no name!@a9365833a5cc:/$ mysql -u root -p
Enter password: (不需要输入密码)
BMariaDB [(none)]> select Host,User,Password from mysql.user;
5. bitnami介绍
Bitnami是一个面向服务器维护者的云服务,直接提供适用于各种Linux发行版的免配置的服务器软件安装包。其自身定位为“服务器端的软件商店”。参考链接:https://developer.aliyun.com/article/804650
6. 参考资料
CentOS Docker 安装
https://www.runoob.com/docker/centos-docker-install.html
bitnami/moodle
https://hub.docker.com/r/bitnami/moodle
bitnami/wordpress
https://hub.docker.com/r/bitnami/wordpress
bitnami介绍
https://baike.baidu.com/item/BitNami/1604585?fr=aladdin
https://developer.aliyun.com/article/804650
mysql中grant all privileges on赋给用户远程权限
https://blog.youkuaiyun.com/qq_31725371/article/details/83019856
MySQL/MariaDB用户权限及权限管理
https://zhuanlan.zhihu.com/p/361897908
MariaDB 用户与权限管理
https://blog.51cto.com/lyshark/5322081
基于CentOs7的moodle平台搭建历程
https://blog.youkuaiyun.com/Rui_Xian_Qi_Mu/article/details/60882231
在CentOS 7上安装Moodle
http://www.vue5.com/centos/23060.html
Moodle安装指导手册
https://yubaba.blog.youkuaiyun.com/article/details/79537689
Ubuntu20.04搭建moodle3.11最详细教程(apache+php+mysql)
https://blog.youkuaiyun.com/weixin_43055969/article/details/122037844
Docker容器网络更改
https://blog.youkuaiyun.com/qq_51409098/article/details/124782275
CentOs7详细安装wordpress
https://blog.youkuaiyun.com/weixin_43627152/article/details/120383447
手动搭建WordPress(CentOS 8)
https://help.aliyun.com/document_detail/184111.html
docker 容器ip查看及 网络配置区别
http://t.zoukankan.com/zjdxr-up-p-15409168.html