MacPorts再構築その後

2010/05/19

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でトライ

MacPortsインストール

(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

Apache

(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 デフォルトのドキュメントルートは以下の通り
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にパスが通ってる事が前提

  • PHP拡張子の動作設定
AddType application/x-httpd-php .php

PHP5

(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

PostgreSQL

(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

PHPモジュール

(1)php5-postgresqlインストール

sudo port install php5-postgresql

2010/10/16現在では、postgresql9.0のクライアントが自動でインストールされる模様 PostgreSQLのサーバは8.4にしているのだが、果たして?

(2)php5-mbstringインストール

sudo port install php5-mbstring

Subversion

(1)subversionのインストール

sudo port install subversion