kogoyaVPSでLAMPを構築したので、その備忘録。
前回は、KAGOYAのアカウント作成からファイヤーウォールの設定まで行いました。
今回は、WEBサーバー(Apache)の設定、VirtualHostの設定、PHPのインストール・設定、MySQLインストール・設定まで行います。
WEB(Apache)サーバーの設定
まずは、yumでインストール。
# yum install httpd
インストールが終わったら、CentOS起動時に、WEBサーバー(Apache)も起動するように設定。
KAGOYAのCentOS64だと、なぜかApacheはインストール済みでした。
# chkconfig httpd on
セキュリティを高めるため、設定ファイルの修正。
修正する前に、設定ファイルのバックUPを作成。
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org # vim /etc/httpd/conf/httpd.conf
httpd.confでServerTokens を検索し、SeverTokens OS を SeverTokens Prodに変更
これは、https://サーバーのアドレス/にアクセスすると、レスポンスヘッダーのServerのところに表示される情報を制限するために行います。KagoyaのLAMPパックでインストールした場合はこの部分も既にProductOnly修正されていました。
Options Indexesで検索して、<Directory “/var/www/html”> の下にある、Options Indexes FollowSymLinks の先頭にマイナスを入れ、Options -Indexes FollowSymLinksとする。
これは、存在しないディレクトリにWebブラウザでアクセスすると、ディレクトリのファイル一覧表示を防ぎます。
設定ファイルを保存して、configtestで問題ないかテスト。
Syntax OK だったら、サーバーリスタート。
# service httpd configtest # service httpd start
カゴヤの初期インストールで最小インストールでではなく、LAMPパックにすると、
httpd.confは上記のように書き換わっていました。2015-02-02。
VirtualHostの設定
1つのサーバーで複数のドメインを運用するために必要なので、VirtualHostの設定。
まずはドメイン用のディレクトリを作成する。作成したディレクトリの所有権を作業用ユーザーに変更する。
今回は、example.comというドメインでアクセスすると、/var/www/example.com/public_html/ を見るように設定する。
# mkdir -p /var/www/example.com/public_html/ # chown -R hogehoge:hogehoge /var/www/example.com/public_html/
サーバー起動時に読み込まれるファイルを作成
# vim /etc/httpd/vhosts.d/example.com.conf
下記をコピペ
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot "/var/www/example.com/public_html" DirectoryIndex index.html index.php ErrorLog "|/usr/sbin/rotatelogs /var/logs/example.com/error.log.%Y%m%d.http 86400 540" CustomLog "|/usr/sbin/rotatelogs /var/logs/example.com/access.log.%Y%m%d.http 86400 540" combined AddDefaultCharset utf-8 <Directory "/var/www/example.com/html"> AllowOverRide All Order Deny,Allow Allow from All DirectoryIndex index.php index.html index.htm </Directory> </VirtualHost>
# vim /etc/httpd/conf/httpd.conf
バーチャルホストを有効化 - NameVirtualHostを検索して、頭の#を削除し保存。
サーバー起動時に読み込まれるファイル(vhosts.dディレクトリ)を読みに行くように下記をhttpd.confも追記。
# Include Virtual Host Configs Include /etc/httpd/vhosts.d/*.conf
configtestを行い、SyntaxOKが出ればサーバーリスタート。
# service httpd configtest # service httpd start
Syntax OKが出たのにも関わらず、ここでなぜかサーバー再起動失敗。原因はエラーLog等の保存先ディレクトリが存在していなかったため。ディレクトリ作成後問題無く再起動OK。
PHPインストール・設定
yumでインストール
# yum install php php-devel php-mysql php-pgsql php-mbstring php-gd
設定ファイルをバックアップして下記の部分を編集。
# cp /etc/php.ini /etc/php.ini.org # vim /etc/php.ini
- error_log => /var/log/php.log エラーログを一箇所にまとめておく。
- mbstring => ;を削除し有効化 日本語に対応
- internal_encodingをUTF8に変更
- http_input => auto
- detect_order => auto
- expose_php => Off
- date.timezone => Asia/Tokyo
MySQLのインストール・設定
yumでインストール
# yum install mysql-server
設定ファイルをバックアップして下記の部分をsymbolic-links=0後に追加
# cp /etc/my.cnf /etc/my.cnf.org # vim /etc/my.cnf
character_set_server=utf8 default-storage-engine=InnoDB innodb_file_per_table [mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8
あとは、下記を行えばOK。
- 起動
- パスワードなどの設定
- 自動起動ON
- 動作確認
# service mysqld start # mysql_secure_installation # chkconfig mysqld on # mysql -u root -p
以上で、LAMPのインストール・設定が完了です。
ちなみに、pgsqlsをインストールしたやつはLAPPと言われているみたいです。
Pgsqlsのインストールはyumで簡単にできます。yumでインストールできるPgsqlsは少し前のバージョンになります。
yum install postgresql-server
公開する前にここも修正しないと大変。
実際に今回作成したサーバーで、WEBを公開するときにhttpd.confの下記の部分を修正しとかないと快適な表示がされません。
KAGOYAでインストールしたApacheはなぜか以下のような設定になっています。
<IfModule prefork.c> StartServers 1 MinSpareServers 1 MaxSpareServers 5 ServerLimit 10 MaxClients 10 MaxRequestsPerChild 4000 </IfModule> <IfModule worker.c> StartServers 1 MaxClients 10 MinSpareThreads 1 MaxSpareThreads 4 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>
このままだと、サーバーの性能が使えず快適な表示ができないので、とりあえずデフォルトの設定に戻します。
プロセス制御(prefork)、デフォルトは以下。
<IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule>
- StartServers: 起動時に生成される子サーバプロセスの数
- MinSpareServers: アイドルな子サーバプロセスの最小個数
- MaxSpareServers: アイドルな子サーバプロセスの最大個数
- ServerLimit: 設定可能なサーバプロセス数の上限
- MaxClients: リクエストに応答するために作成される子プロセスの最大個数
- MaxRequestsPerChild: 個々の子サーバが稼働中に扱うリクエスト数の上限
スレッド制御(worker)、デフォルトは以下。
<IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>
- StartServers: 起動時に生成される子サーバプロセスの数
- MaxClients: リクエストに応答するために作成されるスレッドの最大個数
- MinSpareThreads: アイドルスレッド数の最小個数
- MaxSpareThreads: アイドルスレッド数の最大個数
- ThreadsPerChild: 子プロセスそれぞれに生成されるスレッド数の上限
- MaxRequestsPerChild: 個々の子サーバが稼働中に扱うリクエスト数の上限
コメント