这个好像并不准确,wordpress 但是不仅仅可以用来做博客,它是个人博客系统,并逐步演化成一款内容管理系统软件
1.拉取 wordpress 镜像
docker pull wordpress:latest
查看镜像
docker images;
启动容器 docker run --name=wordpress -p 8003:22 -p 8001:80 -v /var/wordpress:/data wordpress
其实仅仅只是部署的话这样就可以了,但是我遇到了样式丢失的问题,主页显示乱了,这里我也不追究了,但是我为了用git管理站点,最后还是使用静态站点托管的方式
docker: Error response from daemon: driver failed programming external connectivity。。。
sudo systemctl restart docker
安装php环境,下载压缩包,解压到 /var/www/html
这个和typecho一样就不多说了 ,需要注意的是目录目录权限问题,如果碰到了使用chmod
修改一下站点权限就行
安装配置mysql和NGINX(略)
相关配置参考typecho
的配置
server {
listen 80;
server_name www.imisty.cn imisty.cn;
root /var/www/html/wordpress;
index index.html index.htm index.php;
client_max_body_size 100M;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
location ~ .*\.php(\/.*)*$ {
include fastcgi.conf;
fastcgi_index index.php;
#这里采用php-fpm的默认端口
fastcgi_pass 127.0.0.1:9000;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
error_log logs/error_wordpress.log;
access_log logs/misty.log combined;
}
然后启动php-fpm
服务就可以了访问了,然后根据wordpress的引导安装即可
service php-fpm restart
define('WPLANG', '');
改为define('WPLANG', 'zh_CN');
没有则添加即可,然后刷新控制台面板出现更新直接下载中文包即可wp-config.php
如下即可,官方建议升级完成之后修改回来define('WPLANG', 'zh_CN');
define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);
index.php
页面的源代码,其他路径的页面可以正常访问或者访问域名跳转到127.0.0.1出现这个问题,就有点懵了,毕竟NGINX的配置没有怎么改,之前都是好好地,但是配置文件更换频繁导致的,浏览器客户端不解析php,回家访问一次发现解决了这个问题怀疑是浏览器缓存导致的,浏览器记住了之前的配置不会解析php成html
解决方案:这个是因为浏览器缓存的原因导致的,清除浏览器缓存即可
netstat -anpo | grep "php-cgi" | wc -l
http
{
......
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
......
}
这样多次刷新依然出现502错误
Nginx错误日志
recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 183.54.41.123, server: www.imisty.cn, request: "GET /index.php?rest_route=/yoast/v1/statistics HTTP/1.1", upstream: "fastcgi://127.0.0.1:8001", host: "imisty.cn", referrer: "http://imisty.cn/wp-admin/"
php-fpm
服务进行管理,解决多次刷新页面502的问题yum install php70w-fpm
安装,因为之前安装过旧版本,存在冲突,这里需要指定版本service php-fpm restart
启动php-fpm服务lsof查看php-cgi端口kill掉;php-fpm默认的端口是9000
/etc/php.ini
中的属性值即可事实证明,再好的东西,不合适就是不合适,再说这个插件实际使用也没多好,反正页面卡慢,严重影响速度和心态
感谢这位小伙伴提供的资料
最近发现博客打开经常出现数据库无法连接并且在网络正常的情况下出现的连接卡慢的问题;刚开始以为是之前的redis漏洞导致的挖矿程序入侵
但是free -h
查看之后发现不是CPU占用问题而是内存占用过多导致的,平均每一个fpm进程占用了2%
内存
查看内存消耗最多的 40个进程 ps auxw|head -1;ps auxw|sort -rn -k4|head -40
查看第四列内存使用占比,发现除了mysql数据库服务之外,php-fpm服务池开启了太多子进程,占用超过大半内存,问题找到了,我们开始解决问题:设置控制php-fpm进程池进程数量
解决方案:
通过各种搜索手段,发现可以通过配置 pm.max_children 属性,控制php-fpm子进程数量,首先,打开php-fpm配置文件,执行指令:
vi /etc/php-fpm.d/www.conf
找到 pm.max_children
字段,发现其值过大:
pm.max_children
值为50,每一个进程占用1%-2.5%的内存,加起来就耗费大半内存了,所以我们需要将其值调小,博主这里将其设置为25,同时,检查以下两个属性:
pm.max_spare_servers
: 该值表示保证空闲进程数最大值,如果空闲进程大于此值,此进行清理 pm.min_spare_servers
: 保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程;
这两个值均不能不能大于 pm.max_children
值,通常设置 pm.max_spare_servers
值为 pm.max_children
值的60%-80%。
service php-fpm status
查看服务状态发现配置错误
[pool www] pm.min_spare_servers(5) and pm.max_spar...en(25)
开始的时候max_children
设置为25 ,max_spare_servers
设置为35 发现服务无法启动
最后,重启php-fpm
systemctl restart php-fpm
或者service php-fpm restart
再次查看内存使用情况, 使用内存降低很多:
其他相关设置
ps:查看php-fpm开启的进程数以及每个进程的内存限制
ps -fe |grep "php-fpm"|grep "pool"|wc -l
2. 查看已经有多少个php-cgi进程用来处理tcp请求
netstat -anp|grep "php-fpm"|grep "tcp"|grep "pool"|wc -l
3. linux+nginx+php
环境中,每个php-fpm进程的内存限制
设置方法:
编辑php-fpm.conf配置文件
php_admin_value[memory_limit] = 128M
(我服务器上的配置文件在/etc/php5/fpm/pool.d/www.conf
这个文件是被包含在php-fpm.conf里的) 后边的数字可以随便更改:32M,64M,128M,256M,512M,这个设置可根据你的服务器内存大小和你的需求来写,修改后要加载一下php-fpm服务。
打开 $wordpress/wp-config.php
开启如下配置,就可以查看日志了,但是注意解决问题之后需要关闭debug模式
ini_set('log_errors','On');
ini_set('display_errors','On');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', true);