PHP再コンパイル

Apache2.4をWorkerモードで起動したい・・・そんな理由で結局、PHP7.4を再コンパイルしました。

# vi /etc/httpd/conf.modules.d/00-mpm.conf

LoadModule mpm_worker_module modules/mod_mpm_worker.so ←チェックアウト
#LoadModule mpm_event_module modules/mod_mpm_event.so ←コメントアウト

お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。

とでたのでyum install –enablerepo=remi, remi-php74 php-mysqlnd php74-php-mysqlnd

apache停止 PHP再コンパイル apachectl -V でWorker モード起動確認しました。

[root@www conf.modules.d]# apachectl -V
[Sat Jun 27 17:27:57.558701 2020] [so:warn] [pid 3872:tid 140188049873088] AH01574: module php7_module is already loaded, skipping
Server version: Apache/2.4.43 (codeit) Server built: May 7 2020 12:24:30 Server's Module Magic Number: 20120211:92 Server loaded: APR 1.7.0, APR-UTIL 1.6.1 Compiled using: APR 1.7.0, APR-UTIL 1.6.1 Architecture: 64-bit Server MPM: worker threaded: yes (fixed thread count) forked: yes (variable process count)

新たに警告、module php7_module is already loaded, skipping がでましたが起動には問題ないのでこちらは追々、解決していくことにします。

AWSのCentOS7にPHP7.4をソースからインストール – OpenSSL1.1.1 TLS1.3 対応

AWSのCentOS7.8にPHP7.4をyumでインストールしたものの、OpenSSLのバージョンが1.0.2k-fips 26 Jan 2017と古いままだったのでOpenSSL-1.1.1g PHP7.4.7 をソースビルドしてCode-ITリポジトリからApache2.4をインストールした顛末をメモ。

CentOS7にOpenSSL1.1.1をインストール | Qiita

OpenSSLは上記記事を参考に/usr/local/openssl-1.1.1 にインストール済みです。ただパスが通っていないので以下の通りにシンボリックリンクを貼りました。追記)/usr/local/openssl-1.1.1 への環境変数も追加で登録しました。

# mv /usr/bin/openssl /usr/bin/openssl.bak
# ln -s /usr/local/openssl-1.1.1/bin/openssl /usr/bin/openssl

# export PATH=/usr/local/openssl-1.1.1/bin:$PATH

CentOS 6 の環境にPHP7をインストールしてApacheで動かすまで

少々古い記事ですがPHP7.4のコンパイルに必要そうなパッケージはyumで一気に揃えます。

# yum -y install httpd-devel gd-devel libxml2-devel mysql-devel t1lib-devel
# yum -y install bzip2-devel curl-devel gmp-devel aspell-devel recode-devel
# yum -y install libmcrypt-devel

PHP7.4.7は公式から/usr/local/src にwget でダウンロード、解凍します。

# cd /usr/local/src
# wget https://www.php.net/distributions/php-7.4.7.tar.gz
# tar zxvf php-7.4.7.tar.gz
# cd php-7.4.7 # ./configure --with-apxs2=/usr/bin/apxs --bindir=/usr/local/bin --with-openssl=/usr/local/openssl-1.1.1 --with-libxml --with-mysqli --with-zlib --with-curl --with-xsl --with-gettext --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gmp \ --enable-mysqlnd \ --enable-mbstring \ --enable-bcmath \ --enable-pcntl \ --enable-cgi \ --enable-cli \ --enable-exif \ --enable-ftp \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-sysvmsg \ --enable-shmop \ --enable-calendar \ --enable-opcache \ --enable-intl \ --disable-debug

途中、make testでopcacheインストールしてないよ!とかいろいろ怒られましたがyumでその都度インストール対応しました。

# yum --enablerepo=epel,remi-php74 install php-opcache

make & make install

# make
# make install

で表題の件。

CentOS7にyumでHTTP/2.0対応Apache/OpenSSLを導入してみる

CodeITリポジトリ導入。Apache2.4本体、秘密鍵のインストールして起動・・・

# cd /etc/yum.repos.d && wget https://repo.codeit.guru/codeit.el`rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release)`.repo
# yum install httpd

# cd /etc/pki/tls/certs/
# make localhost.crt
# make localhost.key # cd ../private/ # cp ../certs/localhost.key ./
# cp localhost.key localhost.key.orig ## 秘密鍵のパスフレーズを解除 # openssl rsa -in localhost.key.orig -out localhost.key

## Apache httpd HTTPSとHTTP/2通信用の設定
## ssl.confの # Virtual Host Context 行下に追記

# vi /etc/httpd/conf.d/ssl.conf

Protocols h2 http/1.1 (追記 # systemctl start httpd

起動しようとしたのですが失敗しました。

systemctl status httpd.service -l でエラーメッセージを取得すると、

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP

Google先生に訊いてみるとApache がWorker として起動していてPHPと不整合している旨了解しました。/etc/httpd/conf.modules.d/00-mpm.conf を編集して

#LoadModule mpm_event_module modules/mod_mpm_event.so ←チェック
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so ←チェックを外す

するとApache 起動しました。

PHPインストール時のMPMのエラーを手っ取り早く解消する

AWSのt2.microではPHPのソースビルドでも「aws virtual memory exhausted: メモリを確保できません」エラーが出てスワップを作らないとインストールできなかったほど限界で、マルチスレッドからシングルスレッドになりスピードダウンは否めないのでWorkerモードしてもどの程度負荷軽減できるか課題の残るところです。phpinfo.php で確認すると無事、OpenSSL1.1.1g TLS1.3 対応しました。

スワップ作成は以下のサイトが参考になりました。

[Rails] CapistranoでEC2へデプロイ:EC2仮想メモリ不足トラブルシュート

AWS CentOS7 にPHP最新版をインストールする

PHPのバージョン最新版をAWSのCentOS7にインストールしようとして試行錯誤した顛末。

お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。と表示された対応 | Qiita

そもそもremiリポジトリがなく最初にインストールするところから始めました。

# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

鍵がない!(NOKEY)と怒られたので、wget でとりに行きました。

# wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# rpm -Uvh remi-release-7.rpm

ここでエラー: 依存性の欠如:
epel-release = 7 は remi-release-7.7-2.el7.remi.noarch に必要とされています

ん・・・epel が必要らしいことがbash のlocale をJPにして気付きました。

# yum -y install epel-release

こんなこともしばらく触れないうちに忘れてしまうものなんですね・・・で表題の件。PHPをモジュールごとまるっとインストールします。

PHP バージョン情報 | OpenStandia™ (オープンスタンディア) 最新版は7.4.7

# yum install --enablerepo=remi,remi-php74 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-mysql

# php -v
PHP 7.4.7 (cli) (built: Jun 9 2020 10:57:17) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

無事、Wordpress を初期設定できました。ありがとうございました。

過去ログ再掲 – PHP7 をソースからビルド

CentOS6にPHP7をソースからインストール – Qiita から丸写しで ビルドしたのでメモ。

# wget php-7.1.16.tar.gz http://jp2.php.net/get/php-7.1.16.tar.gz/from/a/mirror
# tar zxvf php-7.1.16.tar.gz
# cd php-7.1.16

でソースディレクトリにて作業開始。

# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --includedir=/usr/include --bindir=/usr/local/bin --with-openssl=/usr/local/ssl --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr --with-gd --with-zlib --with-curl --with-xsl --with-gettext --with-libxml-dir=/usr/bin/xml2-config --enable-mbstring --with-mysqli=mysqlnd --enable-mysqlnd --with-pdo-mysql=mysqlnd --enable-bcmath --enable-pcntl --enable-ftp --enable-exif --enable-calendar --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-gmp --with-pspell

ここでエラー。

Warnning unrecognized options --with-mysql --enable-gd-native-ttf

PHP7 ではwith-mysqli で十分とのこと。enable-gd-native-ttfも要らないようですね。改めて ./configure make && make install して

# make && make install
# /etc/init.d/mysqld restart
# /etc/init.d/httpd restart

ビルド完了。mysql apache 再起動すると『データベース接続エラー』と表示されwordpress 表示に問題発生。

Google 先生に聞くと、PHP7にバージョンを上げると、WPの「データベース接続確立エラー」が出てしまいます  にズバリ正解がありました。

# mysql_config --socket

コマンドでソケットのパスを聞いて、php.ini のmysql.default_socket、mysqli.default_socket のそれぞれに=/pass を放り込めば良いらしい。
phpinfo.php で、mysql のmysql.default_socketmysqli 、mysqli.default_socket 項目のそれぞれに正しいパスが表示されていれば作業終了。

# php -v
PHP 7.1.16 (cli) (built: Apr 18 2018 22:12:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

めでたくPHP7 にバージョンアップされました。ただし、数式表示プラグイン wpmathpub との相性が悪いらしくWordpress の表示が崩れます。ここは、PHP5.6.35 にダウングレードして解決しました。

wpmathpub のアップデート

WordPress の数式表示プラグイン WpMathPub が、1.2.0 にバージョンアップしました。

変更点は、PHP7 に対応したとのことですが当方の環境ではプラグインを有効化すると投稿が表示されない現象で困っています。現在、原因を調査中ですが詳細が分かり次第報告したいと思います。

 

WordPress 続きを読むのカスタマイズ

WordPress の投稿に[続きを読む→]タグを追加しても効かなく、1年来困っていましたが、PHPのちょっとしたカスタマイズで表示できるようになりました。

「続きを読む」のカスタマイズ – WordPress Codex 日本語版

[ダッシュボード]-[外観]-[テーマの編集]-[個別投稿(single.php)]の編集をクリックして、

loop の中の’content’ の前、the_post()後に、

                while ( have_posts() ) : the_post();
global $more; ← (挿入)
$more=0;     ←――╃

を挿入します。

めでたく、続きを読むタグが表示されました。
続きを読む WordPress 続きを読むのカスタマイズ

このサイトのアップロードサイズ上限を超えています

前回、画面録画ソフトを使って作った動画を、Wordpress のメディアライブラリにアップロードしようとしたところ、件のエラーが出ました。

ファイルが重いのかな・・・解決方法は以下。

php.ini のパラメータを

post_max_size = 16M
upload_max_filesize = 16M
memory_limit = 1024M

に。次に.htaccess の以下パラメータの設定があるときに

php_value upload_max_filesize 16M
php_value post_max_size 16M

にしたところ、件のエラー出ずにアップロードできました。

次に、アップロードした動画を閲覧しようとすると別の再生プレイヤーが起動して閲覧は可能なのですが、「この種類のビデオファイルはサポートされていません 」と表示されブラウザで閲覧できない症状がでます。

Edge ブラウザ:この種類のビデオファイルはサポートされていません
IE11 ブラウザ:無効なソース

多分、ファイルが .avi でH.264形式のmp4じゃないからだと思うんですけど。(迷推理
ファイル形式はBandicam で指定可能なので .mp4 で動画を作り直したところ、[メディアの追加]ボタンで挿入するだけでブラウザで動画再生できました。

[pmath size=18]sum{n=2}{infty}{log{(1~-~{{1}/{n^2}})}}[/pmath]

追記)スマホで閲覧するときに読み込みが酷いです。画像編集ソフトでファイルサイズを小さくした方がイイですね。PC ではEdge 推奨です。

数式表示プラグイン wpmathpub

今回は、WordPress で数式を表示するプラグイン、wpmathpub をご紹介します。

WP Math Publisher – wpmathpub

ダウンロード、解凍した、wpmathpub をディレクトリにコピー。

# cd /passtowordpress/wp-content/plugins/
# cp -R /home/user/wpmathpub/ ./
# chown -R apache:apache wpmathpub/

[ダッシュボード]の[インストール済みプラグイン]から、wpmathpub を[有効化]します。

./wpmathpub/phpmathpulisher/img/ ディレクトリのパーミッションを755 に。

# cd phpmathpublisher
# chmod 755 img/

./wpmathpub/wpmathpub.php の55行目のtrue をfalse に変更。

# cd ..
# vi ./wpmathpub.php
define("AUTOCHMOD", true);
↓
define("AUTOCHMOD", false);

数式をタグで挟むと整えられた数式画像に変換されます。

[pmath size=10]S(f)(t)=a_{0}+sum{n=1}{+infty}{a_{n} cos(n omega t)+b_{n} sin(n omega t)}[/pmath]

参考URL:

http://kensawai.com/blog/wordpress-%E6%95%B0%E5%BC%8F.html

WordPress のインポート

今回は、CentOS6.9 からVritualBox のCentOS7.3 mariaDB (サテライト)に、WordPress のxml と、uploads ディレクトリの画像ファイルのインポートを試みました。手順は以下。

1./passtowordpress/wp-content/uploads/ ディレクトリをWinSCPや、TeraTerm のSCP機能を使ってダウンロード、サテライトにアップロード。

2.エクスポートしたxml ファイルや画像URLは引っ越し前のアドレスになっているのでインポートの前にメモ帳などで開いてURLをリプレイス。

3.WordPress の[ダッシュボード] から[ツール]-[エクスポート] プラグインを使ってxml ファイルとしてローカルに保存。サテライトで同様に[インポート] 。

ですが、やってみると画像が表示されなく試行錯誤の連続でした。まず、サテライトのインポートで画面遷移が止まりGoogle 先生に以下のサイトを教えてもらいました。

WordPressのインポート中に画面遷移が止まるときの対処法
http://ytkyk.info/blog/2015/04/22/wordpress_import_error_stop_php_xml/

これでテキストのインポートはできたのですが、まず画像がメディアライブラリに表示されない。(やっぱりね!

WordPressのメディアライブラリに画像が表示されない、挿入出来ない、対処方法http://karinto.in/2014/05/19/wordpress/

アップロードプラグイン WordPress Flash Uploader

WordPress Flash Uploader

 

をインストールして以下のサイトの使用法にしたがってアップロード。

WordPress引っ越しインポートで役立つプラグイン4個

WordPress引っ越しインポートで役立つプラグイン4個

これでメディアライブラリには画像が表示されるようになりました。それでもxml の画像リンクが間違っているのか、エントリーのリンク切れが直りません。最終手段でデータベース、画像をサテライトから削除ししてやり直し。以下のプラグインを使ってエクスポート、インポートしたところ成功しました。

 

DeMomentSomTres Export
https://ja.wordpress.org/plugins/demomentsomtres-wp-export/

WordPress のインポート

今回は、CentOS6.9 からVritualBox のCentOS7.3 mariaDB (サテライト)に、WordPress のxml と、uploads ディレクトリの画像ファイルのインポートを試みました。手順は以下。

1./passtowordpress/wp-content/uploads/ ディレクトリをWinSCPや、TeraTerm のSCP機能を使ってダウンロード、サテライトにアップロード。

2.エクスポートしたxml ファイルや画像URLは引っ越し前のアドレスになっているのでインポートの前にメモ帳などで開いてURLをリプレイス。

3.WordPress の[ダッシュボード] から[ツール]-[エクスポート] プラグインを使ってxml ファイルとしてローカルに保存。サテライトで同様に[インポート] 。

ですが、やってみると画像が表示されなく試行錯誤の連続でした。まず、サテライトのインポートで画面遷移が止まりGoogle 先生に以下のサイトを教えてもらいました。

WordPressのインポート中に画面遷移が止まるときの対処法
http://ytkyk.info/blog/2015/04/22/wordpress_import_error_stop_php_xml/

これでテキストのインポートはできたのですが、まず画像がメディアライブラリに表示されない。(やっぱりね!

WordPressのメディアライブラリに画像が表示されない、挿入出来ない、対処方法http://karinto.in/2014/05/19/wordpress/

アップロードプラグイン WordPress Flash Uploader

WordPress Flash Uploader

 

をインストールして以下のサイトの使用法にしたがってアップロード。

WordPress引っ越しインポートで役立つプラグイン4個

WordPress引っ越しインポートで役立つプラグイン4個

これでメディアライブラリには画像が表示されるようになりました。それでもxml の画像リンクが間違っているのか、エントリーのリンク切れが直りません。最終手段でデータベース、画像をサテライトから削除ししてやり直し。以下のプラグインを使ってエクスポート、インポートしたところ成功しました。

 

DeMomentSomTres Export
https://ja.wordpress.org/plugins/demomentsomtres-wp-export/