OpenSSL バージョンアップ

OpenSSL のバージョンアップの方法をメモ。OpenSSL 最新版は、OpenSSL-1.0.2e (2016年1月11日現在)

OpenSSL バージョン1.0.2d をソースからインストール – Qiita

上記サイトを参考に、バージョンを読み替えて、./config。

# wget http://www.openssl.org/source/openssl-1.0.2e.tar.gz
# tar xzvf openssl-1.0.2e.tar.gz
# cd openssl-1.0.2e
# ./config --prefix=/usr/local/ssl shared zlib
# make && make install
# mv /usr/bin/openssl /usr/bin/openssl.bak
# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
# openssl version

今回は、/usr/local/ssl ディレクトリにインストールしました。ポイントは、PHPのオプションも、

--with-openssl=/usr/local/ssl

と書き換えてリビルドする必要があることです。(じゃあ最初にやれよということですね、はい。)

リビルドがうまく行かない場合は、作業ディレクトリで、config.log でエラーをチェックしてgoogle に投げたり、make distcleanして makeをやり直してみましょう。私の場合は、yum install openssl-devel で追加したところwordpress/が一時、表示できなくなりOS再起動をしてなんとか復旧しました。

まとめ:リビルドは最悪のケースを考えてバックアップを万全にしましょう。

WordPress の更新エラー「要求されたリクエストを完了できる http トランスポートがありません」

WordPress 4.3.1 にバージョンアップされてから、プラグインのダウンロード先がhttps をサポートするようになったからでしょうか。更新エラーがでます。Google 検索をすると、curl openssl モジュールを有効にすると良いらしい。この1か月、いろいろ悩みましたが、PHPのリビルドをすることにしました。下記を参考にphp.ini を更新。

PHP5.4以降をソースビルド(apache2,mysqli対応) – Qiita

curlを組み込むために以下のサイトを参考に、インストール。

PHP用にcURLをインストール、設定する | 渋谷生活

PHPリビルドの呪文を唱えます。

# service apache stop
# cd /usr/local/src/php-5.6.14
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --includedir=/usr/include --with-config-file-path=/usr/local/lib --with-config-file-scan-dir=/etc/php.d --bindir=/usr/bin --sbindir=/usr/sbin --with-openssl=/usr/local/ssl --with-mysql --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr --with-gd=shared --with-zlib --with-curl --with-xsl --enable-gd-native-ttf --with-gettext --with-libxml-dir=/usr/bin/xml2-config --enable-mbstring
# make && make install

途中 configure error が出たので、yum install libjpeg-devel freetype-devel libxslt-devel で追加のパッケージをインストール。無事、プラグインの更新に成功しました。

ポイントは、–with-curl –with-openssl オプションを付けたことです。

(Apache は、/usr/loccl/apache2/にインストールして以下サイトを参考に自動起動のシェルを作成。PHPインストール前にstopコマンドで停止する。) apache2.2 起動と自動起動設定

wordpress/ は、リビルド作業前にバックアップを![ダッシュボード] → [ツール] → [エクスポート] からファイルに保存。画像ディレクトリ、wordpress/wp-content/uploads/を保存。

VirtualBox PHP のリビルド

パソコンの調子が悪くなったので、OSイメージをバックアップから復元。VirtualBox でLAMP をやり直しです。Openssl Apache はよかったのですが、PHP が立ち上がりません。PHP 最新版は(2015年8月15日現在)5.6.12 です。./configure すると、

./configure --with-apxs2=/usr/local/apache2/bin/apxs
--with-iconv/
--enable-mbstring
--with-mysql
--with-libxml-dir=/usr/bin/xml2-config
PEAR package PHP_Archive not installed

と、エラーが出ます。http://qiita.com/yamagen0915/items/1f89b07b70f8178fb162

/usr/local/apache2/conf/httpd.conf に以下の行を新規追加。

LoadModule php5_module modules/libphp5.so [新規追加]
<IfModule mine_module>
・・・
AddType application/x-httpd-php .php [新規追加]
AddType application/x-httpd-php-source .phps [新規追加]
# wget http://pear.php.net/go-pear.phar
# php go-pear.phar

上記コマンドを実行、make make install で動作確認・・・完了です。

phpinfo

VirtualBox でLAMP

昨日のエラー Building The OpenGL support module [FAILED] は消えていましたが、今度はApache2 のhttpd.conf で、Cannot load /usr/local/apache2/modules/mod_ssl.so  into server: libssl.so.1.0.0 とエラーするので、OpenSSL をソースビルドでいれてみました。

LinuxにApacheとOpenSSLをソースからビルドしてインストールする – Qiita
http://qiita.com/DQNEO/items/3613cc1d87c01121a9e2

それでもエラーがなくならないので、yum から mod_ssl をインストールしたところ解決しました。OpenSSL とmod_ssl の違いが分かりませんが結果オーライということで。

[root@centos ~] yum install openssl-devel 
[root@centos httpd-2.2.31] cd modules/ssl
# /usr/local/apache2/bin/apxs -cia -DHAVE_OPENSSL -I/usr/include/openssl -lssl *.c

PHP は (2015年8月9日現在) 最新版、6.5.11 を./configure make make install して

./configure --with-apxs2=/usr/local/apache2/bin/apxs\
--with-iconv\
--enable-mbstring\
--with-mysql\
--with-libxml-dir=/usr/bin/xml2-config

phpinfo.php 表示できました。

phpinfo

apache2 が消えた

/usr/local/apache2 にApache2.2 をソースからインストールして、httpd.conf を編集中に突然、apache2 ディレクトリが消えました。yum からパッケージでインストールした OSインストール時に入っていた apache のhttpd.conf から書き写しをしていた折、ダウンロード、解凍した wordpress を当該ディレクトリに mv コマンドで移動しようとしていた矢先でした。こんなことってあるんですかね。たまげたなぁ~。誰かにハッキングされて消された、ハッキリ分かんだね。 仕方がないからソースからのインストール、(一日の) やり直しますよ、するするっ!

Apacheのソースは、 Download – The Apache HTTP Server Project http://httpd.apache.org/download.cgi#apache22 から最新版をダウンロード。2015年7月28日現在で、最新版はバージョンはapache2.2.31 (Apache 2.4 はインストールしたことある?)・・・ないです。ふ~ん。あっ(察し)。

ディレクトリ移動して httpd-2.2.x/を解凍したら

# cd /usr/local/src
# wget http://ftp.riken.jp/net/apache//httpd/httpd-2.2.31.tar.gz
# tar zxvf httpd-2.2.31.tar.gz
# cd httpd-2.2.31/

ディレクトリ移動して、以下の呪文を唱えます。 CentOSへApache2.xをソースビルドしてService登録する – Qiita

# ./configure --prefix=/usr/local/apache2 \
 --enable-suexec \
 --enable-cache \
 --enable-disk-cache \
 --enable-mem-cache \
 --enable-logio \
 --enable-header \
 --enable-ssl \
 --enable-rewrite \
 --enable-so \
 --enable-proxy \
 --enable-mods-shared=all

ちなみに私は、zlib がないっ!って怒られました。解決法は以下。仕事で使える魔法のLAMP(15):ライブラリが足りなくてビルドできないときは? – @IT

# yum install zlib zlib-devel

./configure をやり直して、続いて# root 権限で

# make
# make install

これで、/usr/local/apache2 にインストール完了です。このとき、設定ファイル httpd.conf は、パッケージインストール時の
/etc/httpd/conf/httpd.conf ・・・ではなく、/usr/local/apache2/conf/httpd.conf に作られます。ここから Apache HTTP Server の設定をしてゆくわけですが、諸先輩方の詳細な解説をリンクして割愛します。 コロのLinuxサーバー構築 – httpd.conf の設定 また起動コマンドも、パッケージとソースビルドでは異なっており、

# service httpd start (パッケージインストール)
# /usr/local/apache2/bin/apachectl start (ソースビルド)

となっております。 あと、覚えている限りですが PHP のインストールもメモしておきます。ソースからインストールする場合、以下のサイト(2015年7月28日現在、PHPバージョン 5.6.11)かミラーリンクをたどってWindows に保存または、リンクアドレスをコピーして、wget コマンドからダウンロード解凍します。 PHP: Downloads http://php.net/get/php-5.6.11.tar.gz/from/a/mirror

# cd /usr/local/src
# wget http://jp2.php.net/get/php-5.6.11.tar.gz
# tar zxvf php-5.6.11.tar.gz
# cd php-5.6.11/

php-5.x.x/ にディレクトリ移動して以下の呪文を唱えます。

# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql

すると、apxs がないっ!って怒られました。解決法は以下リンク。 [apache] モジュール追加でapxsが見つからない時の解決方法 | 迷走男子!!

# yum install -y httpd-devel

./configure のやり直し。ところが今度は、libxml2 がないっ!と怒られました。以下のサイトを参考にコマンド入力。 dage.jp » Apache2.2+PHP5.2 完全インストール – part2 – PHPインストール

# yum install -y libxml2 libxml2-devel

./configure のやり直しをします。→ PHP: インストール手順 – Manual

# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-libxml-dir=/usr/bin/xml2-config

今度は成功です。

# make
# make install

(追記)PHP の設定を/usr/local/apache2/conf/httpd.conf で有効にするため下記設定を追加

LoadModule php5_module modules/libphp5.so [新規追加]
<IfModule mine_module>
・・・
AddType application/x-httpd-php .php [新規追加]
AddType application/x-httpd-php-source .phps [新規追加]
</IfModule mine_module>

https://www.stuffy.site/wordpress/index.php/2015/08/15/rebuild-php-on-virtualbox/

してhttpd.conf を編集、

・・・
<Directory "/usr/local/apache2/htdocs/wordpress">
     AllowOverride all
 </Directory>
・・・
 Alias /wordpress/ "/usr/local/apache2/htdocs/wordpress/"

WordPress をインストールして

http://ホストネームアドレス/wordpress/wp-admin/install.php

からセットアップ画面表示できました。

install.php

追記)http://ホストネームアドレス/ でアクセスさせたいときは、httpd.conf のDocumentRoot 設定を

・・・
DocumentRoot /usr/local/apache2/htdocs/wordpress

します。

総じて apache もPHPも、./configure make make install !! ./configure make make install !! て感じで・・・。