昨日に引き続きApache設定 + Mysqlインストール
Centosに最初から入っているApacheが起動しているので、自分が入れたほうが起動するように変更する
mysqlがすでに入っているので、削除して再インストールする
# rpm -qa mysql* mysql-5.0.22-2.1.0.1 mysql-server-5.0.22-2.1.0.1 mysql-connector-odbc-3.51.12-2.2
依存関係を無視してアンインストールする
# rpm -e --nodeps mysql* error: package mysql* is not installed # rpm -e --nodeps mysql-5.0.22-2.1.0.1 # rpm -e --nodeps mysql-server-5.0.22-2.1.0.1 # rpm -e --nodeps mysql-connector-odbc-3.51.12-2.2
昨日、見ることができたページを見ることができなくなっていた
httpd.confファイルの編集を昨日行ったが、そのファイルはあらかじめインストールされていたApacheのもので、自分がソースから入れたものではないことがわかった
昨日:/etc/httpd/conf/httpd.conf
今日:/usr/local/apache2/conf/httpd.conf
参考
http://httpd.apache.org/docs/2.0/ja/invoking.html
編集内容は昨日と同様
# AddHandler cgi-script .cgi ↓ AddHandler cgi-script .cgi .pl ScriptAlias /cgi-bin/ /home/*/public_html/cgi-bin/ <Directory /> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> <Directory /home/*/public_html/cgi-bin> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory>
上の設定は行き当たりばったりな感じがするので何とかしたい
とりあえず動作は確認できたのでよしとする
# wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.51a-linux-i686.tar.gz/from/http://mirror.mysql-partners-jp.biz/ # tar -xzf mysql-5.0.51a-linux-i686.tar.gz # mv mysql-5.0.51a-linux-i686 /usr/local/mysql # groupadd mysql # adduser -g mysql -d /usr/local/mysql/data mysql adduser: warning: the home directory already exists. Not copying any file from skel directory into it. # cd /usr/local/mysql # ./scripts/mysql_install_db --user=mysql # /usr/local/mysql/bin/mysqld_safe &
mysqlに接続できた
# adduser -g mysql -d /usr/local/mysql mysql adduser: user mysql exists # chown -R mysql:mysql /usr/local/mysql/
rootにパスワードを設定しようとしたらできない
mysql> set password for root=password('root'); ERROR 1133 (42000): Can't find any matching row in the user table
Hostによって異なるようなので
mysql> select Host,User,Password from user; +-----------+------+----------+ | Host | User | Password | +-----------+------+----------+ | localhost | root | | | webtest2 | root | | | 127.0.0.1 | root | | | localhost | | | | webtest2 | | | +-----------+------+----------+ mysql> set password for root@webtest2=password('root'); Query OK, 0 rows affected (0.00 sec) mysql> create database kakeibo; mysql> grant all on kakeibo.* to guest@localhost identified by 'guest'; mysql> flush privileges; mysql> alter database kakeibo character set utf8; テーブルの作成
samba設定
# pdbedit -a otsuki tdbsam_open: Converting version 0 database to version 3. new password: retype new password: # smbpasswd -a otsuki New SMB password: Retype new SMB password:
sambaよくわからないので中止
mysqlをRPMを依存関係無視でアンインストールしたのが元で?
[Wed Jun 04 16:26:52 2008] [error] [client 172.16.1.64] install_driver(mysql) failed: Can't load '/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.15: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230.
というエラーがでる。直るのか?
これを参考にがんばる
http://d.hatena.ne.jp/uchiuchiyama/20060502
/etc/ld.so.conf.d/mysql-db.conf
ファイルを作成して
/usr/local/mysql/lib
を書き込む
# ldconfig
を実行。-vで詳細が出力
接続できた。文字化けしてるけど…。
submit_test.cgiのブラウザ上での結果
1??No 2????No 3?????No 4?????No 5??No 6????No 7?????No 8???No 9??No 10????No 11??No 12?????No 13?????No 14????Yes 15?????Yes 16?????Yes
firefoxの文字エンコードをeuc、sjis、utf8でやっても変わらず
DBを直で見てみる
mysql> select * from category; +----+-------+-------------+ | id | name | income_flag | +----+-------+-------------+ | 1 | ?? | No | | 2 | ???? | No | | 3 | ????? | No | | 4 | ????? | No | | 5 | ?? | No | | 6 | ???? | No | | 7 | ????? | No | | 8 | ??? | No | | 9 | ?? | No | | 10 | ???? | No | | 11 | ?? | No | | 12 | ????? | No | | 13 | ????? | No | | 14 | ???? | Yes | | 15 | ????? | Yes | | 16 | ????? | Yes | +----+-------+-------------+ 16 rows in set (0.00 sec)
もとが駄目。ほかのテーブルも確認する。
テーブルを作り直して、やり直す
mysql> select * from category; +----+-----------------+-------------+ | id | name | income_flag | +----+-----------------+-------------+ | 1 | 食費 | No | | 2 | 衣服・靴 | No | | 3 | 水道・光熱 | No | | 4 | 家具・生活 | No | | 5 | 住居 | No | | 6 | 医療衛生 | No | | 7 | 交通・通信 | No | | 8 | 車関係 | No | | 9 | 教育 | No | | 10 | 教養娯楽 | No | | 11 | 交際 | No | | 12 | 保険・税金 | No | | 13 | その他支出 | No | | 14 | 給与所得 | Yes | | 15 | 利息・配当 | Yes | | 16 | その他収入 | Yes | +----+-----------------+-------------+ 16 rows in set (0.00 sec)
ブラウザ表示は変わらず
以下の内容test.cgiファイルを作成して確認する
print "Content-type: text/html\n\n";
print "文字エンコードテスト!";
正しく表示された。DBを使うと問題がある模様。
問題があるsubmit_test.cgiに
print "テスト文字エンコードテスト\n";
と書いてテスト
テスト文字エンコードテスト 1??No
2????No
3?????No
4?????No
やはり、DBから取り出されたものだけ表示がおかしい。
> status; 略 Server characterset: latin1 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8