ボクのMacBookができるまで:(5.開発環境構築編)

pボクのMacBookができるまで:(5.開発環境構築編)

2008年10月にMacBook(Late2008、unibody)を購入してから毎日肌身離さず持ち歩いていますが、メール・ブラウジング以外にもブログで紹介しているWEBサービスやツールなどの開発にも使用しています。そこで、今更ではありますがボクのMacBookの開発環境構築方法(の基本的なところだけ)をまとめておこうと思います。

ちなみに開発環境以外、基本的な設定などはこれまで4エントリーに書いてきました。

ってか、作業する度にメモってきたものなのですが、一度に書いてしまうと結構な量になりますね…。
というわけで、いちおう目次もつけときます。

それでは、始めます。(例のごとく長いよ)

1. 開発サーバ設定

1.1 コマンドエイリアスの登録

ターミナルでの作業が多くなりますからね。 とりあえず ls 関連のショートカットを色々と登録しておきます。
$ vi ~/.bash_profile

export LANG=ja_JP.UTF-8
alias ls="ls -vF"
alias l="ls"
alias ll="ls -l"
alias la="ls -la"

とりあえずこのくらい

1.2 Xcode Tools のインストール

OS に付属のインストーラか、ADC から最新の Xcode Tools をダウンロードしてインストールします。

Apple Developer Connection - Developer Tools and Technologies - Developer Tools
→要ADCアカウント登録

コンパイラとか入ってるので、なるべく新しいバージョンの方が良いかも。

1.3 X Window (X11) のインストール

「Mac OS X Install Disk 1」から X11 アプリケーションをインストールします。

1.4 MacPortsのインストール

The MacPorts Project -- Home
→このサイトからdmgもってきてインストールするだけ

一応アップデートをかけとく
$ sudo port selfupdate
環境変数追加
$ vi ~/.bash_profile

export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export MANPATH=/opt/local/man:$MANPATH
export DISPLAY=:0.0

§

1.5 MacPorts で Linux でよく使っていたコマンドをインストール

$ sudo port install wget
$ sudo port install pstree
$ sudo port install subversion

wget は src をダウンロードする時などによく使いますが、curl でも代用がききます。
pstree は プロセスをツリー状に表示できるのですが、以外とマイナーなコマンド?
subversion はバージョン管理に使ってますが、今からならむしろ git かな(まだ試してない)。

1.6 MacPorts で Apache2 をインストール

WEBサーバのapacheをインストールします。
$ sudo port install apache2
設定ファイルをサンプルコピーして設置
$ sudo cp /opt/local/apache2/conf/httpd.conf.sample /opt/local/apache2/conf/httpd.conf
SSLモジュールをコピーして設置
$ sudo cp /usr/libexec/apache2/mod_ssl.so /opt/local/apache2/modules/.
Macが起動した時に自動的に起動するようにする。
sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
Apacheの設定ファイルを変更
$ sudo vi /opt/local/apache2/conf/httpd.conf

## DocumentRoot を自分のホームのサイトへ変更
#DocumentRoot "/opt/local/apache2/htdocs"
DocumentRoot /Users/yager/Sites

## 合わせてDirectoryディレクティブも変更
#<Directory "/opt/local/apache2/htdocs">
<Directory "/Users/yager/Sites">
    # Localなので何でもありあり
    Options All
    AllowOverride All

    Order allow,deny
    Allow from all
</Directory>

§

1.7 MacPorts で MySQL5 をインストール

フリーのDBサーバMySQL(version 5)をインストール
$ sudo port install mysql5 +server
環境変数PATHに追加
$ vi ~/.bash_profile

export PATH=/opt/local/lib/mysql5/bin:/opt/local/bin:/opt/local/sbin:$PATH
設定ファイルをコピーして設置
$ 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 -u mysql /opt/local/bin/mysql_install_db5
自動起動に登録
$ sudo launchctl load -w /opt/local/etc/LaunchDaemons/org.macports.mysql5/org.macports.mysql5.plist
手動起動する場合のコマンド
$ sudo /opt/local/lib/mysql5/bin/mysqld_safe &
rootユーザーのパスワード設定
$ sudo /opt/local/lib/mysql5/bin/mysqladmin -u root password 'new-password'
ログインしてデータベース作成
$ mysql5 -u root -p

mysql> create database test character set utf8;
mysql ユーザ作成
mysql> connect test;
mysql> grant all on *.* to mysql@'%' identified by 'mysql' with grant option;
mysql> grant all on *.* to mysql@localhost identified by 'mysql' with grant option;
テストテーブルつくってみる
mysql>
create table users (
     id integer NOT NULL auto_increment
   , name text not null
   , password text not null
   , description text
   , primary key (id)
);
シャットダウンの方法
$ sudo /opt/local/bin/mysqladmin5 -u root -p shutdown

§

1.8 MacPorts で PostgreSQL8.3 をインストール

MySQLとならびよく使うフリーのDBサーバPostgreSQLをインストール
$ sudo port install postgresql83-server
環境変数PATHに追加
$ vi ~/.bash_profile

export PATH=/opt/local/lib/postgresql83/bin:/opt/local/lib/mysql5/bin:/opt/local/bin:/opt/local/sbin:$PATH
必要なディレクトリを用意して初期化
$ sudo mkdir -p /opt/local/var/db/postgresql83/defaultdb
$ sudo chown postgres /opt/local/var/db/postgresql83/defaultdb
$ sudo -u postgres initdb -D /opt/local/var/db/postgresql83/defaultdb
自動起動の設定
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83-server.plist
手動起動の方法
$ sudo -u postgres pg_ctl -D /opt/local/var/db/postgresql83/defaultdb -o "-i" -m immediate start
DB初期化
$ sudo -u postgres createdb -E UTF-8 test
postgres ユーザでログインして、権限設定
$ psql test -U postgres

test=# alter user postgres with password '******';
テストテーブルつくってみる
test=# 
create table users (
     id serial NOT NULL
   , name text not null
   , password text not null
   , description text
   , primary key (id)
);
手動停止の方法
$ sudo -u postgres pg_ctl -D /opt/local/var/db/postgresql83/defaultdb stop

§

1.9 MacPorts で PHP をインストール

さて、もろもろインストールしてきましたが最終的にはPHPのインストールまでの序章だったといえるかもw PHP5もMacPortsで色々オプション付きでインストールします。
$ sudo port install php5 +apache2 +mysql5 +postgresql83 +pear +curl +gd +sqlite +readline +tidy
PHPモジュールをapache2に読み込ませます
$ cd /opt/local/apache2/modules
$ sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
PHPの設定ファイルをサンプルからコピーして作成
$ cd /opt/local/etc
$ sudo cp php.ini-recommended php.ini
Apache2の設定ファイルを変更
$ sudo vi /opt/local/apache2/conf/httpd.conf

## PHPの設定ファイルをインクルードする
Include conf/extras-conf/mod_php.conf
Apache2の再起動
$ sudo /opt/local/apache2/bin/apachectl configtest
Syntax OK
$ sudo /opt/local/apache2/bin/apachectl restart
phpinfoで動作確認
$ echo "<?php phpinfo(); ?>"> /Users/yager/Sites/phpinfo.php

http://localhost/phpinfo.php にアクセスしてPHPのインストール情報がでてくればOK。

1.10 phpMyAdmin のインストール

MySQLをブラウザから操作できるアプリケーション。
インストールというか、PHPパッケージをおくだけ。

まずは、下記サイトから最新版のソースをもってきます。

phpMyAdmin

圧縮ファイルを展開して、~/Sites/phpMyAdmin/ として設置。

設定ファイルの変更
$ cp ~/Sites/phpMyAdmin/config.sample.inc.php ~/Sites/phpMyAdmin/config.inc.php
$ vi ~/Sites/phpMyAdmin/config.inc.php
変更内容
$cfg['blowfish_secret'] = '適当な文字列に変更';

$cfg['Servers'][$i]['auth_type']    = 'cookie';
$cfg['Servers'][$i]['host']         = 'localhost'; // ローカルならlocalhostでOK
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress']     = false;
$cfg['Servers'][$i]['extension']    = 'mysql';

$cfg['Servers'][$i]['bs_garbage_threshold'] = 50;
$cfg['Servers'][$i]['bs_repository_threshold'] = '32M';
$cfg['Servers'][$i]['bs_temp_blob_timeout'] = 600;
$cfg['Servers'][$i]['bs_temp_log_threshold'] = '32M';

これで設定はおしまい、http://localhost/phpMyAdmin/ にアクセスすると、
phpMyAdminログイン画面

ログイン画面がでるので、言語を「日本語」、ユーザ名/パスワードを入れてログインするとDB管理画面が使えます。
phpMyAdmin管理画面

1.11 phpPgAdmin のインストール

PostgreSQLをブラウザから操作できるアプリケーション。
インストールというか、PHPパッケージをおくだけ。

まずは、下記サイトから最新版のソースをもってきます。

phpPgAdmin :: Web Based PostgreSQL Administration Tool

圧縮ファイルを展開して、~/Sites/phpPgAdmin/ として設置。

設定ファイルの変更
$ vi ~/Sites/phpPgAdmin/conf/config.inc.php
変更内容
$conf['servers'][0]['desc']            = 'localhost';
$conf['servers'][0]['host']            = 'localhost';
$conf['servers'][0]['port']            = 5432;
$conf['servers'][0]['sslmode']         = 'allow';
$conf['servers'][0]['defaultdb']       = 'test';
$conf['servers'][0]['pg_dump_path']    = '/opt/local/lib/postgresql83/bin/pg_dump';    // PATH合わす
$conf['servers'][0]['pg_dumpall_path'] = '/opt/local/lib/postgresql83/bin/pg_dumpall'; // PATH合わす 
$conf['servers'][0]['slony_support']   = false;
$conf['servers'][0]['slony_sql']       = '/usr/share/pgsql';

(snip)

$conf['extra_login_security'] = false; // trueだとpostgreユーザでログインできない

これで設定はおしまい、http://localhost/phpPgAdmin/ にアクセスすると、
phpPgAdminログイン画面

ログイン画面がでるので、ユーザ名/パスワードを入れてログインするとDB管理画面が使えます。
phpPgAdmin管理画面

2. Vimの設定

そろそろ Vi でコード書けるようになりたいなぁと思って Vim 入れる事にしました。
が、勉強し初めなのであんまり詳しくないっす。

2.1 MacPorts で Vim を最新版に

$ sudo port install vim +cocoa +cscope +huge +kaoriya +multibyte +ruby

§

2.2 MacVim のインストール

Mac OS 用のGUI版Vimが合ったので試してみる事にしました。

macvim - Google Code

$ sudo port install macvim +cscope +kaoriya +python +ruby

§

2.3 .vimrc の設定

"------------------------------------------------------------
" search
"------------------------------------------------------------
set ignorecase  " 大文字小文字区別なし
set smartcase   " 検索に大文字が含まれていたら大文字小文字区別あり
set wrapscan    " 最後にいったら最初に戻る
set incsearch   " インクリメンタルサーチ禁止

"------------------------------------------------------------
" tab
"------------------------------------------------------------
set expandtab     " タブをスペースに置き換え
set tabstop=4     " タブ幅
set shiftwidth=4  " autoindentなどの時のタブ幅
set softtabstop=4 " タブキーで入力したときのタブ幅

"------------------------------------------------------------
" dispay
"------------------------------------------------------------
set number       " 行番号表示
set ruler        " ルーラー表示
syntax on        " シンタックスハイライト
set hlsearch     " 検索結果文字列のハイライト
set laststatus=2 " ステータス常に表示
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P

colorscheme default         " カラースキーム
set guifont=Osaka-Mono:h14  " フォント
set antialias               " アンチエイリアシング

set listchars="tab:>-,eol:" " 非表示文字のスタイル タブを>---、行末は何も表示しない
set list

" 全角スペースをハイライト
highlight ZenkakuSpace cterm=underline ctermfg=lightgray guifg=rightgray
au BufRead,BufNew * match ZenkakuSpace / /

set noautoindent            " オートインデント

"------------------------------------------------------------
" 文字コードの自動認識
"------------------------------------------------------------
if &encoding !=# 'utf-8'
  set encoding=japan
  set fileencoding=japan
endif
if has('iconv')
  let s:enc_euc = 'euc-jp'
  let s:enc_jis = 'iso-2022-jp'
  " iconvがeucJP-msに対応しているかをチェック
  if iconv("¥x87¥x64¥x87¥x6a", 'cp932', 'eucjp-ms') ==# "¥xad¥xc5¥xad¥xcb"
    let s:enc_euc = 'eucjp-ms'
    let s:enc_jis = 'iso-2022-jp-3'
  " iconvがJISX0213に対応しているかをチェック
  elseif iconv("¥x87¥x64¥x87¥x6a", 'cp932', 'euc-jisx0213') ==# "¥xad¥xc5¥xad¥xcb"
    let s:enc_euc = 'euc-jisx0213'
    let s:enc_jis = 'iso-2022-jp-3'
  endif
  " fileencodingsを構築
  if &encoding ==# 'utf-8'
    let s:fileencodings_default = &fileencodings
    let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
    let &fileencodings = &fileencodings .','. s:fileencodings_default
    unlet s:fileencodings_default
  else
    let &fileencodings = &fileencodings .','. s:enc_jis
    set fileencodings+=utf-8,ucs-2le,ucs-2
    if &encoding =~# '^¥(euc-jp¥|euc-jisx0213¥|eucjp-ms¥)$'
      set fileencodings+=cp932
      set fileencodings-=euc-jp
      set fileencodings-=euc-jisx0213
      set fileencodings-=eucjp-ms
      let &encoding = s:enc_euc
      let &fileencoding = s:enc_euc
    else
      let &fileencodings = &fileencodings .','. s:enc_euc
    endif
  endif
  " 定数を処分
  unlet s:enc_euc
  unlet s:enc_jis
endif
" 日本語を含まない場合は fileencoding に encoding を使うようにする
if has('autocmd')
  function! AU_ReCheck_FENC()
    if &fileencoding =~# 'iso-2022-jp' && search("[^¥x01-¥x7e]", 'n') == 0
      let &fileencoding=&encoding
    endif
  endfunction
  autocmd BufReadPost * call AU_ReCheck_FENC()
endif
" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
  set ambiwidth=double
endif

§

まとめ

長すぎですよね。こういうのはWIki形式で公開すべきでしたw
ま、やってしまったものはしょうがないww

Macに手っ取り早くWEB/DB構成を作ろうと思ったらMAMPの方が圧倒的にラクチンなんだけど、開発していると色々ライブラリ追加したり環境をいじったりしたかったりするので、MacPortsがちょうどいい感じ。

でも、もっと便利な方法とか設定とかあるんだったら知りたいな。
教えて偉い人。

同じカテゴリーの記事

このページの一番上に戻る
  • Facebook
  • Twitter
  • Tumblr
  • Instagram
  • miil