MySQLのインストールと設定

 LAMP環境をソースからコンパイルしてインストールする場合、まずはデータベースからウエブサーバーそしてPHPの順でインストールしていきます。これはコンパイル条件の都合上重要なので注意してください。まずは、あらかじめパッケージとしてインストールされているか確認します。パッケージ管理はルートにならないと確認できないのでルート権限になって打ちます。

・MySQLのインストール状況の確認

# yum list installed | grep mysql
あった場合、削除
# yum remove mysql-bench mysql-devel mysql-server mysql
・MySQLのインストール
http://dev.mysql.com/downloads/ から最新版のソースを落とします。適当な場所にダウンロードして解凍
# tar xvzf mysql-5.1.33.tar.gz
作成されたディレクトリに移動。mysql起動ユーザを作成します。
# cd mysql-5.1.33
# groupadd mysql
# useradd -g mysql mysql
コマンド解説
# ./configure \
--prefix=/usr/local/mysql \ インストールするディレクトリを指定します。
--with-charset=ujis \ デフォルトで使用される文字コードを指定します。
--with-extra-charsets=all \ デフォルトで以外の文字コードをサポートしたい場合の指定
--with-embedded-server \ 組込みサーバライブラリ(libmysqld)を作成
--without-readline \ ターミナルでの日本語不具合用のオプション
--enable-local-infile \ LOAD DATA LOCAL INFILE文を実行可能に
--enable-thread-safe-client \ スレッドセーフなクライアントライブラリを作成
--with-mysqld-user=mysql \ MySQLデーモンを起動するユーザーの指定
--with-mysqld-ldflags=-all-static \ 静的にリンクされたプログラムをコンパイル
--with-client-ldflags=-all-static
上記のコンフィグ情報を実行したら実際のコンフィグを実行します。
# ./configure

configureが終了したら、コンパイルして、インストールします。
# make
# make install

make install で、/usr/local/ディレクトリ以下にプログラムやファイルが以下のようにインストールされます。
ディレクトリ保存されるファイル
/usr/local/libexec/mysqld MySQLサーバ
/usr/local/bin/ コマンド類
/usr/local/lib/mysql/ ライブラリ
/usr/local/include/mysql/ includeファイル
/usr/local/var/ データベース保存先
・インストール後の設定
次に、/etc/ld.so.confを開いて以下のライブラリへのパスを追加します。
/usr/local/mysql/lib/mysql
その後、ldconfigを実行して設定を読み込みます。
# ldconfig

ユーザデータベースを初期化します。
# /usr/local/mysql/bin/mysql_install_db

アクセス権の変更を行います。mysqlディレクトリ(およびサブディレクトリ)の所有者をrootに、グループをrootグループに変更し、さらに、mysqlデータディレクトリ(およびサブディレクトリ)の所有者をmysqlユーザに、グループをmysqlグループに変更します。
# chown -R root /usr/local/mysql
# chgrp -R root /usr/local/mysql
# chown -R mysql /usr/local/mysql/var
# chgrp -R mysql /usr/local/mysql/var
・起動
MySQLを起動します。
mysqld_safeは、推奨されているmysqldの起動方法であり、エラー発生時に再起動するなどのセーフティ機能がついています。また「&」をつけてmysqldをバックグラウンドで実行しています。

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

キャラクタセットを指定して起動する場合は、次のようにします。 # /usr/local/mysql/bin/mysqld_safe --user=mysql --default-character-set=キャラクタセット名 &

MySQLサーバーに接続します。
# /usr/local/mysql/bin/mysql

次のコマンドプロンプトが出てくれば、インストール成功です。quit または、exit を入力して、いったん接続を切断してください。
mysql>

root にパスワードを設定します。ここでは passwd になってます。
# /usr/local/mysql/bin/mysqladmin -u root password passwd

MySQLのデーモン(サービス)停止は、以下のコマンドで行うことができます。
# /usr/local/mysql/bin/mysqladmin shutdown -u root -p

コマンド検索パスに、mysqlディレクトリへのパスを追加します。Vi を使用して、ホームディレクトリにある .Bashrc ファイルを開きます。
# vi ~/.bashrc

.bashrc の任意の場所に、次の行を追加してください。
export PATH="$PATH":/usr/local/mysql/bin

追加後、次のコマンドを実行して設定を反映します。
# source ~/.bashrc

これで、/usr/local/mysql/bin がコマンド検索パスに追加されたため、どのディレクトリからもコマンドで mysql -u root -p と入力すれば、MySQL にログインできるようになりました。以上でLinux上でのMySQLのインストールと設定は終わりです。

TOP

mysqldオプション

 MySQLサーバ起動時のオプションの一部を紹介します。「mysqld_safe」(Linux)や「mysqld-nt」(Windows)の後にスペースを入れて、以下のオプションを続けます(オペレーティングシステムによっては一部使えないものもあります)

オプション説明
--ansi MySQL構文ではなく、SQL99構文を使用
-h, --datadir=パス データディレクトリのパス
--default-character-set=キャラクタセット名 デフォルトのキャラクタセットを設定
--default-table-type=テーブル名 デフォルトのテーブル型を設定
--flush SQLコマンド実行後、ディスクへの変更をすべてフラッシュ。MySQLがクラッシュする場合に行ってみるとよいでしょう
-?, --help ショートヘルプを表示。「--verbose --help」とすると長いヘルプが表示
-L, --language=言語名 クライアントエラーメッセージに使用する言語。日本語の場合、「--language=/usr/local/share/japanese」(パスは異なる場合もあります)
-l, --log [=ファイル名] 接続とクエリをログファイルに記録します
--log-bin [=ファイル名] データを変更するクエリをすべてログファイルに記録。バックアップおよびレプリケーション用に使用します
--log-bin-index [=ファイル名] バイナリログファイル名のインデクスファイル
--log-error [=ファイル名] エラーメッセージおよびスタートアップメッセージを指定のログファイルに記録
--log-long-format 追加情報をログファイルに記録(有効化されているすべてのログ)
--log-short-format ログファイル(有効化されているすべてのログ)へ書き出される情報が少なくなります
--log-slow-queries [=ファイル名] 実行時間がグローバル変数long_query_timeで指定された秒を超えたクエリをすべてログファイルに記録
--skip-innodb InnoDBテーブルの使用を無効にします。メモリとディスク領域の節約および演算処理のスピードアップに役立ちます。テーブル作成時に「ENGINE=InnoDB」を指定してもMyISAMテーブルが作成されます
--socket=パス Linuxでは、ローカル接続に使用するソケットファイル(デフォルトでは/tmp/mysql.sock)を指定。Windowsでは、名前つきパイプを使用するローカル接続用パイプ名(デフォルトではMySQL)
-t, --tmpdir=パス テンポラリファイルの作成に使用されるディレクトリの位置を指定。MySQL4.1以降、複数のパスの指定が可能。Linuxでは、「:」(コロン)を、Windowsでは「;」(セミコロン)を使用してパスを区切ります
-u, --user={ ユーザ名 | ユーザID } mysqldサーバをユーザ名またはユーザIDとして実行。このユーザ名はシステムのユーザのことです
-V, --version バージョン情報を表示

TOP

サーバが起動しているかどうか確認する

 MySQLのサービスが稼動しているかどうかをコマンドで確認できます。「mysqld is alive」と出てくればサービス稼動中です。

・Windows

C:\Program Files\MySQL\MySQL Server 5.1\bin>mysqladmin -u root -p ping
Enter password: ******
mysqld is alive
・Linux
# /usr/local/mysql/bin/mysqladmin ping -u root -p
Enter password: 
mysqld is alive
 サービスが起動していないときは、以下のような表示が出ます。

・Windows
C:\Program Files\MySQL\MySQL Server 5.1\bin>mysqladmin -u root -p ping
Enter password: ******
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to MySQL server on 'localhost' (10061)'
Check that mysqld is running on localhost and that the port is 3306.
You can check this by doing 'telnet localhost 3306'

・Linux
# /usr/local/mysql/bin/mysqladmin ping -u root -p
Enter password: 
/usr/local/mysql/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!

TOP

デーモンを登録

 再起動のたびにこのコマンドを手打ちするのも大変なので、/etc/rc.d/rc.local にコマンドを追記または、rcスクリプト(起動スクリプト)を用意することで、OSの起動時に自動的にデーモン(MySQLサービス。Windowsでいうところのサービスと同じ)を起動させてくれます。rcスクリプト(起動スクリプト)を用意します。展開されたソースの中(support-files)にrcスクリプトの雛形(mysql.server)がありますので、そちらを使用します。まず、mysql.serverをrc.mysqlなどの適当な名前に変更し保存します。

# cd support-files
# cp mysql.server rc.mysql
# chmod +x rc.mysql
 で実行可能にし、/etc/rc.d/init.dにファイルを移動します。
# mv rc.mysql /etc/rc.d/init.d/
 ただし、このままではマシンを再起動しても有効に動きません。
 /etc/rc.d/rc2.d/にリンクを張っておきましょう。
# cd /etc/rc.d/rc2.d/
# ln -s ../init.d/rc.mysql S90mysql
 このrcスクリプトを使うことで、起動時のオプションを /etc/my.cnf ファイルに記述する形で指定できます。support-filesディレクトリにはさまざまな場合に応じたcnfファイルが用意されています。huge→large→medium→small の順で規模を選べますが、大きなデータベースに合わせたcnfファイルは、当然ながら大容量のメモリを積んでいることを前提としています。

 適当なcnfファイルを選び、/etc/my.cnf にコピーします。

# cp my-XXX.cnf /etc/my.cnf
 とりあえず、MySQLを動かしたいという人は/usr/local/bin/safe_mysqld --user=mysql & で十分です。後々データベースを最適に動作するように調整したい場合、接続クライアント数をデフォルトから増やしたい場合などには、「/etc/my.cnf ファイルを書き換えることで対処できる」ということを覚えておいてください。

TOP

Apacheのインストールと起動

 あらかじめパッケージとしてインストールされているか確認します。パッケージ管理はルートにならないと確認できないのでルート権限になって打ちます。

・Apacheのインストール状況の確認

# yum list installed | grep httpd
 あった場合、削除
# yum remove httpd
 http://httpd.apache.org/download.cgi から最新版のソースを落とします。
 適当な場所にダウンロードして解凍
# tar xvzf httpd-2.2.11.tar.gz
 作成されたディレクトリに移動
# cd httpd-2.2.11
 次にコンパイルのための設定を行います。--enable-so(DSOオプション)をつけてインストールすると、Apacheをリコンパイルすることなく設定ファイルを書き換えるだけで動的にモジュールの追加や削除ができます。
# ./configure --enable-so
 終わったら、コンパイルしてインストールします。
# make
# make install
 これでインストールは終了です。エラーが出る場合はコンパイルの際に必要なライブラリファイルが存在していない場合があるのでそこはエラーコードを参照にパッケージでインストールします。
 # yum install エラーコードを参照に必要なパッケージの名前
Apacheの起動
# /usr/local/apache2/bin/apachectl start
Apacheの再起動
# /usr/local/apache2/bin/apachectl restart
Apacheの停止
# /usr/local/apache2/bin/apachectl stop
 Webブラウザを起動させ、アドレス欄に http://localhost/ もしくは http://127.0.0.1/ を入力してApacheの初期画面が表示されれば起動確認は終了です。

TOP

PHPのインストールと設定

 あらかじめパッケージとしてインストールされているか確認します。パッケージ管理はルートにならないと確認できないのでルート権限になって打ちます。

・PHPのインストール状況の確認

# yum list installed | grep php
 あった場合、削除
# yum remove php
・PHPのインストール  http://www.php.net/downloads.php から最新版のソースを落とします。
Apacheと同じように解凍、ディレクトリへ移動
# tar xvzf php-5.2.9.tar.gz
# cd php-5.0.3
 コンパイルのための設定を行います。インストールしたMySQLのバージョンが4.1.2未満の場合は、改良版のMySQL拡張サポートが動作しないので、--with-mysqliオプションを外します。
コマンド解説
# ./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \ PHPをApacheのDSO拡張モジュールとして動作させます
--with-mysqli=/usr/local/mysql/bin/mysql_config \ PHPのmysqli拡張サポートを有効にします
--with-mysql=/usr/local/mysql \ PHPのmysql関数を有効にします
--enable-mbstring mbstring(マルチバイト拡張)関数を有効にします
--enable-mbregex マルチバイトに対応した正規表現関数を有効にします
 設定と設定の説明は以上です。
 次にコンパイルしてインストールします。
# make
# make install
 php.ini-dist を php.ini の名前で /usr/local/lib にコピーします。
# cp php.ini-dist /usr/local/lib/php.ini

TOP

php.ini の設定

 /usr/local/lib/php.ini を開いて、以下のとおりに設定を変更します。

インクルードパスを変更する。
include_path = ".:/usr/local/include/php:/usr/local/lib/php"

ドキュメントルートへのパスを設定します。
doc_root = "/usr/local/apache2/htdocs"

拡張モジュールへのパスを変更します。
extension_dir = "/usr/local/include/php/ext"
 EUC-JPユーザ用の設定を行います。次の設定は、PHPスクリプトの内部エンコードがEUC-JP、Webブラウザ出力もEUC-JPである場合の設定方法です。以下を参考に、php.ini内の設定項目を探して変更してください。コメントアウトされているものについては、コメント記号を外してください。
出力バッファリングを無効にします。
output_buffering = off

デフォルトの文字コードをEUC-JPにします。
default_charset = "EUC-JP"

デフォルトの言語を日本語に設定します。
mbstring.language = Japanese

内部エンコーディングを設定します。
(この設定にあわせた文字コードでPHPスクリプトを保存しなければなりません)
mbstring.internal_encoding = EUC-JP

HTTP入力文字コードを設定します。autoで自動変換を行います。
mbstring.http_input = auto

Webブラウザに出力する文字コードを設定します。
mbstring.http_output = EUC-JP

入力文字のエンコーディング検出および内部文字エンコーディングへの変換を設定します。
mbstring.encoding_translation = On

文字コード変換の優先順序を指定します。autoを指定すると自動設定されます。
mbstring.detect_order = auto

代替文字のデフォルト値を指定します。
mbstring.substitute_character = none;

TOP

httpd.conf の設定

 Apache の設定ファイルの編集を行います。
/usr/local/apache2/conf/httpd.conf を開いて、AddType の連続する箇所の下に以下を追加します。

AddType application/x-httpd-php .php
 また、以下の行のISO-8859-1をOffに変更します。ファイルに存在しない場合には、この行を追加してください。
AddDefaultCharset Off
以上を変更したら、変更内容を反映させるために、Apacheを再起動します。
# /usr/local/apache2/bin/apachectl restart

TOP

PHP動作の確認

 Apacheの再起動後、実際に PHPが動作するかを確認します。非常に簡単なスクリプトで、PHPの情報を得ることができますので、viから以下のようにタイプしてください。

<?php
   phpinfo();
?>
簡単なのですぐに作れるでしょう。これを「phpinfo.php」というように、ファイル名と拡張子をつけて、Apache Groupフォルダの Apach2フォルダ内にある htdocsフォルダに保存します。保存後、いつも利用している Webブラウザを起動して、そのURL欄に、「http://localhost/phpinfo.php」とタイプして、Enterキーを押してください。以下のような画面が出れば、PHPのインストールが成功した証拠になります。


TOP