SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

CentOSでLAMP環境構築例

問題

さくらのVPSを借りました!

さくっとLAMP環境を構築したいです!

lamp

解答例

初期状態の CentOS6(64ビット版)からスタート。

インストール

全部 yum で。

apache

# yum install httpd mod_ssl

MySQL

# yum install mysql mysql-server

mysql はクライアント。mysql-server がデータベースサーバー。

バージョンは5.1が入る。最新版が欲しくなる気持ちはあるけど、効率優先で割り切る。

最新版が欲しい場合は、MySQL公式サイトでダウンロードできるRPMを使うと簡単。

php

# yum install php php-mbstring php-gd php-xml php-imap php-mcrypt php-pdo php-mysql

日本語使いたいならmbstringとか、画像処理もありならGDもとか、SOAP使うならsoapもとか、WordPress稼動させるならmysqlもとか。追加は後からでも気軽にできる。

バージョンは5.3系が入る。これも最新版がとても欲しいんだけど、効率優先で割り切る。5.3以上なら困ることもあまりないでしょう。

最新版が欲しい場合は、そんなに難しくないからphp公式サイトからソースをダウンロードして自分でコンパイルする。

設定

多人数で共有することなどは特に考えていない設定。

apache

VirtualHostをいくつか入れることになるのを想定して場所(/home/apache/vhosts)を用意。

vhostsの下にサイトごと(ホスト名ごと)のディレクトリを作って使うように考えている。ファイルの配置は好みに応じて決定されたし。

# mkdir -p /home/apache/vhosts
# chown -R apache:apache /home/apache

Virtualhostの設定をする。他の部分で大体の設定がされているので、ホスト名とドキュメントルートを書くだけでいい。

# vi /etc/httpd/conf.d/vhosts.conf

NameVirtualHost *:80

<VirtualHost *:80>
        ServerName default
        DocumentRoot /home/apache/vhosts/default/www
</VirtualHost>

<VirtualHost *:80>
        ServerName example.com
        DocumentRoot /home/apache/vhosts/example.com/www
        <Directory /home/apache/vhosts>
                # .htaccessを使いたいときなど
                AllowOverride All
                # 他に設定があれば書く
        </Directory>
</VirtualHost>

ここまででapacheを再起動して設定を反映して、/home/apache/vhosts/default/www/test.php などに <?php phpinfo(); とだけ書いて保存して、http://IPアドレス/test.php にアクセスすると、phpinfoが表示される。

MySQL

起動する。

# /etc/init.d/mysqld start

rootにパスワードを設定する、リモートのrootでの接続不許可などの初期設定。

# /usr/bin/mysql_secure_installation
...
(以下対話式に設定)
...

MySQL 5.1 の初期状態の設定はあまりよろしくないので、InnoDB関連の設定だけはしておきたい(InnoDBを使う場合)。

InnoDBに関してそこまで性能を求めなければ、下記のInnoDB関連の設定は何もしないで次に進んでもよい。

# vi /etc/my.cnf

([mysqld]セクションに追記)

character-set-server = utf8
skip-character-set-client-handshake
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 64M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
thread_concurrency = 4

# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

設定の反映は、MySQLを停止して、log_file_sizeの設定を変えたので ib_logfile* を削除して、起動。

# /etc/init.d/mysqld stop
# rm /var/lib/mysql/ib_logfile*
# /etc/init.d/mysqld start

MySQLにはこのサーバーからしか接続しない場合、外部から接続できないように設定。外から見ると、「接続が許可されない(接続情報さえわかればつながりそう!)」のではなく「接続できない(稼動していない?)」ように見える。ファイヤーウォールの設定で対応してもよい。

#[mysqld]セクションに追記
# ローカルアドレスのみ(こうすると自身からのみしか接続できなくなる)
bind-address = 127.0.0.1

mysqlコマンド(クライアント)もutf8設定の方が何かと楽でしょう。

[client]
default_character_set = utf8

php

特にどうしても必要な設定はないけど、日本語のUTF-8なWebシステムを稼動させるなら、default_charset、mbstring.internal_encoding など指定しておいてよいでしょう。

default_charset = "UTF-8"

使ってみる

独自ドメインでWordPressを設置するなら、以下のような作業ですぐ使える。

  1. ホスト名を決める
  2. DNS設定などする
  3. WordPressのソースをダウンロードして解凍して置く
  4. apacheのVirtualHostの設定をする
  5. データベースと接続ユーザーを作る
  6. Web画面からインストール

関連するメモ

コメント