WP使用踩坑记录

  • 2019-12-30
  • 76
  • 1

前言

主要是记录使用docker部署wordpress后,使用期间遇到的各种疑难问题.

一.部署问题

1.Apache配置问题

启动wp后,我们访问 宿主机ip:port,发现页面没有反应,但是,查看wp容器正常运行.
查看日志发现错误代码:AH00558

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message

百度一下,发现以上问题是apache的问题.
原因是Apache的配置问题,少了一个ServerName的配置.

解决步骤:
1.进入wp容器内部

[root@bogon wordpress]# docker exec -ti wp /bin/bash
-----------------------
root@957dcfebd65d:/var/www/html# 

2.找到到Apache的配置文件.
cd /etc/apache2/可以看到apache2.conf配置文件.
尾部添加一句:
ServerName 127.0.0.1
发现wordpress镜像中没有vi和vim命令.我的个去…这下尴尬了.
别急,使用echo来完成.

echo "ServerName 127.0.0.1" >> apache2.conf

配置完成后,重启wp服务即可.

// 退出容器内部 
exit
// 重启wp应用
docker restart wp

二.运行问题

1.空间不足问题.

2019-12-30
刚刚本来想安装start主题的.由于我的阿里云服务器无法正常下载,所以我从其他电脑下载start主题后,进行了打包.然后传到我的阿里云服务器上.

我看了一下start打包也就3M左右.结果每次上传到75%就卡住了.没有反应.我的页面报错500
于是就准备重启一下我的wp服务:

我擦嘞…空间不够?
看一下空间占用状态:

磁盘空间被占满了啊!!!!

莫名其妙啊.后来想到wp的容器输出日志很大.准备找对应的日志查看一下.
docker容器的日志路径一般格式如下:
/var/lib/docker/containers/ + containerId
比如我的wp容器日志路径:
/var/lib/docker/containers/c0cfe8f857968f26ff060eeab2992f5b9d6fa222d87c0ba1b40aac56c634e722
原因是我没有将容器日志的路径映射,所以使用了默认的路径.
看一下当前容器中的日志文件大小.

我擦嘞…34个G,问题是我的wp容器才正常运行一天…这个有点伤啊.

删除日志. 请看清楚指令,执行错了,后果自负哈.:smile:

rm -rf c0cfe8f857968f26ff060eeab2992f5b9d6fa222d87c0ba1b40aac56c634e722-json.log 

重启应用后,访问应用正常.
docker restart wp


这么搞不是事啊,难不成我2天清理一下日志啊?作为一名优秀的懒癌患者,肯定得解决掉.
方案一:这个日志我们本来就不太关注,不怎么看.将日志输出关闭即可. 此方案没试验过,拒绝评论.
Docker容器运行日志关闭

方案二: linux是有一个指令,可以将输出重定向,我们让日志输出到null位置即可.
参考:如何将所有输出重定向到/dev/null
解决如下:
docker logs -f wp >/dev/null&
注意,null后面的&很关键哈.没有这个&,以上指令是前台运行的.带上&就可以后台运行了.
-f也很关键,持续的监听wp容器的日志.
这句指令的意思: 将wp容器的日志,全部持续输出到dev/null中.其实就是输出到空…类似没有位置接受的一个输出.

执行此命令后,如何再打开日志?
重启wp容器就解决了.

——–2019-12-31 更新 —–
早上起来,发现日志又满了,貌似上面的方法没有实际解决问题.
Docker 容器日志占用空间过大解决办法

清理Docker容器日志(治标)
如果docker容器正在运行,那么使用rm -rf方式删除日志后,通过df -h会发现磁盘空间并没有释放。原因是在Linux或者Unix系统中,通过rm -rf或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink)。如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。正确姿势是cat /dev/null > *-json.log,当然你也可以通过rm -rf删除后重启docker。其实就是相当于覆盖日志文件内容.

设置Docker容器日志大小(治本)
设置一个容器服务的日志大小上限
上述方法,日志文件迟早又会涨回来。要从根本上解决问题,需要限制容器服务的日志大小上限。这个通过配置容器docker-compose的max-size选项来实现

docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash

全局设置
新建/etc/docker/daemon.json,若有就不用新建了。
添加log-dirver和log-opts参数,样例如下:

{
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"}
}

说明:
max-size=500m,意味着一个容器日志大小上限是500M,
max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。

注意: 以上配置只对新容器生效!!!

// 重启docker守护进程
# systemctl daemon-reload
# systemctl restart docker
0

评论