FreeBSD10でphpMyAdmin導入

phpMyAdminをダウンロードし、コピーすればOK!!


# wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.3.12/phpMyAdmin-4.3.12-all-languages.tar.gz/download
# tar zxvf phpMyAdmin-3.5.5-all-languages.tar.gz
# cp phpMyAdmin-4.3.12-all-languages /www/my.net/phpMyAdmin

あれ、エラー画面です。

phpMyAdmin -エラー:mysqli/mysql拡張がありません。PHPの設定をチェックしてみてください。」とのこと。
これは、PHPmysqlを使用する前提で構築されていないのが原因。

configureのオプションを増やし、PHPを再度makeしなおします。


% cd (php-5.6.7のディレクトリ)
% ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config
% make
% make test
% su
# make install
# /usr/local/apache2/bin/apachectl restart


ログイン画面が表示されたので多分OK^^

FreeBSD10にmySQLをインストール

開発環境が壊れたため久しぶりに環境構築。

OSはFreeBSD10.1を採用。
相変わらず必要最小限環境の構築を行います。

wget 16.1 (最新の16.3はnettleを構築できなかったのでとりあえず16.1を採用) ⇒ ここを参考
・apache2 2.2.29 ⇒ ここを参考
PHP 5.6.7⇒ ここを参考
(libxml2は2.9.2、perlは5.20.2を使用)
は過去と同じようにインストール。

cmakeにインストール

MySQLをmakeするのにcmakeが必要。

% wget http://www.cmake.org/files/v3.2/cmake-3.2.1.tar.gz
% tar zxvf cmake-3.2.1.tar.gz
% cd cmake-3.2.1
% ./configure
% make
% make test
% su
# make install

mysqlのインストール

続いて目的のmysql

% wget http://downloads.mysql.com/archives/get/file/mysql-5.5.41.tar.gz
% tar zxvf mysql-5.5.41.tar.gz
% cd mysql-5.5.41
% cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
% make
% make test
% su
# make install

mysql userを作成する


# adduser
Username: mysql
Full name: mysql database user
Uid (Leave empty for default):
Login group [mysql]:
Login group is mysql. Invite mysql into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]:
Home directory [/home/mysql]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : mysql
Password : *****
Full Name : mysql database user
Uid : 1002
Class :
Groups : mysql
Home : /home/mysql
Home Mode :
Shell : /bin/sh
Locked : no
OK? (yes/no): y
adduser: INFO: Successfully added (mysql) to the user database.
Add another user? (yes/no): n
Goodbye!
#

mysql userが資材を操作できるようにする。


# chown -R mysql:mysql /usr/local/mysql/

データディレクトリの作成


# mkdir /var/lib/mysql

初期化


# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/var/lib/mysql -basedir=/usr/local/mysql
↑は /usr/local/mysql/bin/ から場所が変わっていました。
/usr/local/mysql/scripts/ で ./mysql_install_db とかやってもうまくいかない。絶対パスで実行しないとならないらしい。

データディレクトリの権限を変更する。


# chown -R mysql:mysql /var/lib/mysql/*

自動起動設定を行う


# cp /usr/local/mysql/support-files/mysql.server /usr/local/etc/rc.d/mysqld.sh
なぜかsh拡張子を付けないと自動起動してくれなかった???
FreeBSDって拡張子関係するんだっけ???

データベース起動してみる


# service mysqld.sh start

ユーザーを作成する


# /usr/local/mysql/bin/mysqladmin -uroot password パスワード
# /usr/local/mysql/bin/mysql -uroot -p
(パスワード入力)
mysql>
(↑になれば成功)

HDD激遅 PIOモード

この所、HDDアクセスがメチャクチャ遅い???!!!



確認したらHDDデバイスの転送モードがPIOとなっていました。
確認のしかたは「コントロールパネル」⇒「システム」⇒「ハードウェア」⇒「デバイスマネージャー」⇒「IDE ATA/ATAPIコントローラー」⇒「プライマリ(セカンダリ)IDEチャネルのプロパティ」⇒「詳細設定」



このモードはHDDアクセスエラーが6回起きると、自動的になるとのことです。
が、解除しないと遅くてやってられないので、この「プライマリ(セカンダリ)IDEチャネル」を右クリックして「削除」します。
windows再起動を求められるので再起動します。
⇒起動してすぐ、ドライバ再インストールが始まり、再度再起動を求められますので再起動します。



無事「ウルトラDMA モード5」というのになりました。



ベンチマークテストもかなり改善されました^^

apache2にmod_rewriteの組み込み

Wordpressパーマリンク設定をデフォルト以外に変更するにはこのモジュールが必要となります。
configureからやり直すのはつらいので、apxsで組み込みを行います。


sourceはmodules/mappersの中にあるのでこれをコンパイルします。
httpdをインストールしたときに使用したsourceが残っていればそれを資材として使用します。
削除してしまっていたら、同じバージョンのsourceを取得してきましょう。


# cd httpd-2.2.23/modules/mappers
# /usr/local/apache2/bin/apxs -c mod_rewrite.c
# su
$ /usr/local/apache2/bin/apxs -i -a -n rewrite mod_rewrite.la
$

このさぎょうでhttpd.confの中に以下の1行が追加されているはずです


LoadModule rewrite_module modules/mod_rewrite.so

これでモジュールは使用できるようになったのですが実はhttpd.confか.htaccess

AllowOverride All

などを入れる必要があります。(AllではなくFileInfoなどにしたほうがなおBest)

設定例:/usr/local/apache2/conf/extra/httpd-vhosts.conf


<Directory "/www/">
# AllowOverride None
AllowOverride All
Order allow,deny
Allow from all

php_value post_max_size 104857600
php_value upload_max_filesize 104857600
</Directory>

FreeBSD9.xにmysql5.0.xを導入

http://dev.mysql.com/downloads/mysql/5.0.html#downloads
からsourceを取得。
5.5系とか5.6系などはcmakeとかよくわからないので検討事項にする…


# tar zxvf mysql-5.0.96.tar.gz
# cd mysql-5.0.96
# ./configure --prefix=/usr/local/mysql \
--enable-assembler \
--with-charset=utf8 \
--with-unix-socket-path=/var/lib/mysql/mysql.sock \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-embedded-mysqli \
--with-embedded-server \
--with-extra-charsets=binary,utf8,cp932,eucjpms,ujis,ucs2,latin1,sjis \
--without-readline \
# make
# su
$ make install
テンプレートをコピー

# cp support-files/my-medium.cnf /etc/my.cnf
my.cnfに以下を追加

[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
socket = /var/lib/mysql/mysql.sock
pid_file = /var/lib/mysql/mysql.pid
default-character-set=utf8
skip-character-set-client-handshake

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8

mysqlグループを作成する


# adduser
Username: mysql
Full name: user for mysql database
Uid [1003]:
Login group [mysql]:
Login group is mysql. Invite mysql into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]:
Home directory [/home/mysql]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : mysql
Password : *****
Full Name : user for mysql database
Uid : 1003
Class :
Groups : mysql
Home : /home/mysql
Home Mode :
Shell : /bin/sh
Locked : no
OK? (yes/no):y
Add another user? (yes/no):n
# install -d -o mysql -g mysql -m 2750 /usr/local/mysql/data
# install -d -o mysql -g mysql -m 2755 /var/lib/mysql
初期DBの作成

# /usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
データベース起動

# /usr/local/mysql/bin/mysqld_safe --user=mysql --skip-networking &
rootユーザーのパスワード設定と接続確認

# /usr/local/mysql/bin/mysqladmin -uroot password パスワード
# /usr/local/mysql/bin/mysql -uroot -p
(パスワード入力)
mysql>
(↑になれば成功)

自動起動を設定する


$ vi /usr/local/etc/rc.d/mysqld.sh

#!/bin/sh
echo -n ' mysql start shell!'

case "$1" in
start)
/usr/local/mysql/bin/mysqld_safe --user=mysql --skip-networking &
;;
stop)
kill `cat /usr/local/mysql/data/xxx.pid`
;;

*)
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac

exit 0


$ chomod 755 /usr/local/etc/rc.d/mysqld.sh
$ reboot
再起動してプロセスが動いていればOK

# ps -ax | grep mysql
1009 ?? I 0:01.18 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/u
935 v0- I 0:00.02 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --skip-networking
1151 0 R+ 0:00.00 grep mysql
#

apache2.2.x系 VirtualHost設定

apache2.2.x系ではhttpd.confではなくhttpd-vhosts.confに設定を行うようになっていた


$ vi /usr/local/apache2/conf/httpd.conf

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
下記のようにコメントアウトを解除

# Virtual hosts
Include conf/extra/httpd-vhosts.conf
続いてhttpd-vhosts.confを設定

$ vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
下記のように<VirtualHost>タグを作成

<VirtualHost *:80>
ServerAdmin miyokawa@miyokawa.net
DocumentRoot "/www/miyokawa.net"
ServerName miyokawa.net
ErrorLog "logs/miyokawa.net-error_log"
CustomLog "logs/miyokawa.net-access_log" common
</VirtualHost>
(miyokawa.netはローカルでしか閲覧できません)

apache再起動


$ /usr/local/apache2/apachectl restart

Nameサーバーなり端末のhostsファイルを変更しmiyokawa.netに接続
なぜか403 Forbiddenエラーになってしまう。
ディレクトリを閲覧する権限が無いということである。
/wwwを777に設定してみても変わらない。
なぜ????

httpd.confにこんな記述がありました。


<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
「Deny from all:すべての接続を拒否」って!

とりあえずhttpd-vhosts.confに以下を記述


<Directory "/www/">
AllowOverride None
Order allow,deny
Allow from all
</Directory>

FreeBSD9.xにSamba3.6.xをインストール


# wget ftp://ftp.samba.gr.jp/pub/samba/samba-3.6.10.tar.gz
# tar zxvf samba-3.6.10.tar.gz
# cd samba-3.6.10
configureはどこに??
source3の中にあるらしい。
source4の中はsamba4のソースが試験的に入っている模様。

# cd source3
# ./configure
# make
# su
$ make install
設定ファイルをコピー

$ cp ../examples/smb.conf.default /usr/local/samba/lib/smb.conf

/usr/local/samba/libの中にあるファイルをシェアードファイルとして登録します。


$ vi /etc/ld.so.conf.d/samba.conf

/usr/local/samba/lib

# ldconfig
# /usr/local/samba/sbin/smbd -D
Shared object "libtalloc.so.2" not found, required by "smbd"
だめだった・・・

しょうがない、無理やりリンク張ってみる


$ ln -s /usr/local/samba/lib/libtalloc.so.2 /usr/local/lib/libtalloc.so.2
$ ln -s /usr/local/samba/lib/libtdb.so.1 /usr/local/lib/libtdb.so.1
$ ln -s /usr/local/samba/lib/libwbclient.so.0 /usr/local/lib/libwbclient.so.0
$ /usr/local/samba/sbin/smbd -D
$ /usr/local/samba/sbin/nmbd -D

プロセスを確認します


$ ps -ax | grep smbd
25477 ?? Ss 0:00.11 ./smbd -D
25478 ?? S 0:00.00 ./smbd -D
25480 0 R+ 0:00.00 grep smbd
25460 1 S+ 0:00.01 tail -f log.smbd
$ ps -ax | grep nmbd
25482 ?? Ss 0:00.02 ./nmbd -D
25484 0 R+ 0:00.00 grep nmbd
$
正常に動作しているようです。

接続確認は後にして自動起動スクリプトを作成


# vi /usr/local/etc/rc.d/samba.sh

#!/bin/sh
#
smbspool=/var/spool/samba
pidfiledir=/usr/local/samba/var/locks
smbd=/usr/local/samba/sbin/smbd
nmbd=/usr/local/samba/sbin/nmbd
winbindd=/usr/local/samba/sbin/winbindd
# start
if [ "x$1" = "x" -o "x$1" = "xstart" ]; then
if [ -f $smbd ]; then
if [ -d $smbspool ]; then
rm -f $smbspool/*
fi
echo -n ' Samba'
$nmbd -D
$smbd -D
$winbindd
fi
# stop
elif [ "x$1" = "xstop" ]; then
kill `cat $pidfiledir/smbd.pid`
kill `cat $pidfiledir/nmbd.pid`
kill `cat $pidfiledir/winbindd.pid`
# restart
elif [ "x$1" = "xrestart" ]; then
$0 stop
$0 start
fi
echo
実験してみます

$ /usr/local/etc/rc.d/samba.sh stop
$ ps -ax | grep smbd
25542 0 R+ 0:00.00 grep smbd
$ ps -ax | grep nmbd
25544 0 RV 0:00.00 grep nmbd (csh)
$ /usr/local/etc/rc.d/samba.sh start
$ ps -ax | grep smbd
25549 ?? Ss 0:00.03 /usr/local/samba/sbin/smbd -D
25551 ?? S 0:00.00 /usr/local/samba/sbin/smbd -D
25555 0 R+ 0:00.00 grep smbd
25460 1 S+ 0:00.01 tail -f log.smbd
$ ps -ax | grep nmbd
25547 ?? Ss 0:00.01 /usr/local/samba/sbin/nmbd -D
25557 0 RV 0:00.00 grep nmbd (csh)
$
できればFreeBSDのrebootもしてみてください。

接続してみます。
windowsエクスプローラー(マイコンピューター)などで\\192.168.11.30など
サーバーのアドレスを入力。
おそらくユーザー名とパスワードを聞かれますが何を入れてもログインできないと思います。

samabaユーザーを登録します


# ./smbpasswd -a miyokawa
New SMB password: xxxx
Retype new SMB password: xxx
Added user miyokawa.
#

今度はちゃんと接続できたのではないでしょうか。