開発用 MacBook Air 環境構築メモ(2017年7月版)

 開発用 MacBook Air さん再インストールの覚書2017年7月版。
 次の私はもっとうまくやってくれるでしょう。

Mac について

macOS Sierra
MacBook Air (13-inch Mid 2012)
プロセッサ 2 GHz Intel Core i7
メモリ 8 GB 1600 MHz DDR3

Mac 基本設定

システム環境設定

 すべてではないものの、真っ先に設定した設定集。

caps キーと command キーへ割り当て。

 control キーと迷ったものの、Mac ではコピー&ペーストが command キーなので、command キーへ。

スクロールの方向の「ナチュラル」のチェックボックスを外す。

 ナチュラル方向のスクロールに慣れてない。

キーボードの入力ソースに「日本語」を追加する。

 なぜかデフォルトで入ってなかった。

キーボードの入力中に「自動変換」「ライブ変換」「推測候補」のチェックを外す。

 勝手に変換されると何を打っていたか忘れる人。

セキュリティとプライバシーでパスワード要求を「すぐに」にする。

 心配性!

セキュリティとプライバシーでファイヤーウォールの設定を「入」にする。

 心配性!!

アプリインストー

 後からどんどん追加していくものの、真っ先にインストールしたアプリ集。

GoogleChrome

 Web ブラウザ。とにもかくにもこれがないと始まらない。

Firefox

 Web ブラウザ。CGI の試験時に表示確認として使用する他は使っていない。

avast

 アンチウィルスソフト。AVG が好きだったので。

Atom

 テキストエディタ。使い始めたばかり。

Evernote

 クラウドノート。OneNote からまとめたものを Evernote へ保存。見返し用。
 『Evernote プラス』プランを購入。ヘビーユーザーではないので十分。

OneNote

 Microsoftクラウドノート。まとめる前のメモを雑多に保存。
 Evernote と比べると、まだまだ使いにくい。

Dropbox

 オンラインストレージ。ローカル開発環境の Git に使用している。

Yummy FTP Pro

 FTPクライアントMac App Store で購入。機能が豊富で使いやすい。
 セールを逃して定価で買ったけれど、少しも後悔しなかったぐらいすばらしいもの。

Xcode

 Perl の開発で必要だった。Mac App Store でインストール。とても重い。

FireAlpaca

 ペイントツール。フリーでインストールしやすい。
 軽く画像を加工したい時に使用中。

コンソール 設定

 このあたりの設定を凝る人は本当に凝るのだと思う。

$ vim ~/.bash_profile
alias ls='ls -G'
alias ll='ls -l -G'
alias df='df -h'
alias rm='rm -i'
alias tree='pwd;find . | sort | sed "1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/|  /g"'
export LSCOLORS=gxfxcxdxbxegedabagacad
$ source ~/.bash_profile

Git 設定

 分散型バージョン管理システム
 これがないと開発が始まらないと思っているもののひとつ。慣れてしまうと手放せない。

バージョン
$ git --version
git version 2.13.1
git config 設定
$ git config --global user.name 'ユーザー名'
$ git config --global user.email 'メールアドレス'
$ git config --global color.diff auto
$ git config --global color.status auto
$ git config --global color.branch auto
$ git config --global core.precomposeunicode true
$ git config --global core.quotepath false

Homebrew インストー

 brew コマンド便利。これも使い出したらやめられないやつ。

インストー
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Web サーバー

 HTTP Server は Mac にデフォルトでインストールされている Apache を使用。
 PHP7 をインストールする関係上、/etc/apache2/ 配下ではなく、brewApache を使用する。Apache を使い続けるのは、以前の設定を使いまわせるから。

Apache インストー

 現状動いている Apache を止めてからインストール。

$ sudo apachectl stop
$ brew tap homebrew/apache
$ brew install httpd24

バージョン

$ httpd -v
Server version: Apache/2.4.25 (Unix)
Server built:   Feb  6 2017 20:02:10

起動場所確認

$ which apachectl
/usr/local/bin/apachectl
$ ll /usr/local/bin/apachectl
/usr/local/bin/apachectl -> ../Cellar/httpd24/2.4.26/bin/apachectl

起動停止など

$ sudo apachectl start
$ sudo apachectl stop
$ sudo apachectl restart

開発用ディレクトリ設定

 brew でインストールした Apache の DocumentRoot は /usr/local/var/www/htdocs。
 直接開発ファイルを置いても問題ないため、開発用ディレクトリを作成し、シンボリックリンクを Decktop に張る。

$ cd /usr/local/var/www/
$ mkdir WebServer
$ cd ~/Desktop/
$ ln -s /usr/local/var/www/WebServer WebServer

httpd.conf 設定

  • 実行権限変更のため、実行ユーザを変更。
  • ポートとサーバ名を指定。
  • バーチャルホストを使用するため、デフォルトの設定を削除。Virtual hosts のコメントを外す。
  • Perl 実行のため、cgi_module のコメントを外す。
  • デフォルトのディレクトリの設定をコメントアウトし、アクセス不可にする。
$ vim /usr/local/etc/apache2/2.4/httpd.conf
#Listen 8080
Listen 80
ServerName localhost:80
#User daemon
User ユーザー名
LoadModule cgi_module libexec/mod_cgi.so
<Directory "/usr/local/var/www/htdocs">
#    Options Indexes FollowSymLinks
#    AllowOverride None
#    Require all granted
     AllowOverride none
     Require all denied
</Directory>
<IfModule alias_module>
#     ScriptAlias /cgi-bin/ "/usr/local/var/apache2/cgi-bin/"
</IfModule>
<Directory "/usr/local/var/apache2/cgi-bin">
#    AllowOverride None
#    Options None
#    Require all granted
     AllowOverride none
     Require all denied
</Directory>
Include /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf

httpd-vhosts.conf 設定

 httpd-vhosts.conf に読み込む設定の追加。
 本来ならここに全て記載する? 前の記載を引用するためローカルホストの設定とインクルードのみ。紛らわしいと思ったので、localhost 指定をすべてエラーにしている。

$ mkdir /usr/local/etc/apache2/2.4/other/
$ vim /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf
Include /usr/local/etc/apache2/2.4/other/*.conf

<VirtualHost localhost:*>
    ServerName localhost

    AddDefaultCharset UTF-8
    DocumentRoot /usr/local/var/www/htdocs
    DirectoryIndex index.html
</VirtualHost>

バーチャルホスト 設定

 開発のためのローカルホスト名を登録。

$ sudo vim /etc/hosts
127.0.0.1       test.webserver.local
::1             test.webserver.local

 試験用。本公開する場合は適宜値を変更すること。

$ vim /usr/local/etc/apache2/2.4/other/test-webserver-local.conf
<VirtualHost test.webserver.local:*>
  ServerName test.webserver.local

  AddDefaultCharset UTF-8
  DocumentRoot /usr/local/var/www/WebServer/localhost/html
  DirectoryIndex index.html

  ScriptAlias /cgi-bin/ /usr/local/var/www/WebServer/localhost/cgi-bin/
  ScriptAlias /php-bin/ /usr/local/var/www/WebServer/localhost/php-bin/

  <Directory "/usr/local/var/www/WebServer/localhost/html">
    # .htaccess 許可
    AllowOverride All
    Options -Indexes -MultiViews +FollowSymLinks

    # テスト環境ではローカルのみ許可
    # Require all granted
    Require all denied
    Require local
  </Directory>

  <Directory "/usr/local/var/www/WebServer/localhost/cgi-bin">
    # .htaccess 許可
    AllowOverride All
    AddDefaultCharset UTF-8
    Options -Indexes -MultiViews +FollowSymLinks +ExecCGI
    AddHandler cgi-script .cgi .html

    # テスト環境ではローカルのみ許可
    # Require all granted
    Require all denied
    Require local
  </Directory>

  <Directory "/usr/local/var/www/WebServer/localhost/php-bin">
    # .htaccess 許可
    AllowOverride All
    AddDefaultCharset UTF-8
    Options -Indexes -MultiViews +FollowSymLinks +ExecCGI
    AddHandler cgi-script .php .html
    <FilesMatch "\.(php|html)$">
      SetHandler application/x-httpd-php
    </FilesMatch>

    # テスト環境ではローカルのみ許可
    # Require all granted
    Require all denied
    Require local
  </Directory>

</VirtualHost>

再起動

$ sudo apachectl configtest
$ sudo apachectl restart

Perl 環境構築

Xcode 更新

 DB 連携させるために Xcode が必要。App store から DL して起動して Agree。
 更に以下コマンドを発行してインストールしていないと DBD::mysql のインストールに失敗した。

$ sudo xcode-select --install

perlbrew インストー

 バージョンごとに管理するため、perlbrew のインストール。

$ curl -L http://install.perlbrew.pl | bash
$ echo "source ~/perl5/perlbrew/etc/bashrc" >> ~/.bash_profile
$ perlbrew available
$ perlbrew install --notest perl-5.10.1
$ perlbrew switch perl-5.10.1
$ perlbrew list
* perl-5.10.1

CGI 参照先作成

 CGI からのバージョンを変えたいため、シンボリックリンクを作成。

$ cd /usr/local/bin
$ ls $HOME/perl5/perlbrew/perls/perl-5.10.1/bin/perl
$ ln -s $HOME/perl5/perlbrew/perls/perl-5.10.1/bin/perl perl

cpanminus インストー

 バージョンごとにモジュールをインストールするため cpanm コマンドを使用。

$ perlbrew install-cpanm

local::lib インストー

 レンタルサーバーにそのままアップロードしたいため、アプリごとにディレクトリは分けてインストール。
 内部でコンパイルが走るものはアップロードしても動かない。注意。

$ ls $HOME/Desktop/WebServer/localhost/cpanlib
$ cpanm -l $HOME/Desktop/WebServer/localhost/cpanlib local::lib
$ cpanm --local-lib=$HOME/Desktop/WebServer/localhost/cpanlib CGI::Session

PHP 環境構築

 今回もっとも手間取った環境。
 brew を使用してインストール。エックスサーバーが PHP 7.1.x をサポートしているので 7.1 系を選択。

 phpbrew で管理を試みたものの、Apache 連携で権限変更不可なディレクトリの変更を指定されていたため、phpbrew の使用を諦める。しかし、この現象はデフォルト(root権限配下)の Apache を使用していたことが理由かもしれない。brew の httpd24 を使用すれば問題ない可能性があるものの……三度目の再インストールを行う気力がないので、今回は brew のみの対応。
 もしかしたら、phpbrew と brew の連携もできるかも?

PHP 7.1 インストー

$ brew tap homebrew/php
$ brew options php71
$ brew install php71 --with-apache
$ brew --prefix php71
/usr/local/opt/php71
$ php -v
PHP 7.1.6 (cli) (built: Jul 17 2017 14:37:13) ( NTS )

Web サーバー 連携設定

 php7_module の設定が入っているか確認。
 brew で –with-apache オプションを付けていたなら入っているはず。

$ vim /usr/local/etc/apache2/2.4/httpd.conf
LoadModule php7_module        /usr/local/Cellar/php71/7.1.6_18/libexec/apache2/libphp7.so
$ sudo apachectl configtest
$ sudo apachectl restart

DB 環境構築

 Wordpress を使ってみたかったので、今回は MySQL

MySQL インストー

$ brew update
$ brew install mysql
$ brew info mysql

バージョン確認

$ mysql -V
mysql  Ver 14.14 Distrib 5.7.18

起動停止コマンド

$ mysql.server start
$ mysql.server stop
$ mysql.server restart

セキュリティ設定

$ mysql_secure_installation

ログイン

$ mysql -u root -p

my.cnf 設定

 /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf の順で読み込まれる。
 /usr/local/etc/my.cnf が存在したため、それを変更。
 最低でも文字コードは utf8 にしておかないと後々文字化けで死ぬ。(死んだ)

$ vim /usr/local/etc/my.cnf
[mysqld]
bind-address = 127.0.0.1
character-set-server=utf8

[mysql]
default-character-set=utf8
$ mysql.server restart