wordpress昇級php版本-使用docker phpFPM

1.上wordpress docker 找到要的版本

wordpress docker hub

2.把Dockerfile下方下載wordpress tar功能拿掉

#
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
#
# PLEASE DO NOT EDIT IT DIRECTLY.
#

FROM php:7.4-fpm

# persistent dependencies
RUN set -eux; \
	apt-get update; \
	apt-get install -y --no-install-recommends \
# Ghostscript is required for rendering PDF previews
		ghostscript \
	; \
	rm -rf /var/lib/apt/lists/*

# install the PHP extensions we need (https://make.wordpress.org/hosting/handbook/handbook/server-environment/#php-extensions)
RUN set -ex; \
	\
	savedAptMark="$(apt-mark showmanual)"; \
	\
	apt-get update; \
	apt-get install -y --no-install-recommends \
		libfreetype6-dev \
		libjpeg-dev \
		libmagickwand-dev \
		libpng-dev \
		libzip-dev \
	; \
	\
	docker-php-ext-configure gd \
		--with-freetype \
		--with-jpeg \
	; \
	docker-php-ext-install -j "$(nproc)" \
		bcmath \
		exif \
		gd \
		mysqli \
		zip \
	; \
	pecl install imagick-3.4.4; \
	docker-php-ext-enable imagick; \
	rm -r /tmp/pear; \
	\
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
	apt-mark auto '.*' > /dev/null; \
	apt-mark manual $savedAptMark; \
	ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \
		| awk '/=>/ { print $3 }' \
		| sort -u \
		| xargs -r dpkg-query -S \
		| cut -d: -f1 \
		| sort -u \
		| xargs -rt apt-mark manual; \
	\
	apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
	rm -rf /var/lib/apt/lists/*

# set recommended PHP.ini settings
# see https://secure.php.net/manual/en/opcache.installation.php
RUN set -eux; \
	docker-php-ext-enable opcache; \
	{ \
		echo 'opcache.memory_consumption=128'; \
		echo 'opcache.interned_strings_buffer=8'; \
		echo 'opcache.max_accelerated_files=4000'; \
		echo 'opcache.revalidate_freq=2'; \
		echo 'opcache.fast_shutdown=1'; \
	} > /usr/local/etc/php/conf.d/opcache-recommended.ini
# https://wordpress.org/support/article/editing-wp-config-php/#configure-error-logging
RUN { \
# https://www.php.net/manual/en/errorfunc.constants.php
# https://github.com/docker-library/wordpress/issues/420#issuecomment-517839670
		echo 'error_reporting = E_ERROR | E_WARNING | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_RECOVERABLE_ERROR'; \
		echo 'display_errors = Off'; \
		echo 'display_startup_errors = Off'; \
		echo 'log_errors = On'; \
		echo 'error_log = /dev/stderr'; \
		echo 'log_errors_max_len = 1024'; \
		echo 'ignore_repeated_errors = On'; \
		echo 'ignore_repeated_source = Off'; \
		echo 'html_errors = Off'; \
	} > /usr/local/etc/php/conf.d/error-logging.ini


COPY docker-entrypoint.sh /usr/local/bin/
 

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["php-fpm"]

3.倒數第三行加上執行權限

Read More

使用crontab取代wordpress的wp-cron

在檢查apache的log檔時,發現wp-cron常常執行時間很長也常Timeout。當流量不大或是系統資源夠大時,其實並不會發現有什麼問題,可是如果在資源有限及流量增加時,就會因為執行時間太長增加wordpress回傳的反應時間,如果有系統的控制權,建議可以使用排程crontab來取代。

1.首先Disable wp-cron

修改wordpress目錄下的wp-config.php

define('DISABLE_WP_CRON', true);

Read More

All in One SEO中文描述Descriptions支援問題解決方法

wordpress的外掛All in one SEO不知道在幾版後突然就對繁體中文的支援度降低了(消失?)了,在options裡設定自動取得meta descriptions對於中文文章並不會有作用,而且英文字詞間是以空白做為分格與中文字連續沒有分格不同,像是”Hello World !”與”哈囉世界!”,在取descriptions就會有明顯有問題。

搜尋了一下資料找到了一個解決方式,如下:

1.先到外掛編輯器

1.jpg

2.選擇要編輯的外掛All in One SEO Pack,然後按下選取,選擇All-in-one-seo-pack/aioseop.class.php這個檔案。

Read More

Windows XP環境Apache出現失敗的模組ntdll.dll

最近流量有一點點增長,不過網站的速度跟常常出現失敗的模組ntdll.dll錯誤,搞的主機會停住很久才回應網頁,之前流量小點時不太常出現,而查看方向也一直在Apache跟mysql的調整上,不過似乎沒什麼用,google一下,幾乎都說是中毒了、重灌就好了,不過重灌似乎不是很好的解決方式。

失敗的事件內容可以從控制台->系統管理工具->事件檢視器->Windows記錄(應用程式)

失敗的應用程式httpd.exe,版本2.2.8.0,失敗的模組 ntdll.dll,版本5.1.2600.5755,錯誤位址 0x0001aa21。

Apache錯誤.png

Read More

JavaScript、廣告、圖形等延遲載入方法

最近主機一直有問題,排程重啟Service、調整Apache MySQL設定值又換了wordpress cache也都沒用,後來研究了好久判斷可能是Bloggerads載入時太慢所以都卡住了,所以找了個方法讓它的JavaScript延遲載入,在網頁內容都載入後,才開始載入Bloggerads廣告。

原理是利用瀏覽器的特性,當元素被設定不顯示時裡面的圖形、flash內容及javascript等都不會真正的載入,只有在設定顯示時才會開始載入。

測試二種方式:

一種方式是先把需求的script在一開始載入好,需要顯示時才設定顯示,一種是連script都在最尾端(也可以使用onReady等方式)才載入。後一種的效能應該會比較好一點,不過比較麻煩。

這裡會需要使用到FireFox的FireBug使用方法可以參考網頁除錯觀察的Browser工具FireBug-開發者工具-開發人員工具

第一種方式 一開始就載入好JavaScript等待

測試網址

當網頁載入完成時,可以看到並沒有正真載入廣告

DelayScript.png

Read More