设为首页 收藏本站
查看: 1107|回复: 0

[经验分享] Centos 7使用docker部署LAMP搭建wordpress博客系统

[复制链接]

尚未签到

发表于 2019-2-20 13:09:49 | 显示全部楼层 |阅读模式
  LAMP是目前比较流行的web框架,即Linux+Apache+Mysql+PHP的网站架构方案。docker是目前非常流行的虚拟化应用容器,可以为任何应用创建一个轻量级、可移植的容器。现在我们就来通过docker来部署LAMP环境,并且搭建wordpress博客系统来测试。
系统环境
操作系统版本:Centos 7.5 64位
Docker版本:18.06.1-ce(社区版)
ip地址:192.168.2.226
lamp网络ip地址:172.18.0.1
1、下载mysql、php-apache镜像

docker pull mysql
docker pull php:7.2-apache
  创建自定义网络lamp

docker network create lamp
docker network ls

2、创建生成mysql、httpd-php容器的脚本
vim docker_lamp.sh


#!/bin/bash
function mysql()
{
docker run --name mysql --net lamp -p 3306:3306 \
-v /data/docker/mysql/data:/var/lib/mysql \
-v /data/docker/mysql/conf:/etc/mysql/conf.d \
-v /data/docker/mysql/logs:/logs \
-e MYSQL_ROOT_PASSWORD=test123456 \   #设置mysql的root密码
-d mysql:latest --character-set-server=utf8   #使用utf8编码
}
function httpd_php()
{
docker run --name httpd-php --net lamp -p 80:80 \
-v /data/docker/httpd/conf:/etc/apache2/sites-enabled \
-v /data/docker/www:/var/www/html \
-v /data/docker/httpd/logs:/var/log/apache2 \
-d php:7.2-apache
}
$1
  3、启动mysql、httpd-php容器

sh docker_lamp.sh mysql
sh docker_lamp.sh httpd_php
  4、写一个php的首页文件来进行测试

echo "" > /data/docker/www/index.php
  通过浏览器访问http://192.168.2.226

5、修改mysql的密码加密方式为mysql_native_password
vim /data/docker/mysql/conf/docker_mysql.cnf

[mysqld]
default-authentication-plugin=mysql_native_password
  如果不修改加密方式的话,低版本的mysql客户端登陆时会报以下错误

6、数据库操作
登陆mysql容器,创建、配置wordpress数据库

docker exec -it mysql /bin/bash
mysql -uroot -ptest123456
mysql> create database wordpress;
mysql> create user wps@localhost identified by '123456';
mysql> grant all privileges on wordpress.* to wps@localhost;
mysql> create user wps@172.18.0.1 identified by '123456';
mysql> grant all privileges on wordpress.* to wps@172.18.0.1;
mysql> alter user wps@172.18.0.1 identified with mysql_native_password by '123456';
mysql> exit
exit
  7、下载wordpress博客系统

wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
tar -zxvf wordpress-4.9.4-zh_CN.tar.gz -C /data/docker/www/
  8、配置wordpress博客
浏览器访问http://192.168.2.226/wordpress


提交后发现报500错误

刷新页面后报错,提示:表前缀不能为空

前面数据库的信息填写都正确,又试了一次还是报这个错。
即然如此,我们就直接修改wp-config-sample.php配置文件吧。
9、修改wp-config-sample.php配置
cd /data/docker/www/wordpress/
vim wp-config-sample.php   #修改以下内容

/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');
/** MySQL数据库用户名 */
define('DB_USER', 'wps');
/** MySQL数据库密码 */
define('DB_PASSWORD', '123456');
/** MySQL主机 */
define('DB_HOST', 'mysql');
/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');
/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');
  将文件名改为wp-config.php
mv wp-config-sample.php wp-config.php
再用浏览器访问http://192.168.2.226/wordpress

查阅资料后发现,原来从PHP5.0开始就不推荐使用mysql_connect()函数了,而到了php7.0则直接废弃了该函数,替代的函数是mysqli_connect(),终于找到问题原因了。
10、Call to undefined function mysql_connect()问题解决方法
进入到mysql容器里安装mysqli扩展

docker exec -it httpd-php /bin/bash
apt-get update
apt-get install libpng-dev
cd /usr/local/bin/
./docker-php-ext-install gd mysqli
./docker-php-ext-enable gd mysqli
exit
docker restart httpd-php
  编写一个测试连接mysql的php
vim /data/docker/www/test.php


  浏览器访问http://192.168.2.226/test.php

修改wp-db.php文件,将mysql_connect替换为mysqli_connect

cd /data/docker/www/wordpress/
sed -i "s/mysql_connect/mysqli_connect/g" wp-includes/wp-db.php
mv wp-config.php wp-config-sample.php
  11、重新配置wordpress博客
浏览器访问http://192.168.2.226/wordpress
按前面的步骤填写完连接mysql的配置信息后,看到如下页面,表示mysql连接成功。

需要手工创建wp-config.php文件,将以上信息贴入wp-config.php文件中
vim /data/docker/www/wordpress/wp-config.php

然后点击“现在安装”,出现以下页面

输入完以上信息后,点击“安装WordPress”



至此,wordpress博客系统就搭建完成了。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-674935-1-1.html 上篇帖子: 『中级篇』Docker 下篇帖子: 理解Docker容器的进程管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表