MySQLのインストールと設定
LAMP環境をソースからコンパイルしてインストールする場合、まずはデータベースからウエブサーバーそしてPHPの順でインストールしていきます。これはコンパイル条件の都合上重要なので注意してください。まずは、あらかじめパッケージとしてインストールされているか確認します。パッケージ管理はルートにならないと確認できないのでルート権限になって打ちます。
・MySQLのインストール状況の確認
・MySQLのインストール# yum list installed | grep mysql あった場合、削除 # yum remove mysql-bench mysql-devel mysql-server 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を起動します。TOP
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のインストールと設定は終わりです。
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 | バージョン情報を表示 |
サーバが起動しているかどうか確認する
MySQLのサービスが稼動しているかどうかをコマンドで確認できます。「mysqld is alive」と出てくればサービス稼動中です。
・Windows
・LinuxC:\Program Files\MySQL\MySQL Server 5.1\bin>mysqladmin -u root -p ping Enter password: ****** mysqld is alive
サービスが起動していないときは、以下のような表示が出ます。# /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
TOP# /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!
デーモンを登録
再起動のたびにこのコマンドを手打ちするのも大変なので、/etc/rc.d/rc.local にコマンドを追記または、rcスクリプト(起動スクリプト)を用意することで、OSの起動時に自動的にデーモン(MySQLサービス。Windowsでいうところのサービスと同じ)を起動させてくれます。rcスクリプト(起動スクリプト)を用意します。展開されたソースの中(support-files)にrcスクリプトの雛形(mysql.server)がありますので、そちらを使用します。まず、mysql.serverをrc.mysqlなどの適当な名前に変更し保存します。
で実行可能にし、/etc/rc.d/init.dにファイルを移動します。# cd support-files # cp mysql.server rc.mysql # chmod +x rc.mysql
ただし、このままではマシンを再起動しても有効に動きません。# mv rc.mysql /etc/rc.d/init.d/
/etc/rc.d/rc2.d/にリンクを張っておきましょう。
このrcスクリプトを使うことで、起動時のオプションを /etc/my.cnf ファイルに記述する形で指定できます。support-filesディレクトリにはさまざまな場合に応じたcnfファイルが用意されています。huge→large→medium→small の順で規模を選べますが、大きなデータベースに合わせたcnfファイルは、当然ながら大容量のメモリを積んでいることを前提としています。# cd /etc/rc.d/rc2.d/ # ln -s ../init.d/rc.mysql S90mysql
適当なcnfファイルを選び、/etc/my.cnf にコピーします。
とりあえず、MySQLを動かしたいという人は/usr/local/bin/safe_mysqld --user=mysql & で十分です。後々データベースを最適に動作するように調整したい場合、接続クライアント数をデフォルトから増やしたい場合などには、「/etc/my.cnf ファイルを書き換えることで対処できる」ということを覚えておいてください。 TOP# cp my-XXX.cnf /etc/my.cnf
Apacheのインストールと起動
あらかじめパッケージとしてインストールされているか確認します。パッケージ管理はルートにならないと確認できないのでルート権限になって打ちます。
・Apacheのインストール状況の確認
あった場合、削除# yum list installed | grep httpd
http://httpd.apache.org/download.cgi から最新版のソースを落とします。# yum remove httpd
適当な場所にダウンロードして解凍
作成されたディレクトリに移動# tar xvzf httpd-2.2.11.tar.gz
次にコンパイルのための設定を行います。--enable-so(DSOオプション)をつけてインストールすると、Apacheをリコンパイルすることなく設定ファイルを書き換えるだけで動的にモジュールの追加や削除ができます。# cd httpd-2.2.11
終わったら、コンパイルしてインストールします。# ./configure --enable-so
これでインストールは終了です。エラーが出る場合はコンパイルの際に必要なライブラリファイルが存在していない場合があるのでそこはエラーコードを参照にパッケージでインストールします。# make # make install
# yum install エラーコードを参照に必要なパッケージの名前
Webブラウザを起動させ、アドレス欄に http://localhost/ もしくは http://127.0.0.1/ を入力してApacheの初期画面が表示されれば起動確認は終了です。 TOPApacheの起動 # /usr/local/apache2/bin/apachectl start Apacheの再起動 # /usr/local/apache2/bin/apachectl restart Apacheの停止 # /usr/local/apache2/bin/apachectl stop
PHPのインストールと設定
あらかじめパッケージとしてインストールされているか確認します。パッケージ管理はルートにならないと確認できないのでルート権限になって打ちます。
・PHPのインストール状況の確認
あった場合、削除# yum list installed | grep php
・PHPのインストール http://www.php.net/downloads.php から最新版のソースを落とします。# yum remove php
Apacheと同じように解凍、ディレクトリへ移動
コンパイルのための設定を行います。インストールしたMySQLのバージョンが4.1.2未満の場合は、改良版のMySQL拡張サポートが動作しないので、--with-mysqliオプションを外します。# tar xvzf php-5.2.9.tar.gz # cd php-5.0.3
コマンド | 解説 |
# ./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 | マルチバイトに対応した正規表現関数を有効にします |
次にコンパイルしてインストールします。
php.ini-dist を php.ini の名前で /usr/local/lib にコピーします。# make # make install
TOP# cp php.ini-dist /usr/local/lib/php.ini
php.ini の設定
/usr/local/lib/php.ini を開いて、以下のとおりに設定を変更します。
EUC-JPユーザ用の設定を行います。次の設定は、PHPスクリプトの内部エンコードがEUC-JP、Webブラウザ出力もEUC-JPである場合の設定方法です。以下を参考に、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"
TOP出力バッファリングを無効にします。 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;
httpd.conf の設定
Apache の設定ファイルの編集を行います。
/usr/local/apache2/conf/httpd.conf を開いて、AddType の連続する箇所の下に以下を追加します。
また、以下の行のISO-8859-1をOffに変更します。ファイルに存在しない場合には、この行を追加してください。AddType application/x-httpd-php .php
以上を変更したら、変更内容を反映させるために、Apacheを再起動します。AddDefaultCharset Off
TOP# /usr/local/apache2/bin/apachectl restart
PHP動作の確認
Apacheの再起動後、実際に PHP
が動作するかを確認します。非常に簡単なスクリプトで、PHP
の情報を得ることができますので、viから以下のようにタイプしてください。
<?php phpinfo(); ?>簡単なのですぐに作れるでしょう。これを
「phpinfo.php」
というように、ファイル名と拡張子をつけて、Apache Group
フォルダの Apach2
フォルダ内にある htdocs
フォルダに保存します。保存後、いつも利用している Webブラウザを起動して、そのURL
欄に、「http://localhost/phpinfo.php」
とタイプして、Enter
キーを押してください。以下のような画面が出れば、PHP
のインストールが成功した証拠になります。
TOP