アクセスログの名前解決

Apache ウェブサーバーには、アクセスログのIPアドレスを名前解決するコマンドが用意されています。

logresolve < [アクセスログ] > [出力ファイル]

ちなみにApache ウェブサーバーのhttpd.conf でルートディレクトリ以下のサブフォルダのエイリアスを設定するには、

Alias /wordpress/ "/usr/local/apache2/htdocs/wordpress/"

VirtualBoxでCentOS7にApache2.4をインストール

前回のエントリーOpenSSL バージョンアップ からの続きです。

今回は、「CentOS7にApache2.4をインストール」です。

環境としてはテストとしてVirtualBoxに、Centos7.1をBase.repoでminimalインストールしてからを前提として始めます。参考にしたのは以下のサイトです。

Apache2.4系をソースからインストール – Qiita

作業ディレクトリは、/usr/local/src です。

必要なパッケージをyumでまとめてインストール
# yum -y install gcc gcc-c++ git wget tar m4 autoconf libtool zlib zlib-devel
# yum -y install httpd-devel libxml2-devel mysql-devel t1lib-devel openssl-devel
# yum -y install bzip2-devel curl-devel gmp-devel aspell-devel recode-devel
PCREのインストール
# wget http://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.gz
# tar zxvf pcre-8.37.tar.gz
# mkdir /usr/local/pcre
# cd pcre-8.3.7
# ./configure --prefix=/usr/local/pcre
# make && make install
aprのインストール
# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-1.5.2.tar.gz
# tar zxvf apr-1.5.2.tar.gz
# mkdir /usr/local/apr
# cd apr-1.5.2
# ./configure --prefix=/usr/local/apr
# make && make install

apr-iconvの展開
# wget https://www.apache.org/dist/apr/apr-iconv-1.2.1.tar.gz
# tar zxvf apr-iconv-1.2.1.tar.gz

apr-utilのインストール
# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//apr/apr-util-1.5.4.tar.gz
# tar apr-util-1.5.4.tar.gz
# mkdir /usr/local/apr-util
# cd apr-util-1.5.4
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=../apr-iconv-1.2.1
# make && make install

ポイントは、APR-Utilのconfigureの際に、APRをインストールしたディレクトリ名を- -with-apr=/[aprディレクトリパス] オプションで指定することです。

同じく、APR-Utilのconfigureの際に、apr-iconvを追加コンパイルするときには、- -with-apr-iconv=/[apr解凍ディレクトリ] と指定してあげて下さい。(apr-iconvは解凍するだけでmakeしなくても良い。)

libiconvは日本語patchが必要らしく、以下のサイトを参考にしました。

libiconv 1.13インストール手順 – Knowlege Database

# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz
# wget http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.13-ja-1.patch.gz
# tar xfvz libiconv-1.13.tar.gz
# cd libiconv-1.13
# yum install patch
# gzip -dc ../libiconv-1.13-ja-1.patch.gz | patch -p1
./configure
# make && make install

※ apache起動時にlibiconv のエラーを回避する方法を拾ったのでメモです。
ライブラリのパスを通す http://fisherman23.blog112.fc2.com/blog-entry-140.html

# vi /etc/ld.so.conf
/usr/local/lib  ←これを追加し、保存
# ldconfig  (実行)

やっと、Apache本体のインストールです。(httpd-2.4.18 2016年1月21日現在最新版.)

# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//httpd/httpd-2.4.18.tar.gz
# tar zxvf httpd-2.4.18
# cd httpd-2.4.18
# ./configure --enable-suexec --prefix=/usr/local/apache2 --enable-cache --enable-disk-cache --enable-mem-cache --enable-logio --enable-header --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-ssl --with-ssl=/usr/local/ssl --enable-rewrite --enable-so --enable-proxy --enable-mods-shared=all
# make && make install

VirtualBoxでは関係ありませんが、Apacheのリクエスト並列処理オプションとして –enable-mpms-shared を本番環境では設定すると良いそうです。

httpd設定ファイル編集は、Webサーバー構築(Apache) – CentOSで自宅サーバー構築 を参考にしました。

# vi /usr/local/apache2/conf/httpd.conf
Group apache
User apache
ServerName www.southerncross.net
<Directory "/usr/local/apache2/htdocs">
AllowOverride All
・・・

起動確認の前に、firewalldの80番ポート解放です。

# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --reload

CentOS7では、ホスト名の管理は/etc/hostnameの編集だけで済むようになりました。

# vi /etc/hostname
www.southerncross.net

VirtualBoxで[設定]→[ネットワーク]→[アダプター1]→[ポートフォワーディング]から、ゲストの80番をポートフォワーディングして

portfowording

本番環境では宅内ルーターのファイアウォール80番ポートの解放、さらにサーバーのプライベートIPアドレスを固定して、[静的アドレス変換]などの設定項目からTCPのhttp80番を指定してポートフォワーディングします。

一方、今回はVirtualBoxでホスト機のブラウザでアドレス名でアクセスするとのことですので、C:\Windows\System32/Dirvers\etc のhostファイルの編集が必要です。

# ip addr show

で表示されたプライベートIPをメモ帳で直接hostファイルを編集します。例えば、

192.168.56.101    www.southerncross.net

とします。Base.repoで入っているhttpdの起動を停止。

# systemctl disable httpd
# systemctl stop httpd

OS起動で自動起動させるには、起動スクリプトをコピーして、

# cp -ip /usr/local/src/httpd-2.4.18/build/rpm/httpd.init /etc/rc.d/init.d/apache2
 設定ファイルを以下のように書き換えます。参考:URL
2015年末 最新LAMP環境 Apache HTTP/2+PHP7+MySQL5.7 インストールメモ | あぱーブログ
# vi /etc/rc.d/init.d/apache2
[修正内容]
httpd=${HTTPD-/usr/sbin/httpd}
 pidfile=${PIDFILE-/var/run/${prog}.pid}
 lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
 ↓
 httpd=${HTTPD-/usr/local/apache2/bin/httpd}
 pidfile=${PIDFILE-/usr/local/apache2/logs/${prog}.pid}
 lockfile=${LOCKFILE-/usr/local/apache2/logs/${prog}}
  
 CONFFILE=/etc/httpd/conf/httpd.conf
 ↓
 CONFFILE=/usr/local/apache2/conf/httpd.conf 
 [ここまで]

chkconfig に登録、Apache2を起動します。

# chkconfig --add apache2
# chkconfig apache2 on
# /usr/local/apahce2/bin/apachectl start

ブラウザから、http://www.southerncross.net/ を入力して [It works!] と表示されれば成功です。It works! だけでは味気ないなと思ったら、ちょっと遊んで

# cp /usr/share/httpd/noindex/index.html /usr/local/apache2/htdocs/index.html
# cp -r /usr/share/httpd/noindex/css /usr/local/apache2/htdocs/css
# cp -r /usr/share/httpd/noindex/images /usr/local/apache2/htdocs/images
# chown -R apache. /usr/local/apache2/htdocs/

すると、Apache2.4 テストページが表示されます。お疲れ様でした。

test123

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/を保存。

SELinux によるWordPress のパーミッション設定

メディアライブラリへの画像追加
 wordpress アップロード中「この親ディレクトリのアクセス権はサーバーによる書き込みを許可していますか。」とエラーが出る。
プラグインのインストール
 ある時突然、プラグインのインストールをしようとして「ディレクトリを作成できませんでした。」とプラグインのインストールに失敗。
google で検索しても「パーミッションが悪い」「.htaccess を見直してみたら?」と言われいろいろ設定をいじっても解決しなかったので途方に暮れた

経験はありませんか。

httpdのドキュメントルートが通常とは違う場合、もしかしたら、SELinux のアップデートでポリシーが変わって書き込みが出来なくなったのかもしれません。

誤)# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wordpress/wp-admin/uploads (/.*)?"

誤)# restorecon -R "/var/www/html/wordpress/wp-admin/uploads"

正)# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wordpress/wp-content/uploads (/.*)?"

正)# restorecon -R "/var/www/html/wordpress/wp-content/uploads"
(uploads/ の他に、plugins/ themes/ ディレクトリも同様に設定が必要かもしれません

パーミッション、.htaccess、所有権のチェックでも問題がない場合、疑うべき選択候補ではあると思います。↓

CentOS7のSELinuxが有効な状態でhttpdからファイルに書き込みを行う設定

Apache のBasic認証

HTTPD Apache Webサーバーにおいてディレクトリ以下にアクセスする際にhttpd.conf でユーザーIDとパスワードにて基本認証を施す設定

#vi /etc/httpd/conf/httpd.conf ↓(以下のディレクティブを追加
<Directory "/var/www/mrtg">
    AuthType Basic
    AuthName "Please Enter Your ID and Password."
    AuthUserFile /etc/httpd/conf/private_htpasswd
    Require Valid=user
</Directory>

パスワードファイル生成

# htpasswd -c /etc/httpd/conf/private_htpasswd <ユーザー名>
New password:   ←パスワード入力
Re-type new password:    ←パスワード確認

するとmrtg ディレクトリのファイルアクセスを登録ユーザーに制限できます。

通常、パスワードファイルをドキュメントルート以下に置かざるを得ない場合は、 .htaccess ファイル内にパスワードファイル、<パス>/.htpasswdを指定すると、.ht で始まるファイルへのアクセスを禁止する設定がhttpd.conf にありますので、強固なセキュリティになります。

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

Linux 技術書評

これまで集めた僅かですが、Linux サーバー関連の技術書について書評をしてみたいと思います。

小さな会社の新米サーバー/インフラ担当者のためのLinuxの常識

51EyxMsOM5L__SX351_BO1,204,203,200_Linux を触ったことがないという初心者のための入門書です。Linux の成り立ち、ディストリビューション、ネットワークとは、一般的なサーバーの概念、vi の操作、初歩的なコマンドの解説、などこれからLinux を始める人にとりあえずの知識を網羅しています。もっと詳しいネットワークの基本を知りたい人は、お便利サーバー.com の

初心者向けLinuxサーバー構築講座 などがよいでしょう。

 

できるPRO CentOS 6 サーバー (できるプロシリーズ)

無題8

実際にLinux でサーバーを立てるのに私が選んだ書籍は、これです。こちらは初心者用に概要を説明しながら実際のLinux のサーバー構築に必要なコマンドを取り上げて具体的に解説しています。読み進めながらSSH 、DNSサーバー、メールサーバー、Webサーバー、LAMP構築などLinux の可用性を広く分かりやすく、実践的に体験でき初心者に頼れる一冊です。ただ、細かい部分はどうしてもGoogle 検索で補完する必要があり、例えばwordpress の設定ページを表示するのに、

http://サーバーアドレス/wordpress/wp-admin/install.php

とアドレスバーに打てば良いことなどです。詳しいサーバー設定はやはり尊い先達の方々のサイトが大いに参考になりました。

CentOSで自宅サーバー構築 http://centossrv.com/

CentOS で行なっておきたいセキュリティ設定: ある SE のつぶやき http://fnya.cocolog-nifty.com/blog/2012/03/centos-6aa8.html

できるPRO Apache Webサーバー 改訂版 Version 2.4/2.2/2.0対応

無題9

できるPRO CentOS 6 サーバーに載っていない細かい設定が載っています。Apahce をパッケージからインストールした場合、ソースからインストールした場合、CentOS、Ubuntu、mac OS に用意されているものに分けて設定が解説されておりApahce PHP のインストールからモジュールの追加、SSL などApache に関する知識が網羅されており、Apahce にある程度なれた初心者にも親切な内容となっています。

Linuxサーバーセキュリティ徹底入門 オープンソースによるサーバー防衛の基本

51jemnVucZL__AA324_PIkin4,BottomRight,-33,22_AA346_SH20_OU09_これは以前にも紹介しましたが、Linux のセキュリティ、サーバーの運用に関して全般的に説明された格調高い書籍となっています。例えば、SELinux でホームディレクトリを公開する際の、

# setsebool -P httpd_enable_homedirs on

の記述に関してネットで検索しても見つからなかった、コマンドも載っています。まだ、全部は読んでいませんが、これからのサーバー運用に役に立つ一書でしょう。

CentOS7で作るネットワークサーバ構築ガイド

41wQnrDdwnL__SX385_BO1,204,203,200_2014年6月リリースのCentOS の最新版カーネルCentOS 7 サーバー構築についてオールインワンで解説されたガイドです。CentOS は7 からコマンド体系、ファイアウォール、各種機能が一新されこれから勉強するという方も苦労されているのではないでしょうか。そんな私も含めてですが、独学でもしくはセミナーなどに参加されても理解できなかった人でもCentOS7を安心して学べる体系的に説明された一冊です。私はまだ読み途中ですが内容は1000ページにわたりかなり濃いです。あらかじめCentOS6 の知識のある人でも読み応えのある上級者向けといった感じです。

以上、これまで私の読んだLinux の技術書の簡単なまとめでした。

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