この問題に対処しているときに、コンソールパッケージマネージャーHomebrewを使用してワークスペースを5〜10分で設定する方法について説明する興味深い資料に出会いました。 誰かがMacでWeb環境をセットアップするためのこの種の指示を役立つと思うので、私はその翻訳を公開しています。
「新しいMacBook Proを手に入れて、ゼロからセットアップすることにしました。これは、約4年前から同じTime Machineバックアップを使用しているからです。 Webサーバー/ LAMPスタック( L inux A pache M ySQL P HP)を取り除き、FastCGIの実装としてNginxとPHP-FPMに置き換える良い機会です。 以下では、OS X 10.9 / MavericksでNginx、PHP-FPM、MySQL、およびPhpMyAdminを構成する方法を読むことができます。
Xcode
まず、Mac App StoreからXcodeの最新バージョンをインストールします。
Xcode.appのダウンロード(Mac App Store経由)
ダウンロードが完了したら、
/Applications
フォルダーでXcodeを開き、ライセンスに同意します。
ターミナルウィンドウを開き、次のコマンドでXcodeをインストールします。
xcode-select --install
Install
]ボタンを使用してインストールを確認します。
Xcodeに戻り、
⌘ + ,
を押して設定にアクセスし、[ 場所 ]タブに移動します。 私の例では、最新バージョンのXcode 5.0.2(5A3005)にコマンドラインツールをインストールします。
自作
ここで、OS XのパッケージマネージャーであるHomebrewをインストールする必要があります。特定のアプリケーションのパッケージと依存関係をインストールするために、Linuxディストリビューションで
apt-get
または
aptitude
について既に聞いたことがあるかもしれません。
brew
は、Mac OS Xを実行しているコンピューターでのみ機能します。また、インストールされているアプリケーションの最新の更新プログラムを確実に取得できるため、期限切れバージョンやセキュリティホール、エクスプロイトなどを心配する必要がありません。
まず、Xquarzが必要です。
curl http://xquartz-dl.macosforge.org/SL/XQuartz-2.7.5.dmg -o /tmp/XQuartz.dmg open /tmp/XQuartz.dmg
次のコマンドでHomebrewをダウンロードしてインストールする必要があります。
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
競合や問題を信じます。
brew doctor
Homebrewでリポジトリとアプリケーションを更新します。
brew update brew upgrade
PHP-FPM
HomebrewにはPHP-FPMのデフォルトリポジトリがないため、追加する必要があります。
brew tap homebrew/dupes brew tap josegonzalez/homebrew-php
以下の引数を使用してPHP-FPMをインストールします。
brew install --without-apache --with-fpm --with-mysql php55
HomebrewはPHP-FPMソースコードをダウンロードしてコンパイルします。 彼に時間を与えてください。これには数分かかる場合があります。
コマンドラインでのPHP設定
コマンドラインでPHPを使用する場合は、
~/.bash_profile
ファイルの
$PATH
環境変数を更新する必要があります。
echo 'export PATH="$(brew --prefix josegonzalez/php/php55)/bin:$PATH"' >> ~/.bash_profile
自動起動セットアップ
mkdir -p ~/Library/LaunchAgents cp /usr/local/Cellar/php55/5.5.9/homebrew-php.josegonzalez.php55.plist ~/Library/LaunchAgents/
そして、PHP-FPMの始まり:
launchctl load -w ~/Library/LaunchAgents/homebrew-php.josegonzalez.php55.plist
PHP-FPMがポート9000でリッスンしていることを確認します。
lsof -Pni4 | grep LISTEN | grep php
出力は次のようになります。
php-fpm 69659 frdmn 6u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN) php-fpm 69660 frdmn 0u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN) php-fpm 69661 frdmn 0u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN) php-fpm 69662 frdmn 0u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)
MySQL
次のステップは、MySQLをインストールすることです。
brew install mysql
自動起動セットアップ
cp /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
データベースサーバーを起動します。
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
安全なインストール
MySQLサーバーのセキュリティを確保するために、
secure_mysql_installation
secure_mysql_installationバイナリを呼び出して、ルートパスワードを変更し、匿名ユーザーを削除し、ルートの下でリモートログイン機能を無効にします。
mysql_secure_installation
> Enter current password for root (enter for none):
既に設定されている場合は、現在のパスワードを指定してください。
> Change the root password? [Y/n]
Enterキーを押して、rootユーザーのパスワードを指定します。 必要に応じて、LastPassまたは1Passwordパスワードマネージャーに保存します。
> Remove anonymous users? [Y/n]
はい、必要ありません。
> Disallow root login remotely? [Y/n]
はい、127.0.0.1を除く他のIPからのルート認証は不要です。
> Remove test database and access to it? [Y/n]
はい テストテーブルは必要ありません。
> Reload privilege tables now? [Y/n]
特権テーブルを再起動すると、変更が有効になることを確認できます。
接続確認
mysql -uroot -p
上記で指定したルートパスワードを入力すると、MySQLコンソールが表示されます。
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
\q
コマンドでセッションを終了します。
mysql> \q Bye
phpMyAdmin
phpMyAdminに必要な
autoconf
をインストールします。
brew install autoconf
環境変数$ PHP_AUTOCONFを設定します。
echo 'PHP_AUTOCONF="'$(which autoconf)'"' >> ~/.bash_profile
phpMyAdminをインストールしましょう。
brew install phpmyadmin
Nginx
次のコマンドでNginxをインストールします。
brew install nginx
自動起動セットアップ
ポート80を使用しているため、rootとしてNginxを実行する必要があります。
sudo cp /usr/local/opt/nginx/*.plist /Library/LaunchDaemons/ sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
Webサーバーをテストする
Nginxを起動します:
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
設定は、HTTPプロトコルの標準ポート80ではなく、デフォルトでポート8080でリッスンします。
curl -IL http://localhost:8080
答えは次のようになります。
HTTP/1.1 403 Forbidden Server: nginx/1.4.4 Date: Sun, 08 Dec 2013 03:33:41 GMT Content-Type: text/html Content-Length: 168 Connection: keep-alive
Nginxを再度停止します。
sudo launchctl unload /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
さらなるカスタマイズ
nginx.conf
次のNginx構成中に必要なフォルダーを作成します。
mkdir -p /usr/local/etc/nginx/logs mkdir -p /usr/local/etc/nginx/sites-available mkdir -p /usr/local/etc/nginx/sites-enabled mkdir -p /usr/local/etc/nginx/conf.d mkdir -p /usr/local/etc/nginx/ssl sudo mkdir -p /var/www sudo chown :staff /var/www sudo chmod 775 /var/www
現在の
nginx.conf
ファイル(コードを見たい場合は常に
/usr/local/etc/nginx/nginx.conf.default
で利用可能)を削除し、GitHubから
curl
を使用して作成した設定を読み込みます:
rm /usr/local/etc/nginx/nginx.conf curl -L https://gist.github.com/frdmn/7853158/raw/nginx.conf -o /usr/local/etc/nginx/nginx.conf
構成ファイルは、できるだけ単純で軽量です。ワーカー設定、ログパス/形式、およびいくつかのインクルードです。
nginx.conf.default
以上のものはありません。
PHP FPMをダウンロードする
GitHubからPHP-FPM設定をダウンロードします。
curl -L https://gist.github.com/frdmn/7853158/raw/php-fpm -o /usr/local/etc/nginx/conf.d/php-fpm
仮想ホストの作成
curl -L https://gist.github.com/frdmn/7853158/raw/sites-available_default -o /usr/local/etc/nginx/sites-available/default curl -L https://gist.github.com/frdmn/7853158/raw/sites-available_default-ssl -o /usr/local/etc/nginx/sites-available/default-ssl curl -L https://gist.github.com/frdmn/7853158/raw/sites-available_phpmyadmin -o /usr/local/etc/nginx/sites-available/phpmyadmin
git
を使用して、テスト仮想ホスト(
phpinfo()
、および
phpinfo()
書き換えを含む)のクローンを作成します。
git clone http://git.frd.mn/frdmn/nginx-virtual-host.git /var/www rm -rf /var/www/.git
また、
/var/www/.git
フォルダーを削除して、gitがその後の変更を追跡しないようにします。
SSLセットアップ
SSL証明書と秘密キー用のフォルダーを作成します。
mkdir -p /usr/local/etc/nginx/ssl
次のコマンドを使用して、4096ビットRSAキーと自己署名証明書を生成します。
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=State/L=Town/O=Office/CN=phpmyadmin" -keyout /usr/local/etc/nginx/ssl/localhost.key -out /usr/local/etc/nginx/ssl/localhost.crt openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=State/L=Town/O=Office/CN=localhost" -keyout /usr/local/etc/nginx/ssl/phpmyadmin.key -out /usr/local/etc/nginx/ssl/phpmyadmin.crt
仮想ホストを有効にする
次に、仮想ホストを有効にするために、仮想ホストの
sites-enabled
フォルダーにシンボリックリンクを作成する必要があります。
ln -sfv /usr/local/etc/nginx/sites-available/default /usr/local/etc/nginx/sites-enabled/default ln -sfv /usr/local/etc/nginx/sites-available/default-ssl /usr/local/etc/nginx/sites-enabled/default-ssl ln -sfv /usr/local/etc/nginx/sites-available/phpmyadmin /usr/local/etc/nginx/sites-enabled/phpmyadmin
Nginxの再起動:
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
最新のテスト
ここで、すべてが機能するはずです。 これを確認するには、以下のリンクをクリックしてください。
- http:// localhost →「Nginx works」ページ
- http:// localhost / info →
phpinfo()
- http:// localhost / nope →「見つかりません」ページ
- https:// localhost:443 →「Nginx works」ページ(SSL)
- https:// localhost:443 / info →
phpinfo()
(SSL) - https:// localhost:443 / nope →「見つかりません」ページ(SSL)
- https:// localhost:306 →phpMyAdmin(SSL)
サービス管理
遅かれ早かれクラッシュしたものを再起動する必要があるため、追加のエイリアスが必要になる場合があります。
curl -L https://gist.github.com/frdmn/7853158/raw/bash_aliases -o /tmp/.bash_aliases cat /tmp/.bash_aliases >> ~/.bash_aliases echo "source ~/.bash_aliases" >> ~/.bash_profile
次のコマンドを使用して、新しいウィンドウ/ターミナルセッションを開くか、手動で
~/.bash_profile
をリロードできます。
source ~/.bash_profile
上記のように、長い
launchctl
コマンドを入力する代わりにエイリアスを使用できるようになりました。
Nginx
次のコマンドを使用して、Nginxを起動、停止、および再起動できます。
nginx.start nginx.stop nginx.restart
ログへのクイックアクセス:
nginx.logs.access nginx.logs.default.access nginx.logs.phpmyadmin.access nginx.logs.default-ssl.access nginx.logs.error nginx.logs.phpmyadmin.error
構成チェック:
[sudo] nginx -t
PHP-FPM
PHP-FPMを起動、停止、再読み込みします。
php-fpm.start php-fpm.stop php-fpm.restart
構成チェック:
[sudo] php-fpm -t
MySQL
MySQLサーバーを起動、停止、再起動します。
mysql.start mysql.stop mysql.restart
「立ち往生しているのか、アドオンがあるのか教えてください!」
私自身で、ローカルドメインを作成し、Nginxをセットアップしてそれらと連携
hosts
場合、
sudo vi /etc/hosts
コマンドを使用して、
hosts
「IP domain.name」ペアを書くことを忘れないでください。
PS同僚は、次のものを自動的にインストールするスクリプトを書いたと報告しています。
github.com/mrded/brew-emp