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.comのDNSは自分で書き換えてください。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