MacPortsでApache,PHP,MySQLをインストールする

2011年9月3日

PHP

この記事は Mac OS X 10.6 Snow Leopard に Apache,PHP,MySQL を MacPorts を使ってインストールしたときのメモ書きです。

環境

  • Mac OS X 10.6 Snow Leopard
  • MacPorts 2.0.2
  • Apache2
  • PHP5.3
  • MySQL5.1

目次

  1. Xcodeのインストール
  2. MacPortsをインストール
  3. apache,php,mysqlをインストール
  4. apache2の初期設定
  5. mysqlの初期設定
  6. phpの初期設定
  7. apache,mysqlの起動について
  8. phpmyadminをインストール

Xcodeのインストール

MacPortsのインストールにはXcodeが必要です。先にXcodeのインストールを済ませておきます。
Xcodeのダウンロードとインストール方法は下記の記事をご覧ください。

macbookair
MacBook Air Snow LeopardにXcodeをインストールする

環境 MacBook Air 2010年版Mac OS X 10.6 Snow Leopard Apple Develo ...

続きを見る

MacPortsをインストール

MacPortsのインストール方法は下記の記事をご覧ください。

macbookair
MacPortsの使い方まとめ

MacPorts の使い方をまとめました MacPortsをインストールする MacPortsはapt-getやyumの ...

続きを見る

apache,php,mysqlをインストール

apacheをインストール

$ sudo port install apache2

mysqlをインストール

$ sudo port install mysql5-server

phpをインストール

$ sudo port install php5 +apache2 +pear php5-mysql php5-mbstring php5-mcrypt php5-gd

phpの拡張モジュールはひとまず開発でよく使うものをインストールします。その他は必要になったら別途インストールします。

apache2の初期設定

apacheからphpを使うため拡張子の追加

apacheからphpを使うため拡張子を追加します。
httpd.confに下記を追加します。

$ sudo vi /opt/local/apache2/conf/httpd.conf
<IfModule mime_module>
...
AddType application/x-httpd-php .php
...
</IfModule>

php5用モジュールの追加

下記コマンドを実行します。

cd /opt/local/apache2/modules
sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so

実行すると、httpd.confのLoadModuleの所に下記が追加されます。

LoadModule php5_module        modules/libphp5.so

index.phpを省略可能に

デフォルトの状態ではindex.phpを省略できないので設定します。

$ sudo vi /opt/local/apache2/conf/httpd.conf
<IfModule dir_module>
    #DirectoryIndex index.html
    DirectoryIndex index.html index.php
</IfModule>

ServerNameの設定

ServerNameをlocalhostに設定しておきます。apache起動時に下記のエラーが出るためです。
httpd: Could not reliably determine the server's fully qualified domain name, using マシン名.local for ServerName

$ sudo vi /opt/local/apache2/conf/httpd.conf
#ServerName www.example.com:80~
ServerName localhost:80

ドキュメントルートの変更

macportsでインストールしたapacheのドキュメントルートは/opt/local/apache2/htdocs/です。私はドキュメントルートを/Users/ユーザー名/Sitesに変更しています。

$ sudo vi /opt/local/apache2/conf/httpd.conf
#DocumentRoot "/opt/local/apache2/htdocs"
DocumentRoot "/Users/ユーザー名/Sites"
#<Directory "/opt/local/apache2/htdocs">
<Directory "/Users/ユーザー名/Sites">

.htaccessによる設定上書きを許可

$ sudo vi /opt/local/apache2/conf/httpd.conf
<Directory "/Users/ユーザー名/Sites">
...
#AllowOverride None
AllowOverride All
...
</Directory>

mysqlの初期設定

PATHを通す

mysqlコマンドのPATHを通します。
.bash_profileに下記を記述。

$ vi ~/.bash_profile
PATH=$PATH:/opt/local/lib/mysql5/bin
export PATH

mysqlデータベースの初期化

$ sudo -u mysql mysql_install_db5

mysql起動

$ sudo /opt/local/share/mysql5/mysql/mysql.server start

rootユーザーのパスワードを変更

$ sudo mysqladmin -u root password '新しいパスワード'

my.cnfの設置

サンプルで用意されたものをベースとして使用します。
私の環境はそれほどスペックがよくないのでmy-small.cnfを選択しました。

$ sudo cp /opt/local/share/mysql5/mysql/my-small.cnf /opt/local/etc/mysql5/my.cnf

my.cnfの編集

MySQLのバージョンは5.1です。ご注意ください。
デフォルトの文字コードをUTF-8に設定しておくと、後々文字化け問題に悩まされにくくなります。
私は下記を追記しています。

$ sudo vi /opt/local/etc/mysql5/my.cnf

[client]

default-character-set=utf8

[mysqld]

default-character-set = utf8 skip-character-set-client-handshake default-storage-engine = innodb

[mysql]

default-character-set=utf8

[mysqldump]

default-character-set=utf8

phpの初期設定

php.iniの設置

サンプルで用意されたものをベースとして使用します。
developmentをコピーします。

$ sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini

デフォルトのままだと不都合が生じる場合があるのでphp.iniの設定を書き換えます。

timezoneの設定

php5.3以降ではtimezoneの設定が必要です。

$ sudo vi /opt/local/etc/php5/php.ini
[Date]
date.timezone = Asia/Tokyo

mbstringの設定

mbstringで用いる文字エンコーディングはデフォルトではEUCですが、EUCを扱う必要性がなければUTF8に変更したほうが何かと都合がいいです。

$ sudo vi /opt/local/etc/php5/php.ini

[mbstring]

mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_output = UTF-8

mysqlの設定

mysqliのsocketのパスを指定します。下記3箇所を書き換えます。

$ sudo vi /opt/local/etc/php5/php.ini
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock

apache,mysqlの起動について

私は、apache,mysqlを必要なときに手動で起動しています。

apache起動

$ sudo /opt/local/apache2/bin/apachectl start

apache停止

$ sudo /opt/local/apache2/bin/apachectl stop

mysql起動

$ sudo /opt/local/share/mysql5/mysql/mysql.server start

mysql停止

$ sudo /opt/local/share/mysql5/mysql/mysql.server stop

.bashrcにaliasを設定して簡単に起動できるようにしています。

$ vi ~/.bashrc
alias startapache='sudo /opt/local/apache2/bin/apachectl start'~
alias stopapache='sudo /opt/local/apache2/bin/apachectl stop'~
alias restartapache='sudo /opt/local/apache2/bin/apachectl restart'~
alias startmysql='sudo /opt/local/share/mysql5/mysql/mysql.server start'~
alias stopmysql='sudo /opt/local/share/mysql5/mysql/mysql.server stop'~

phpmyadminをインストール

インストール

$ sudo port install phpmyadmin

configファイルの設置

$ cd /opt/local/www/phpmyadmin/
$ sudo cp config.sample.inc.php config.inc.php

phpmyadminを動作させる

http://localhost/phpmyadmin/のurlでアクセスできるようにします。
IfModule alias_moduleの中に下記をphpmyadminのaliasを追加します。
ScriptAliasより上に書かないとエラーとなります。

$ sudo vi /opt/local/apache2/conf/httpd.conf
<IfModule alias_module>
...
Alias /phpmyadmin "/opt/local/www/phpmyadmin/"
<Directory /opt/local/www/phpmyadmin>
   Order allow,deny
   Allow from all
</Directory>
...
ScriptAlias /cgi-bin/ "/opt/local/apache2/cgi-bin/"
...
</IfModule>

-技術ブログ
-, ,