前の記事でApacheとMySQLをソースインストールしてみたので、
今回はそこにPHPを入れてLAMPにして、WordPressサーバにしてみます。
最下部に「エラー無しでやる方法」を記載しています。
■PHPインストール
PHPもソースインストールです!
ソースファイルをダウンロードして解凍します。
# cd /usr/local/src # wget http://php.net/get/php-7.1.0.tar.gz/from/this/mirror -O php-7.1.0.tar.gz # tar xvzf php-7.1.0.tar.gz
半年以上前ですが、パッケージで構築したLAMP環境にWordPressをインストールする、という記事を書きました。
その時にyumで入れた必要パッケージ(php-mbstring php-gd php-mysql)から、必要そうなconfigureオプションを調べました。
# cd php-7.1.0 # ./configure --enable-mbstring --with-gd --with-mysqli=mysqlnd
configure実行後下記エラーが。
configure: error: xml2-config not found. Please check your libxml2 installation.
libxmlがインストールされていないってことかな、と思いインストールしようとすると…
# yum install libxml2
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main/latest | 2.1 kB 00:00
amzn-updates/latest | 2.3 kB 00:00
Package libxml2-2.9.1-6.3.49.amzn1.x86_64 already installed and latest version
Nothing to do
既にある、と言われてしまいます。???
これ↓が足りなかったようです。
# yum install libxml2-devel
再度configureします。するとまたエラーが発生。
# ./configure --enable-mbstring --with-gd --with-mysqli=mysqlnd ~ checking for FreeType 2... no checking whether to enable truetype string function in GD... no checking whether to enable JIS-mapped Japanese font support in GD... no If configure fails try --with-webp-dir= configure: error: png.h not found.
下記モジュールが足りなかったようなのでインストールします。
# yum install libpng-devel
そして再々度configure。
問題なければコンパイル(make)→インストール(make install)。
# ./configure --enable-mbstring --with-gd --with-mysqli=mysqlnd # make # make install
PHPがインストールできたようです。
Apacheのドキュメントルートにテスト用のphpinfoを作成してみます。
# vi /usr/local/apache2/htdocs/test.php <?php echo phpinfo(); ?>
PHPと連携させるためApacheを再起動します。
# /etc/init.d/httpd restart
下記URLにアクセスするとphpinfoが表示されるはず。
…だったのですがどうもうまくいかないようで、ただの文字列(ブラウザによっては空白)として表示されてしまいました。
http://サーバIP/test.php

ApacheとPHPの連携に必要なオプションが抜けていたようです。
このオプションを追加して再度configureしてみましょう。
(/usr/local/src/php-7.1.0 内で)
# ./configure --enable-mbstring --with-gd --with-mysqli=mysqlnd --with-apxs2=/usr/local/apache2/bin/apxs
# make
~
/usr/local/src/php-7.1.0/ext/standard/info.c:1034: undefined reference to `_tsrm_ls_cache'
/usr/local/src/php-7.1.0/ext/standard/info.c:1037: undefined reference to `_tsrm_ls_cache'
/usr/local/src/php-7.1.0/ext/standard/info.c:1040: undefined reference to `_tsrm_ls_cache'
collect2: error: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
エラーが発生しましたが、make clean(※)をしたら直りました。
※中間ファイル等を削除しソースコードのみの状態にする
# make clean # make # make install
それでは再度Apacheを再起動してさきほどのURLにアクセスしてみましょう。
# /etc/init.d/httpd restart
結果はさきほどと同じ。

ここでかなり詰まりましたが、httpd.confを編集することで解消しました。
まず、conf内で指定するphp.iniをコピーで作成します。
(/usr/local/src/php-7.1.0 内で) # cp -ip php.ini-production php.ini
Apacheのconfに必要な設定を追記します。
# vi /usr/local/apache2/conf/httpd.conf ~ AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps ~ PHPIniDir "/usr/local/src/php-7.1.0/php.ini" (最下行)
設定反映のためApacheを再起動します。
# /etc/init.d/httpd restart
さきほどのURLを確認すると、phpinfoが表示されました!

なお、外部からphpinfoが見えるのはよろしくないので、削除しておきます。
# rm /usr/local/apache2/htdocs/test.php
■WordPressインストール
下記サイトから最新版のWordPressをダウンロードできます。
https://ja.wordpress.org/
まずはzipファイルをダウンロード→解凍。
# cd /usr/local/src # wget https://ja.wordpress.org/wordpress-4.7-ja.tar.gz # tar xvzf wordpress-4.7-ja.tar.gz
解凍されたディレクトリを、ドキュメントルート直下に配置。
Apacheがアクセスできるよう所有者を変更します。
# mv wordpress /usr/local/apache2/htdocs/ # chown -R apache:apache /usr/local/apache2/htdocs/wordpress/
sampleファイルからwp-configを作成し、編集します。
作成するDB名、ユーザ名、パスワードを記載します。
# cd /usr/local/apache2/htdocs/wordpress/ # mv wp-config-sample.php wp-config.php # vi wp-config.php ~ /** WordPress のためのデータベース名 */ define('DB_NAME', 'wordpressdb'); /** MySQL データベースのユーザー名 */ define('DB_USER', 'wordpressuser'); /** MySQL データベースのパスワード */ define('DB_PASSWORD', 'wordpresspassword'); ~
MySQL側でもDBとユーザを作成しておきます。
# /usr/local/mysql/bin/mysql -u root -p mysql> create database wordpressdb; Query OK, 1 row affected (0.01 sec) mysql> grant all privileges on wordpressdb.* to "wordpressuser"@"localhost" identified by "wordpresspassword"; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.02 sec)
下記URLにアクセスするとWordPress初期設定画面に遷移するはず。
http://サーバIP/wordpress
でしたが、こんな表示になりました。

これも煮詰まりましたが、気づいてみれば簡単。
DirectoryIndexにindex.phpを追加してあげましょう。
# vi /usr/local/apache2/conf/httpd.conf
~
DirectoryIndex index.html index.php
~
Apacheを再起動して再度さきほどのURLにアクセスすると…
# /etc/init.d/httpd restart
http://サーバIP/wordpress にアクセス

WordPressの設定画面になりました。
初期設定を進め、しかしいざログインしようとするとまたエラーが。
HTTP500エラーとのこと。

ログを確認してみると、
# tail /usr/local/apache2/logs/error_log
~
[Mon Dec 19 16:48:23.753638 2016] [php7:error] [pid 8145:tid 140480075470592] [client **********] PHP Fatal error: Uncaught Error: Call to undefined function gzinflate() in /usr/local/apache2/htdocs/wordpress/wp-includes/class-requests.php:947\nStack trace:\n#0 /usr/local/apache2/htdocs/wordpress/wp-includes/class-requests.php(886):
gzinflateという関数が無いよ、というエラーのようです。
この関数を扱えるように、–with-zlibというコンパイルオプションを付与してPHPを再インストールします。
# cd /usr/local/src/php-7.1.0
# ./configure --enable-mbstring --with-gd --with-mysqli=mysqlnd --with-apxs2=/usr/local/apache2/bin/apxs --with-zlib
# make
# make install
# /etc/init.d/httpd restart
そしてApacheを再起動してURLを確認すると、今度は見れるようになりました!
ここから記事の編集などが行えます。

■ちなみに
WordPressを構築して、(EC2のAMIとかの)イメージにしてそこから起動するとWordPressが使えなくなります。
これはサーバのIPが(それに伴いサイトのURLも)変わるからですが、
この現象に対して、私は長いことWordPress再インストールで対応していました。
再インストールは面倒なので、サイトURLを保存しているテーブルを新しいURLで更新してあげましょう。
mysql> use wordpressdb (どんな名前のDBを使用するかは、設定により異なります) mysql> update wp_options set option_value = 'http://~(新しいURL)' where option_name = 'siteurl' ; mysql> update wp_options set option_value = 'http://~(新しいURL)' where option_name = 'home' ;
■エラー無しでやる方法
・必要なパッケージのインストール
# yum install libxml2-devel libpng-devel
・PHPインストール
# cd /usr/local/src # wget http://php.net/get/php-7.1.0.tar.gz/from/this/mirror -O php-7.1.0.tar.gz # tar xvzf php-7.1.0.tar.gz # cd php-7.1.0 # ./configure --enable-mbstring --with-gd --with-mysqli=mysqlnd --with-apxs2=/usr/local/apache2/bin/apxs --with-zlib # make # make install
・PHP、Apache設定
# cp -ip php.ini-production php.ini # vi /usr/local/apache2/conf/httpd.conf ~ DirectoryIndex index.html index.php ~ AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php ←追加部分 AddType application/x-httpd-php-source .phps ←追加部分 ~ PHPIniDir "/usr/local/src/php-7.1.0/php.ini" ←最下行に追加 # /etc/init.d/httpd restart
・WordPressインストール
# cd /usr/local/src # wget https://ja.wordpress.org/wordpress-4.7-ja.tar.gz # tar xvzf wordpress-4.7-ja.tar.gz # mv wordpress /usr/local/apache2/htdocs/ # chown -R apache:apache /usr/local/apache2/htdocs/wordpress/ # cd /usr/local/apache2/htdocs/wordpress/ # mv wp-config-sample.php wp-config.php # vi wp-config.php ~ /** WordPress のためのデータベース名 */ define('DB_NAME', 'wordpressdb'); /** MySQL データベースのユーザー名 */ define('DB_USER', 'wordpressuser'); /** MySQL データベースのパスワード */ define('DB_PASSWORD', 'wordpresspassword'); ~
・WordPressインストール(DB)
# /usr/local/mysql/bin/mysql -u root -p mysql> create database wordpressdb; Query OK, 1 row affected (0.01 sec) mysql> grant all privileges on wordpressdb.* to "wordpressuser"@"localhost" identified by "wordpresspassword"; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.02 sec)
・http://サーバIP/wordpress にアクセスして初期設定を進める
投稿者プロフィール
- 2015年8月入社。弊社はインフラ屋ですが、アプリも作ってみたいです。