KAGOYA VPSでLAMP構築。WEBサーバーの設定~MySQLの設定まで

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: 個々の子サーバが稼働中に扱うリクエスト数の上限

 

参考にさせて頂いたサイト

さくらのVPS入門 (全21回) – プログラミングならドットインストール
Apache の基本 -バーチャルホスト編- | バシャログ。

設定周りで悩んだら、お気軽にご相談ください。
問合せの際は「web担当者を見た」とお伝えください。

この記事を書いた人

デジタルマーケティングに16年間従事しているMITSUIです。Google AnalyticsとGoogle Tag Managerが大好きで、これらのツールを活用した情報提供を行っています。ブログではデジタルマーケティングに関する情報や最新のトレンド、ベストプラクティスを紹介しています。

コメント

コメントする

CAPTCHA


目次