應用最普遍的博客系統|wordpress部署

Docker部署wordpress

1.拉取 wordpress 鏡像
docker pull wordpress:latestphp

  1. 查看鏡像
    docker images;html

  2. 啓動容器 docker run --name=wordpress -p 8003:22 -p 8001:80 -v /var/wordpress:/data wordpress
    • 經過8001端口訪問
    • 本機須要php環境
    • 暫時不清楚wordpress安裝數據在那個地方
    • 注意數據庫路徑是本機(宿主)而不是另外一個容器或者當前容器的話,須要填寫本機的內網ip,而不能夠是localhost或者127.0.0.1
    • 可能由於nginx配置致使樣式丟失

其餘問題:docker 端口映射錯誤解決方法

docker: Error response from daemon: driver failed programming external connectivity。。。
  • 重啓docker解決 sudo systemctl restart docker

樣式沒法正常顯示

  • 估計是nginx配置問題,這個就不深究了

最終使用和typecho同樣使用站點的方式配置

  • 安裝php環境,下載壓縮包,解壓到 /var/www/html這個和typecho同樣就很少說了 ,須要注意的是目錄目錄權限問題java

  • 安裝配置mysql和NGINXmysql

  • 相關配置參考typecho的配置linux

貼一段NGINX的配置

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;
            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;
    }

常見問題解決方案

  • 英文包轉換成中文環境,在站點根目錄找到wp-config.php,將define('WPLANG', '');改成define('WPLANG', 'zh_CN');沒有則添加便可,而後刷新控制檯面板出現更新直接下載中文包便可
  • 下載包須要驗證ftp,編輯wp-config.php以下便可,官方建議升級完成以後修改回來
define('WPLANG', 'zh_CN');
define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);
  • 解決「在裁剪您的圖像時發生了錯誤」 php-gd或者相關擴展沒有安裝吧,官方論壇搜索便可

打開域名訪問主頁變成下載index.php頁面的源代碼,其餘路徑的頁面能夠正常訪問或者訪問域名跳轉到127.0.0.1

出現這個問題,就有點懵了,畢竟NGINX的配置沒有怎麼改,以前都是好好地,可是配置文件更換頻繁致使的,瀏覽器客戶端不解析php,回家訪問一次發現解決了這個問題懷疑是瀏覽器緩存致使的,瀏覽器記住了以前的配置不會解析php成htmlnginx

解決方案:這個是由於瀏覽器緩存的緣由致使的,清除瀏覽器緩存便可redis

連續刷新頁面出現502 錯誤,php-cgi程序崩潰了

照抄網上的解決方案

  • 查看當前的PHP FastCGI進程數是否夠用,若是實際使用的「FastCGI進程數」接近預設的「FastCGI進程數」,那麼,說明「FastCGI進程數」不夠用,須要增大

netstat -anpo | grep "php-cgi" | wc -lsql

  • 部分PHP程序的執行時間超過了Nginx的等待時間,能夠適當增長nginx.conf配置文件中FastCGI的timeout時間,例如:
http

{

......

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

......
 
}
  • php.ini中memory_limit設低了會出錯,修改了php.ini的memory_limit爲64M,重啓nginx,發現好了,原來是PHP的內存不足了

這樣屢次刷新依然出現502錯誤docker

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數據庫

上傳的文件尺寸超過php.ini中定義的upload_max_filesize值。

  • 修改/etc/php.ini中的屬性值便可

Jetpack致使頁面卡慢

事實證實,再好的東西,不合適就是不合適,再說這個插件實際使用也沒多好,反正頁面卡慢,嚴重影響速度和心態

解決Linux下php-fpm進程過多致使內存耗盡問題

感謝這位小夥伴提供的資料
最近發現博客打開常常出現數據庫沒法鏈接而且在網絡正常的狀況下出現的鏈接卡慢的問題;剛開始覺得是以前的redis漏洞致使的挖礦程序入侵

可是free -h查看以後發現不是CPU佔用問題而是內存佔用過多致使的,平均每個fpm進程佔用了2%內存
查看內存消耗最多的 40個進程 ps auxw|head -1;ps auxw|sort -rn -k4|head -40
img

查看第四列內存使用佔比,發現除了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
再次查看內存使用狀況, 使用內存下降不少:
img

其餘相關設置

ps:查看php-fpm開啓的進程數以及每一個進程的內存限制

  1. 經過命令查看服務器上一共開了多少的 php-cgi 進程

ps -fe |grep "php-fpm"|grep "pool"|wc -l

  1. 查看已經有多少個php-cgi進程用來處理tcp請求
    netstat -anp|grep "php-fpm"|grep "tcp"|grep "pool"|wc -l
  2. 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服務。

小確幸

每一絲靈感都值得被記錄,每一筆記錄都是成長,每一點成長都值得歡呼

博主我的站: www.imisty.cn
CSDN博客: https://blog.csdn.net/lookinthefog
博客園 :https://imist.cnblogs.com/

但願可以認識一些熱愛技術的小夥伴,歡迎友連接喲

相關文章
相關標籤/搜索