メイン

2007年02月12日

AMP on a USB 設定

USBメモリ内に Apache + PHP + MySQL の開発環境を設定することができます。
これで外出先でのデモや開発が容易に行えます。

本家サイトはこちら。
http://www.firepages.com.au/php_usb.htm
   ちなみにこのサイトは数年前にApache + PHP + MySQL を一括でインストールするツールを配布していたサイトでした。 トレードマークのマイケルジャクソンに見覚えがありました。

php_usb というZIPファイルをダウンロードして解凍後、USBメモリにコピーします。
本家サイトどおりにやりました。
ディレクトリ構成はこうなります。

$usb:/
-------------start.bat
-------------pdrive/
------------------------php.ini
------------------------start.php
------------------------apache-2.0.50/
------------------------php-5.0.3/
------------------------mysql/
------------------------www/ *ドキュメントルート
------------------------sess/ *セッションデーターのための空ディレクトリ

私はApache, NySQLはWindowsにインストールしているものをそのままコピーしています。
Apache
C:\Program Files\Apache Group\Apache2以下を USB:\pdrive\apache-2.0.50以下にコピーして
conf ファイルのみ配布されているものに置き換えます。

MySQL
C:\Program Files\MySQL\MySQL Server 5.0以下を USB:\pdrive\mysql以下にコピーしました。

PHP
PHP本家サイトよりphp-5.0.3-Win32.zip をダウンロードして解凍後、USB:\pdrive\php-5.0.3にコピーしました。

これで準備はほぼ完了です。
しかしこのままでは動かなかったのでconfファイルの書き換えが必要でした。
こんな風にしてチェックしてみるといいでしょう。

USB:\pdrive\apache-2.0.50\conf\httpd.conf の56行目
「LoadModule ssl_module modules/mod_ssl.so」をコメントにします。
これはもともとインストールしていたApacheが apache_2.0.51-win32-x86-no_ssl.exe でSSL対応でなかったためと思われます。

またUSB:\pdrive\php.ini も修正していたほうがよさそうです。
「session.save_path = "\\pdrive\\sess"」をコメントに
 *phpMyAdminを使ったときにセッションをこのディレクトリに見に行って失敗していました。
   セッション保存領域は明示的にしないほうがよさそうです。

これが終わったら start.bat をダブルクリックして起動してみましょう。
http://localhost:85/ でブラウザが起動してディレクトリが見えれば成功です。

うまくいかない場合は、start.bat で呼び出されるUSB:\pdrive\start.php 内部をコメントにしたりして試してみてください。
これがUSB内のアプリケーションを制御している大本になっています。

echo "starting MySQL ....\n";
pclose(
popen(
'start pdrive\\mysql\\bin\\mysqld-nt.exe --basedir=/pdrive/mysql --datadir=/pdrive/mysql/data --port=3307 --console --standalone'
,'r' )
);
echo "starting apache....\n";
flush();
pclose(popen('start pdrive\\apache-2.0.50\\bin\\apache.exe','r'));
flush();
sleep(5);
echo 'opening localhost';
exec( 'start http://localhost:85');


2006年10月10日

DB定義書出力プログラム

Perlモジュールを使ってエクセルファイルを作ります
ソースはこんな感じ。
設定を変えればPostgreSQL, MySQL 両方で使えます

#!C:\Perl\bin\perl
#!/usr/local/bin/perl

use strict;
use DBI;
use Jcode;
use Spreadsheet::WriteExcel;
use DBIx::DBSchema;

#設定
my $DSN = 'dbi:mysql:DB名:サーバー名';
my $DB_USER = 'ユーザー名';
my $DB_PASSWD = 'パスワード';
my $XLS_FILE = '出力ファイル名';

my $dbh = DBI->connect($DSN, $DB_USER, $DB_PASSWD) or die $DBI::errstr;
my $xls = Spreadsheet::WriteExcel->new($XLS_FILE);
my $schema = new_native DBIx::DBSchema $dbh;

for my $table ($schema->tables()) {
my $work = $xls->addworksheet("$table");

$work->write(0, 0, 'INDEXES');
my $index_ref = $dbh->selectall_arrayref("SHOW INDEX FROM $table");
write_worksheet($work, $index_ref, 1);

$work->write(3 + $#{$index_ref}, 0, 'COLUMNS');
my $column_ref = $dbh->selectall_arrayref("DESCRIBE $table");
write_worksheet($work, $column_ref, 4 + $#{$index_ref});
}

$dbh->disconnect;


sub write_worksheet {
my($work, $ref, $offset) = @_;
for my $row (0 .. $#{$ref}) {
for my $col (0 .. $#{$ref->[$row]}) {
$work->write($row + $offset, $col, $ref->[$row]->[$col]);
}
}
}

2006年10月09日

Pear DB MySQL 文字コードセット

$db = DB::connect($dsn);
if (DB::isError($db)) { die($db->getMessage()); }

この後に
「$db->query('SET NAMES ujis');」 でujis設定します

?charset=ujis では不十分でした
MySQL 5 にアップグレードするときは要注意


2006年10月06日

mysql データリストア

dumpからのリストアです

データベースを作る ない場合のみ
mysqladmin create DBNAME

mysql -u USERNAME DBNAME < DUMPNAME

バックアップはこんな感じ
/usr/local/mysql/bin/mysqldump --opt -v -uUSRNAME -pPASSWORD DBNAME > DBNAME.sql

2006年10月04日

MySQL DumpImport

MySQLの大きなサイズのdumpファイルを取り込むときは
BigDumpというツールが便利です

BigDump: Staggered MySQL Dump Importer
http://www.ozerov.de/bigdump.php

アーカイブ展開後、ソースの下記4点に記入
$db_server = '';
$db_name = '';
$db_username = '';
$db_password = '';

dumpふぁいると一緒にアップロードしてブラウザからアクセスするだけ

2006年09月27日

ActivePerl での DBD::mysql インストール

Windows XPでのお話

>cpan
>install DBI
>install DBD::mysql

ここでなせがエラーが出て先に進まなくなった。
なのでここから DBD-mysql-3.0002.zipをダウンロードしてインストールすることに
http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/

ppm install C:\download\DBD-mysql-3.0002\DBD-mysql.ppd

できたっぽい

2006年08月16日

MySQL バックアップ

/usr/local/mysql/bin/mysqldump --opt -v -uUSERNAME -pPASWORD DBNAME >DBNAME.dump

USERNAME, PASSWORD, DBNAME は環境に合わせてください
これでdumpがとれます ただし文字コードはUTF-8になるみたいです

圧縮するときはこんな風に

/usr/local/mysql/bin/mysqldump --opt -v -uUSRNAME -pPASSWORD DBNAME | gzip >DBNAME.sql.gz

PostgreSQLのpg_dump みたいにcron に登録しておきます

2006年08月01日

MySQL 4.0.xインストール

ftp://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-4.0/ よりmysql-4.0.27.tar.gz をダウンロードする

tar xvzf mysql-4.0.27.tar.gz
cd mysql-4.0.27
./configure --with-charset=ujis --with-extra-charsets=all --with-mysqld-user=mysql --enable-local-infile --prefix=/usr/local/mysql
make
make install

環境設定
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
chown -R mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysql

DB初期化
/usr/local/mysql/bin/mysql_install_db --user=mysql

起動
/usr/local/mysql/bin/mysqld_safe &

テスト
/usr/local/mysql/bin/mysqlshow
うまくいけばこういう風に表示されます
+-----------+
| Databases   |
+-----------+
| mysql     |
| test     |
+-----------+

起動スクリプト設定
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql

mysql のrootパスワードを設定
/usr/local/mysql/bin/mysqladmin -u root password [パスワード]
/usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password [パスワード]

動作確認
/etc/init.d/mysql start
/etc/init.d/mysql stop

2006年06月10日

phpMyAdmin インストール

MySQLの管理ツール phpMyAdmin のインストールです

wget http://jaist.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.8.0.4.tar.gz
tar xvzf phpMyAdmin-2.8.0.4.tar.gz
cd phpMyAdmin-2.8.0.4
cp libraries/config.default.php config.inc.php

config.inc.php を作成して下記3点の修正でOK
vi config.inc.php
$cfg['Servers'][$i]['host'] ='localhost' // MySQL hostname or IP address
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = 'password'; // MySQL password (only needed

ブラウザからアクセスできるようにすればすぐに使えます
$cfg['Servers'][$i]['auth_type'] = 'config';  のままBasic認証をかけて使っています

MySQL インストール

MySQL 3.23.58のインストールメモです ちょっと古いけど・・・
ユーザー mysql と グループ mysql は作っておくものとします

tar xvzf mysql-3.23.58.tar.gz
cd mysql-3.23.58

./configure --with-charset=ujis --with-extra-charsets=all --with-mysqld-user=mysql --with-innodb --enable-local-infile --prefix=/usr/local/mysql --with-unix-socket-path=/mp/mysql.sock

make
make install > install.log
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
chown -R mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysql

#DB初期化
/usr/local/mysql/bin/mysql_install_db --user=mysql

#準備
mkdir /mp
touch /mp/mysql.sock
chown mysql -R /mp
chmod 666 /mp/mysql.sock

#起動
/usr/local/mysql/bin/safe_mysqld --user=mysql &

うまくいかないときは
/usr/local/mysql/var/localhost.localdomain.err のエラーログを見てみる
おそらく/mp/mysql.sock の権限か/usr/local/mysql/var/のオーナーだ
chown mysql.mysql -R /usr/local/mysql/
chown mysql.mysql -R /mp

# 起動
/usr/local/mysql/bin/mysqld_safe --user=mysql &

インストールに成功したかどうかテストします。
# テスト
/usr/local/mysql/bin/mysqlshow

# インストールに成功していれば、データベース一覧が表示されます。
+-----------+
| Databases  |
+-----------+
| mysql     |
| test      |
+-----------+

#mysql のrootパスワードを設定します パスワードは任意の文字列でOK
/usr/local/mysql/bin/mysqladmin -u root password [パスワード]
/usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password [パスワード]

#起動スクリプト設定
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql

/etc/init.d/mysql start で起動 
/etc/init.d/mysql stop で停止


【忘れたrootのパスワードを再設定する方法】 

設定手順

MySQLは、rootのパスワード忘れてしまった場合、いったん権限を無効にして起動すれば、パスワードを忘れてしまっても再設定できます。

いったんMySQLを停止し、以下のコマンドオプション("--skip-grant-tables")を付加して起動します。

# service mysqld stop
# /usr/bin/safe_mysqld --skip-grant-tables
Starting mysqld daemon with databases from /var/lib/mysql

以下のコマンドでMySQLを立ち上げて以下のようにコマンドを入力すれば変更できます。

# mysql -u root mysql

mysql> UPDATE user SET Password=PASSWORD('mynewpassword') WHERE User='root';
mysql> FLUSH PRIVILEGES;

変更後は、MySQLを落として、通常の設定で起動します。
/etc/init.d/mysql start