Homebrew で Apache, MySQL, Phpbrew, rbenv, nodebrew, pyenv をお手柔らかにお願いします

即効性の回答を提供するのでは無く、何故それを使用するに至ったのか、それを使ってどうだったか、という方面に重きを置いています。(キリッ!
なので、藁をもすがる思いで辿り着いた方には非常に申し訳無く思います。
いや…その…自分がやりたいのは「環境構築」ではなく、「そこから先」なんですがねぇ…ヤレヤレですわ…いやーフロントエンドマターなのか、アーキテクトマターなのか何ともですが、いずれにせよ、この辺を事も無げにできる方々ってスゴイ、と。

お手柔らかにお願いしてのモロモロ

前述の Homebrew での環境構築中に気付いた事などをつらつらと。

Homebrew で作業する最低限の前準備

return to toc

各人で色々あると思う。

Atom Editor はこの段階では不要…相変わらず重いしなぁ、 vi|vim の方が手間いらずかなぁ、だけど、コマンドラインや vim のシンタックスハイライト必須でお願いします、で。1

MenuMeters が El Capitan で動くのは大真面目に感謝している。
例えば、コマンドを叩いて、ウンともスンとも返答も何も無い状態があるが、当然HDDの音がする訳でも無いので MenuMeters でCPUの負荷やネットワークのトラフィックを確認していると「何かやってるなぁ」という事を確認できるので、少なくとも心の平穏には繋がる。

私は何なの?

return to toc

$ whoami
MorryMasahiko

正確には私はどのグループに属するのか…

  • staff だと思っている… touch HOGE.txt するとそうなる…
  • sudo touch HOGE.txt だと rootstaff
  • Homebrew が利用する /usr/local/ ディレクトリは私で wheel
  • /usr/local/ 以下は、私で admin なのかなぁ…全て確認していないが
  • 私で admin なファイルは sudo しなくとも更新可能…ざっと見てファイルが 0644 、ディレクトリが 0755 あたり?
  • Apache ・ MySQL ・ PHP の吐き出すログは、私で staff
  • OSX では「管理者」…パスワードを求められる場面で、ロケールの影響なのか、フルネームでは本名の漢字で出てくるのには未だに違和感を覚えるが…

あーひとつのユーザはひとつのグループだけに属する訳では無いのか…

$ groups MorryMasahiko
staff ... everyone ... admin ... (途中色々略)

この辺、El Capitan のセキュリティ関連なのか何なのか…良く分からない…更にパーミションの問題も絡んでくる訳で… MySQL の pid エラー対応時に混乱した。

Atom Editor の sync-settings

return to toc

いわゆる「これ便利すぎワロタ」な状態。
まさかエディタが Chrome 同様になるとは…

自分の今回の場合、現在複数箇所で使っている Atom エディタの同期を取る、ではなく移行になる。
旧環境を sync-settings でバックアップして、新環境でリストア…の前にバックアップが走るとどうなるのか…という不安がよぎった。
今回の新環境では Atom Editor 導入と同時に sync-settings だけを何よりも先に導入、各種設定値の入力後、間髪入れずにリストアして問題無く各種プラグイン導入・設定まで移行できた。

なお、自力では GitHub Gist の Personal Access Token の再確認はできず…別途メモを取っていたのでそれを参照。
および、クリーンインストール前に、移行前は何のフォントを導入していたかを把握(と事前のインストール)しておいた方がモアベターかと。
(萌えエディタに必須の editor-background は問題無く把握していたのは秘密です)

クリーンインストール with 新しい OSX

return to toc

旧OSから新OSへの、ネットワークを利用したクリーンインストールのざっくりした手順について。
新OSで旧OSを更新インストール、 HDD のフォーマット、この段階で次にインストールできるのは新OSだけの筈なので、そのまま新OSでクリーンインストール、になる。
HDD をフォーマットしているのに?だが、OS_X_Base_System というパーティション?が作成されている…のか、元々存在したのか不明だけど、2GB程度の領域にOSXのイメージを格納している…のかなぁと。
今更無いと思うが、ダウングレードさせつつのインストール方法は調べていない。
それと… Windows も OSX も更新インストールを全く信用していない…確かに業務で使用しているマシンは時間的制約があるので、そうせざるを得ないとは思うが…

ディレクトリ構成

return to toc

至極各人の好みや様々なルールに依存するマターではあるが。

~/www/
├── apache24/
│   └── htdocs/
│       ├── foo/
│       ├── hoge/
│       ├── var/
│       :
└── log/
    ├── apache24.access.log
    ├── apache24.error.log
    ├── mysql57.error.log
    ├── mysql57.general.log
    ├── php54.error.log
    └── php56.error.log

~/www/log/ に各種ログ… Apache ・ PHP ・ MySQL を集約させて、極論すればコレがやりたかった、とも。
わざわざ apache24 と切っているのは、何となくもしかして今後 Nginx を使ってみるかも、みたいな?
また、 MySQL の general ログは、通常はオフにして、何か意味のある時にのみ出力させるかも。

それまで使っていた環境

return to toc

  • OSX の Apache
  • OSX の PHP
  • 当初はパッケージ版の MySQL 、アンインストールして Homebrew の MySQL 5.6
  • 当初はパッケージ版の Node.js 、アンインストールして普通に nodebrew
  • 当初は OSX の Ruby (& RubyGems) 、次いで普通に rbenv

不便、という訳では無かったけど、時間を置いたら必然的に sudo しなければならないのが地味に面倒…特にログを /dev/null するのにイチイチ sudo するのが…いやまぁ、手が勝手に動くしログファイルのパーミションを変更すれば済む話ではあるけど…何となくそこまでしなかった…
アーキテクト的にはそうなのだろうし、そうあるべきだろうけど、そこまでセキュリティを求めている訳でも無いので…
ついでに言うと、 OSX の Apache の自動起動のメカニズムが良く分かってない…常にOS起動時に Apache 起動の必要は無いから、なんだけど、その辺の操作が何とも不明で、これと言って特に深く調べる事も無く…
今更知ったのだが、Homebrew でも brew services start で同様の事ができる模様だけど、カンベンして下さい何でもしませんけど、な状態。

それ以前は Windows からの名残で XAMP for OSX 、次いで、 MAMP(Free版) を。
MAMP を使い始めてから、シェルスクリプトやストアドの代わりにコマンドラインから、急造した PHP スクリプトを叩く機会が増え、これを何も考えずに行うと MAMP の、ではなく、OSX の PHP を叩く事になるので、こうなると PHP を二元管理する事になるので何となく美しくないなぁと。
なので .bashrc に MAMP の PHP へのパスを追加したが、こうすると brew doctor でイチャモンが付いたりで、解決方法も良く分からなく…
…と考えていた時期もあったけど、今は実質二元以上の管理を許容している状況…
それと、 Ruby …正確には OSX の RubyGems 、(詳細不明、風説の流布の可能性あり)これも sudo が必要だった筈なので、 Wordmove で都度パスワードを求められて、結果、 pull ・ push に失敗する可能性があるかもしれないし、そうでないかもしれない…

セルフアップデート

return to toc

ともかく一元管理の観点から可能な限り、何が何でも Homebrew でインストールしたが、この場合、セルプアップデートをどうするのか…
Homebrew で行うのか、個々のプログラムで実行するのか…
一応、 Homebrew 側に依存する予定だが、長期運用してみないと何とも言えない状況…少し前、 PHP7 ・ nodebrew は Homebrew で brew upgrade した。

実は素の Finder は使った事が無かったかも

return to toc

一体どのアプリ… OnyXTinkerToolXtraFinder が実現していたのか今となっては分からないが、「 Finder で全てのファイルを可視にしつつ、デスクトップのみ .DS_Store を非表示にする事」ができず…
何かもぉ調べるのが色々面倒になって、今の Finder は全てのファイルを可視状態にしていないのでドットファイルやドットディレクトリが表示されず、ホームディレクトリを Finder で見た場合、非常にシンプルに見えるのが逆に新鮮で。
今まで使ってきた感覚から、ターミナルでの操作が多いし、open . でピンポイントでそのディレクトリを Finder で開く事はあっても、一般的な可視状態のホームディレクトリ以下以外を Finder で開く事はほとんど無いし、ドットファイルの編集には vim を使うので、まぁ良いかと。
今まで通り .DS_Store は、目に付いた時に rm .DS_Store するなり、 MacForkCleaner を使えば良いかと思うし、そこまでしないがシェルスクリプトを cron している人もいる模様。

同様に、 Windows のデフォルトなのか、だいなファイラーだからなのか、「大文字小文字による並び順という前提の前に、まずディレクトリが先、次にファイルの並び順」もできず…
今更だけど、 .bashrcalias ll='ls -alF' していて特に違和感を感じないので、まぁこれも問題無いかと。

更に言うと、自然順ソートは…あっても無くても特に問題は無いかと。
今の Windows のファイルエクスプローラでも実現しているのか…だいなファイラーを使っているので、これは実現できないので、 OSX でも Windows でも自然順ソートされると逆に違和感を覚えるけど、特に気になる程でも、という状況ではあるが、プログラムで扱う場合は意識する必要はある。

統一的なインタフェース?

return to toc

例えば各コマンドのバージョン表示一つ取っても…

$ php -v
PHP 5.6.22 (cli) (built: Jun 12 2016 22:40:20)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

$ composer --version
Composer version 1.1.2 2016-05-31 19:48:11

$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]

$ gem -v
2.5.1

$ node -v
v4.4.5

$ python --version
Python 2.7.12

$ pip --version
pip 8.1.2 from /Users/MorryMasahiko/.pyenv/versions/2.7.12/lib/python2.7/site-packages (python 2.7)

いや…良いんですがね…例えば python -v するとねーとか。
更に各バージョン管理コマンドでの基本的なコマンドのスペル(複数形・単数形)や引数の違いだとか…未確認だから余計に気になって…「酒井・水野/美紀・真紀」のマトリックスみたいな…
例えば、横軸に Phpbrew ・ rbenv ・ nodebrew ・ pyenv などの各種コマンド、縦軸に「〇〇をする」、インストール・現在インストールされているものの一覧・サーチ・セルフアップデートなど…
それで差異があるならばそういうモノなのだろうし、実は一緒だった、ならばそれはそれで良しとして。
でなければ、何かこう…ラッパーを介して、同じ目的のコマンド引数や引数並び順を統一して…あ、いや、何でも無いです。

何故にクリーンインストールする羽目になったのか?

return to toc

一言で言うと「 AppCleaner で消し過ぎ」。
まー自分が阿呆なんですが…

120GB しか無いからと、写真や iTunes は旧MBAで管理していたので2 、使わないからとシステムに関わる(であろう)アプリを手当たり次第に消したのだが…2016年5月下旬に、突然「システム環境設定」の「iCloud」、同じく「インターネットアカウント」の「iCloud」が起動しないとメッセージが多発…
(おそらくの)原因をはっきりと把握したのは、Yosemite をクリーンインストールしていつも通り各種アプリを消した結果、同様の事象が発生。

実際問題、自分はテキストをメインに扱うので、仮想環境をバリバリ扱うので無い限り、数ギガ増加させるのは逆に困難なので…仮想環境のイメージファイルや Gulp の node_modules ディレクトリは結構怖いが。
となれば、今後は写真や iTunes の各種ファイルは、旧MBAから現行MBAで管理した方が間違い無く便利だなぁと。
おそらくは 100GB を使用したとしても(多分そこまで行かない)、気が気で無くなるのを我慢できれば…容量の半分を超えると焦り出す、多分、問題は無い筈…
とは言え、旧MBAからのファイル移行に時間がかかるので、未だ移行していない…

この様な事があったので今は逆に怖くてシステムが用意しているアプリは消せないにしても、明らかに使わないし消しても問題無さそうなゲームセンターやチェスは消したいのだが…
そう言えば、かつての Windows では「アプリケーションの管理」だったか、OSが用意している機能でアプリを追加・削除できたが(削除時はレジストリも綺麗にするのが一連の動作)、今はこの項目、何処にあるのか、というのもあるし、OSX にはこの項目が無いなぁと。

Menu of this post

  1. 1. はじめに…
  2. 2. Homebrew で Apache, MySQL, Phpbrew, rbenv, nodebrew, pyenv をお手柔らかにお願いします
  3. 3. ついでに VirtualBox, Vagrant で PHP 5.3, MySQL 5.0 もお手柔らかにお願いします
  4. 4. お手柔らかにお願いしてのモロモロ
  5. 5. 補足)個人用チートシート(もどき)

Footnotes

  1. 1. my.cnf の色分けは、どうにか工夫しないとダメかもしれないが。

  2. 2. 外で作業する時、iPhone の給電は MBA からでなく別電源を使用している…以前、現行MBAと iPhone を繋いでそれ以降少しの間、認証絡みか何かで iPhone が妙な挙動を示した記憶が…