UbuntuのLAMP環境構築++

windows+xampp環境でのCakePHPの実行速度が隣の席の人の10倍遅いことが発覚したので特に原因を調べずにwindows+andLinux環境に乗り換える。とりあえずphpMyAdminが動いてバーチャルホストの設定をするところまで。公開するのは誰かに突っ込みを入れて欲しいから。

確認

# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=9.04
DISTRIB_CODENAME=jaunty
DISTRIB_DESCRIPTION="Ubuntu 9.04"

必要なアプリケーションのインストール

aptitude install apache2 #自動起動の設定は勝手にされるようだ
aptitude install mysql-server
aptitude install php5 #libapache2-mod-php5も同時にはいる
aptitude install php5-cli
aptitude install phpmyadmin #php5-mysqlも同時にはいる

#phpmyadminの設定ファイルをapache2に読ませる
ln -s /etc/phpmyadmin/apache.conf /etc/apache2/sites-enabled/phpmyadmin.conf 

#モジュールや設定を読み込ませるために再起動
apache2ctl restart

phpMyAdminの動作確認

ここまで正しくできていれば
http://サーバのアドレス/phpmyadmin
phpMyAdminにアクセスできるはずである。
phpMyAdminが表示されるということはapache,php,mysqlとそれぞれの接続が正しく動いているということである。

MySQLの設定

MySQL文字コードの設定を最初に変えておく
msyql -u root -p
でログインし、statusと打つと現在の設定が確認できる。

Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1

/etc/mysql/my.cnfを編集して

下記の設定を追加。デフォルトのキャラセットと文字コードの自動変換をやめさせる

[mysql]
default-character-set = utf8
[mysqld]
default-character-set=utf8 #MySQL5.5 などは character-set-server=utf8 とする
skip-character-set-client-handshake

再度mysqlでstatusをしてみて。

Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8

となっているのを確認。

Apacheの設定

バーチャルホストの設定

ためしにexample.comが表示できるようにしてみる。
これから追加するバーチャルホストは/var/www/example.com /vaw/www/example.jpのように/var/wwwのしたに並べていくことにする。

a2dissite default #最初のバーチャルホスト設定を無効に
rm /var/www/* -Rf #いまあるファイルを消す
cd /etc/apache2/site-available
cp default example.com #defaultを参考に新しいサイトを作る
rm default #不要

example.comの内容

<VirtualHost *:80>
        ServerName example.com
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/example.com/htdocs #公開フォルダ
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/example.com>
                Options -Indexes FollowSymLinks MultiViews #ファイル一覧を表示させない
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/log/apache2/example.com/error.log #ログの場所を変える

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/example.com/access.log combined #ログの場所を変える

</VirtualHost>
a2ensite example.com
mkdir /var/log/apache2/example.com
mkdir -p /var/www/example.com/htdocs
apache2ctl -k restart

サイトを有効化して再起動する。
http://example.com/でアクセスできれば成功(example.comDNSは自分で書き換えてください。hostsに書くとか)

ユーザ権限の設定

このサイトはtoyoshiというユーザが管理することにする。ユーザ権限の設定を適切にしないとapacheが作ったファイルが読めなかったり、逆にSCPやFTPで上げたファイルが扱えなかったりする。

chown -R toyoshi:www-data /var/www/example.com/ #所有者の変更
chmod -R 750 /var/www/example.com/ #書き込み権限を変更
usermod -g www-data toyoshi #作られるファイルのグループを統一(これなんとかならんかな
ログローテートの設定

これをしておかないとログファイルが大きくなりすぎてapacheがエラーを吐くようになる。
/etc/logrotate.d/apache2に以下の内容を追加。ログローテートを行う

/var/log/apache2/exmaple.com/*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
                if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
                        /etc/init.d/apache2 reload > /dev/null
                fi
        endscript
}

(追記)自己証明書でHTTPS接続ができるようにする

sudo aptitude install ssl-cert #便利なソフト
sudo mkdir /etc/apache2/ssl #鍵を置く場所を作る
sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem #鍵生成

/etc/apache2/sites-available/default-sslを最低3箇所書き換える

  • DocumentRootをお好きなところへ
  • SSLCertificateFile /etc/apache2/ssl/apache.pem
  • SSLCertificateKeyFile /etc/apache2/ssl/******(<=ランダムっぽいファイル名)
sudo a2enmod ssl #sslのモジュールを有効に
sudo a2ensite default-ssl #サイトの設定を有効に
sudo /etc/init.d/apache2 reload