Snow LeopardにアップしてからMacPortsの挙動がおかしいので、再構築することに。
sudo port -f uninstall installed sudo port clean --work --archive all
ここで寝落ちw
また会社から帰宅して続行 ▽主要パッケージのインストール
sudo port install apache2 +mysql5 +postgresql84 +pear +sqlite +tidy
結果的に、Snow Leopardからのアップデートからで大ハマリ! あぁ、すげー大変だった・・・・睡眠返して!! てか、何でOSXになるといつもトラブルんだろう?orz Linuxならスムーズにいくのに。
・PostgreSQL8.4でinitdbやサービスが起動できなかった ・過去のパッケージをちゃんと消してなかった ・httpd.confの設定の罠
仕方ないので、1つずつインストールする事に。 ■参考サイト ・Snow LeopardにアップグレードしたらMacPortsが動かなくなってしまった ・ボクのMacBookができるまで:(5.開発環境構築編)
▽Apache ・自動起動
sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
やったけど、既に登録されてた。 念のため作り直す。
sudo launchctl unload -w /Library/LaunchDaemons/org.macports.apache2.plist sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
・/opt/local/apache2/conf/httpd.conf DocumentRootは、そのままなんで、特に変更する必要なし。 DocumentRoot "/Library/WebServer/Documents"
▽~/.bash_profileにパス追加
export PATH=/opt/local/lib/postgresql83/bin:/opt/local/lib/mysql5/bin:/opt/local/bin:/opt/local/sbin/:$PATH export MANPATH=/opt/local/man:$MANPATH
あと、apachectlのパスはデフォルトとかぶるので、別途「apache2ctl」として設定した。
alias apache2ctl='sudo /opt/local/apache2/bin/apachectl'
▽MySQL5 ・インストール
sudo port install mysql5 +server
・ディレクトリ作成
sudo cp /opt/local/share/mysql5/mysql/my-medium.cnf /opt/local/etc/mysql5/my.cnf sudo mkdir -p /opt/local/var/db/mysql5 sudo chown -R mysql:mysql /opt/local/var/db/mysql5 sudo mkdir -p /opt/local/var/run/mysql5 sudo chown -R mysql:mysql /opt/local/var/run/mysql5
・手動起動
sudo /opt/local/lib/mysql5/bin/mysqld_safe &
▽PostgreSQL8.3 ・インストール
sudo port install postgresql83-server
・自動起動追加
sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83-server.plist
・DB初期化
sudo mkdir -p /opt/local/var/db/postgresql83/defaultdb sudo chown postgres:postgres /opt/local/var/db/postgresql83/defaultdb sudo su postgres -c '/opt/local/lib/postgresql83/bin/initdb -D /opt/local/var/db/postgresql83/defaultdb'
・PostgreSQLサーバを手動起動
sudo -u postgres pg_ctl -D /opt/local/var/db/postgresql83/defaultdb -o "-i" -m immediate start
・シンボリックリンクでパスを通す
sudo ln -s /opt/local/lib/postgresql83/bin/postgres /opt/local/bin/ sudo ln -s /opt/local/lib/postgresql83/bin/pg_ctl /opt/local/bin/
やっとこさ、起動しました(T_T) PostgreSQL8.4のインストールについては、機会があったら調べよう。
▽PHP ・インストール
sudo port install php5 +apache2 +mysql5 +pear +postgresql83 +sqlite sudo port install php5-curl sudo port install php5-exif sudo port install php5-gd sudo port install php5-gettext sudo port install php5-imagick sudo port install php5-mbstring sudo port install php5-mcrypt sudo port install php5-mysql sudo port install php5-postgresql +postgresql83 sudo port install php5-readline sudo port install php5-sqlite sudo port install php5-sqlite3 sudo port install php5-xmlrpc sudo port install php5-zip sudo port install php5-zlib
・Apacheモジュール
cd /opt/local/apache2/modules sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
・/opt/local/apache2/conf/httpd.confの修正 mod_php.confのパスが間違ってるので修正
#Include conf/extras-conf/mod_php.conf Include conf/extra/mod_php.conf
■現在のインストール状況
sudo port installed
apache2 @2.2.15_1+darwin+preforkmpm (active) apr @1.4.2_0 (active) apr-util @1.3.9_2 (active) autoconf @2.65_1 (active) autoconf213 @2.13_1 (active) automake @1.11.1_0 (active) bison @2.4.2_0 (active) bzip2 @1.0.5_3+darwin (active) curl @7.20.0_0+ssl (active) curl-ca-bundle @7.20.0_3 (active) db46 @4.6.21_6 (active) expat @2.0.1_0 (active) gawk @3.1.8_0 (active) gettext @0.18_0 (active) gperf @3.0.4_0 (active) gsed @4.2.1_0 (active) help2man @1.37.1_1 (active) libiconv @1.13.1_0 (active) libidn @1.18_0 (active) libtool @2.2.6b_1+darwin (active) libxml2 @2.7.7_0 (active) libxslt @1.1.26_0 (active) m4 @1.4.14_0 (active) mhash @0.9.9.9_0 (active) mysql5 @5.1.46_0 (active) ncurses @5.7_0+darwin_10 (active) ncursesw @5.7_0+darwin_10 (active) openssl @0.9.8n_0+darwin (active) ossp-uuid @1.6.2_0 (active) p5-locale-gettext @1.05_2 (active) pcre @7.9_0 (active) perl5 @5.8.9_0 (active) perl5.8 @5.8.9_3 (active) php5 @5.3.2_0+apache2+darwin_10+macosx (active) php5 @5.3.2_0+apache2+darwin_10+macosx+mysql5+pear+postgresql83+sqlite+tidy php5-mbstring @5.3.2_0 (active) php5-postgresql @5.3.2_0+postgresql84 (active) pkgconfig @0.23_1 (active) postgresql83 @8.3.10_0 (active) postgresql83-server @8.3.10_0 (active) postgresql84 @8.4.3_0 (active) readline @6.1.000_1+darwin (active) sqlite3 @3.6.23.1_0 (active) wget @1.12_0 (active) zlib @1.2.5_0 (active)
何か、php5-postgresqlが「postgresql84」になってるのが気になる。。。 でも、インストールすると自動的に選ばれちゃうんだよね。 PostgreSQLサーバ自体は8.3で動いてるからまぁ大丈夫そう。
あと、php5のオプションつけた方がactiveになってないよw
とりあえず、動いたからヨシとしようw
■その後 Mac再起動したら、うまくいかないwwww やっぱりサービスのプロセスがたまたま同時に動いてた模様
てか、PostgreSQL8.3も8.4も初期化ができなくなってしまったorz orz
何かMacPortsとは相性が悪いw
----2010/10/16 iMacでトライ
(1)MacPorts Projectからインストーラーをダウンロード。
(2)~/.profileを修正し反映
export PATH=/opt/local/apache2/bin:/opt/local/bin:/opt/local/sbin:$PATH export MANPATH=/opt/local/share/man:$MANPATH
source $HOME/.profile
(3)MacPortsをアップデート
sudo port selfupdate
(1)apache2インストール
sudo port install apache2
※iMac core i3で15分程度 (2)apache2をロード
sudo port load apache2
(3)自動起動設定
sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
(4)httpd.confの編集 MacPortsでapache2をインストールするとhttpd.confは以下のパスとなる
/opt/local/apache2/conf/httpd.conf
DocumentRoot "/opt/local/apache2/htdocs"
自分はユーザのサイトをドキュメントルート設定する。 httpd.confで設定してもいいが、シンボリックリンクで対処することにした。
sudo ln -s /Users/yoo/Sites/ htdocs
-Directoryのアクセス権
Options FollowSymLinks
AllowOverride None
Order deny,allow
#Deny from all
(5)apache再起動
sudo apachectl restart
※/opt/local/apache2/bin/apachectlにパスが通ってる事が前提
AddType application/x-httpd-php .php
(1)php5の利用できるオプションを調べる
sudo port variants php5
apache: Add Apache 1 web server module * conflicts with apache2 no_web [+]apache2: Add Apache 2.2 web server module * conflicts with apache no_web debug: Enable debug support (useful to analyze a PHP-related core dump) fastcgi: Add FastCGI web server binary * conflicts with no_web gmp: Obsolete; install php5-gmp port instead imap: Obsolete; install php5-imap port instead ipc: Add semaphore, shared memory and IPC functions macports_snmp: Obsolete; install php5-snmp port instead mssql: Obsolete; install php5-mssql port instead mysql4: Obsolete; install php5-mysql port instead mysql5: Obsolete; install php5-mysql port instead mysqlnd: Obsolete; install php5-mysql port instead no_web: Don't include any web server support * conflicts with apache apache2 fastcgi oracle: Obsolete; install php5-oracle port instead pcntl: Obsolete; install php5-pcntl port instead pear: Add PEAR postgresql82: Obsolete; install php5-postgresql port instead postgresql83: Obsolete; install php5-postgresql port instead pspell: Obsolete; install php5-pspell port instead snmp: Obsolete; install php5-snmp port instead sockets: Obsolete; install php5-sockets port instead sqlite: Obsolete; install php5-sqlite port instead suhosin: Add Suhosin patch tidy: Obsolete; install php5-tidy port instead universal: Build for multiple architectures
Obsoleteは「廃止」という意味なので、オプションをつけてもインストールがうまくいかないようです。
(2)PHP5のインストール よって、apache2とPEARをオプションでインストールしてみます。
sudo port install php5 +apache2 +pear
(2)php.iniの設定 php.iniのパスは以下の通り。
/opt/local/etc/php5/php.ini
※インストール後に記載されてます
(3)Apache上でPHPを動作させる
cd /opt/local/apache2/modules /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
(1)postgresql84のインストール
sudo port install postgresql84 sudo port install postgresql84-server
(2)DB初期化
sudo mkdir -p /opt/local/var/db/postgresql84/defaultdb sudo chown postgres:postgres /opt/local/var/db/postgresql84/defaultdb sudo su postgres -c '/opt/local/lib/postgresql84/bin/initdb -D /opt/local/var/db/postgresql84/defaultdb'
うまくいったら、以下のメッセージが表示される。 Success. You can now start the database server using: /opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb or /opt/local/lib/postgresql84/bin/pg_ctl -D /opt/local/var/db/postgresql84/defaultdb -l logfile start
(4)手動起動確認
sudo -u postgres /opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb
(5)自動起動設定
sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql84-server.plist
(6)DB確認
sudo -u postgres /opt/local/lib/postgresql84/bin/psql -l
Name | Owner | Encoding | Collation | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres
: postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres
: postgres=CTc/postgres
(1)php5-postgresqlインストール
sudo port install php5-postgresql
2010/10/16現在では、postgresql9.0のクライアントが自動でインストールされる模様 PostgreSQLのサーバは8.4にしているのだが、果たして?
(2)php5-mbstringインストール
sudo port install php5-mbstring
(1)subversionのインストール
sudo port install subversion