Sep
04
- 開発方法について
-
Sep 4, 2008
今開発中のシステムの開発方法を明記しておきます。
PHPで開発しております。
- フレームワーク
- symfony まだまだ使いこなせていない
- テンプレートエンジン
- Smarty
ドキュメント、まだまだ知らないことがたくさんあります。
- データベースのコネクション
- PDO
はじめはやっかいだったが、今はないともう離れられない。
- テスト
- PHPUnit
まだ開発途中なので、これから検証してみる感じです。
- OS
- CentOS 5 final
- データベース
- MySQL 5.0.45
phpMyAdminとかで管理してるけど、あんまりセキュリティ上あんまりよくないとかで使ってない人が多いのを最近よく聞く。
- エディタ
- Emacs 22.1
Meadowは重いのがなぁ。。。早くなる方法ないのかな
phpMyAdminを落としてきます・
wget http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-2.11.8.1-all-languages.tar.gz
ファイルの移動
mv phpMyAdmin-2.11.8.1-all-languages.tar.gz /home/document/www/
解凍します。
xf phpMyAdmin-2.11.5.1-all-languages.tar.gz
わかりやすい名前にリネーム
mv ./phpMyAdmin-2.11.8.1-all-languages /phpMyAdmin
php-mysqlが入っていなければインストール
[root@localhost ~]# yum install php php-mysql
設定ファイルのコピー
[root@localhost ~]# cp /home/document/www/phpMyAdmin/config.sample.inc.php /home/document/www/config.inc.php
パーミッションの変更
[root@localhost ~]# chmod 660 /home/document/www/phpMyAdmin/config.inc.php
config.inc.phpを変更
[root@localhost ~]# vi /home/document/www/phpMyAdmin/config.inc.php
$cfg['blowfish_secret'] = '';パスワードを追加
$cfg[’Lang’] = ‘ja-utf-8′;日本語のために追加
php-mbstringとphp-mcryptのインストール
これをインストールしておかないと警告がでるので
mbstring
文字のエンコーディングなどに使用します。
警告内容
「PHP の mbstring 拡張が見つかりませんでした。マルチバイト文字セットを使用しているようですが、mbstring拡張がないと
phpMyAdmin は文字列を正しく分割できないため予期しない結果になることがあります」
[root@localhost ~]# yum -y install php-mbstring
mcrypt
暗号の処理に使用します。
警告内容
「mcrypt 拡張をロードできません。PHP の設定を確認してください」
[root@localhost ~]# yum -y install php-mcrypt
上記の内容で、phpMyAdminの設置が完了
CentOSにMysqlをインストール
yumでMysqlをインストール
[root@localhost ~]# yum -y install mysql-server
MySQL設定ファイル編集
[root@localhost ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
#aracter-set = utf8←コメントアウト+
default-character-set=utf8←追加
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8←追加
Mysqlを立ち上げてみる
[root@localhost ~]# /etc/rc.d/init.d/mysqld start
Timeout error occurred trying to start MySQL Daemon.
MySQL を起動中: [失敗]
失敗したので原因をさぐるためログを確認
[root@localhost ~]# vi /var/log/mysqld.log
InnoDB: Apply batch completed
080819 18:05:21 InnoDB: Started; log sequence number 0 43655
080819 18:05:21 [ERROR] Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist
080819 18:05:21 mysqld ended
MySQL データを初期化し、システム テーブルを作成さしてみる
[root@localhost ~]# mysql_install_db
もう一度起動してみる
[root@localhost ~]# /etc/rc.d/init.d/mysqld start
Timeout error occurred trying to start MySQL Daemon.
MySQL を起動中: [失敗]
またまた失敗したのでログを確認
エラーが変わる。
[root@localhost ~]# vi /var/log/mysqld.log
080819 18:25:48 [ERROR] /usr/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
080819 18:25:48 [ERROR] /usr/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
080819 18:25:48 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)
調べると”/var/lib/mysql”のアクセス権が正しくないらしい
ぼくはすべてがrootユーザの権限になっていた。
mysqlに権限を与える
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql
見事に機動・・・時間かかった。
[root@localhost ~]# /etc/rc.d/init.d/mysqld start
MySQL を起動中: [ OK ]