BACKSTAGE技術部

群馬職業訓練短期大学校、ポリテクカレッジ群馬のデザイン科卒業生で行われる作品展
「BACKSTAGE」の技術的ブログです。
Adobe Illustrator、Photoshopを中心に手持ちのアプリケーション、デジモノの検証結果やTipsをお伝えしていきたいと思います。
リンクはご自由に。報告も不要です。
<< JavaScript for Automation(JXA)でファイルパスからFinderオブジェクトを取得してみる | main | Illustratorでクリスマスのモールを作ってみよう >>
MacでWebサーバーを設定(PHP、バーチャルホストの有効化と同一LAN内からのアクセス)
0
    JUGEMテーマ:Macintosh

    人からの依頼もありWebサイトを複数作っているんですが、
    MacだとApacheが標準搭載されてるのでローカルテスト環境に事欠かなくて非常に便利です。
    色々調べて設定をいじり、PHP、CGI、バーチャルホストを有効化して
    本番環境に近い状況でテストできるようにしていました。

    この度Mac mini のOSをYosemiteにアップグレードしまして、
    毎回のことなんですが、アップグレードする度に
    ApacheやPHPがバージョンアップされるためいくつかの設定が初期化されます。
    前のバージョンの時使用していた設定も「~previous」が付いた名前で残っていますが、
    修正が必要な部分以外が変更になっているとサーバの動作に影響が出そうですので
    覚え書きも兼ねて手作業で今まで通りの設定に修正したいと思います。

    まず、やることリスト
    1.Apache起動
    2.ユーザディレクトリ有効化
    3.PHPの有効化(httpd.conf編集)
    4.PHPタイムゾーンの設定(php.ini複製、編集)
    5.バーチャルホスト有効化(httpd.conf編集)
    6.httpd-vhosts.confファイル修正


    一応、Apache起動していない状態でサイトが見られるか確認します。
    アドレスはhttp://localhost/
    もしくはシステム環境設定>共有の
    ローカルネットワーク上のコンピュータから、次のアドレスでこのコンピュータにアクセスできます:
    とある部分に書いてあります。(他の端末からアクセスするのと共通のアドレスなので自分はこっち派)


    進捗バーが停止したままです。


    ではやることリストの1から始めます。
    設定はほぼターミナルでの作業になります。
    では早速ターミナルを起動。

    ターミナルは「アプリケーション」フォルダ内の「ユーティリティ」フォルダにあります。
    それと設定ファイルの編集はターミナルから「vi」で行います。
    Webで「vi コマンド」等で検索するとコマンド一覧が見つかると思います。


    1.Apache起動

    ターミナルで
    sudo apachectl start
    と入力してenterキー。
    パスワードを求められますので現在ログイン中の管理ユーザのパスワードを入力してエンターキー。
    (パスワード入力部分は変化ありません)

    Webブラウザで先ほどのアドレスにアクセスしてみます。


    Apache起動しました。
    OSX10.6以前はシステム環境設定の共有の中に「Web共有」という項目がありまして、
    このチェックのON、OFFがApacheの起動と停止になっていましたが、
    10.7以降は「Web共有」の項目がなくなりまして、ターミナルで起動、停止をする方法になったようです。


    2.ユーザディレクトリ有効化(httpd.conf編集)

    ターミナルで
    sudo vi /private/etc/apache2/httpd.conf
    と入力してenterキー
    (前回のパスワード入力から時間がかかっていると再びパスワード入力を求められます)


    するとhttpd.confの中身が表示されますので


    /userdirと入力して(「userdir」で検索)


    enterキー


    #LoadModule userdir_module libexec/apache2/mod_userdir.so
    の行が表示されますので
    「i」キーを押してインサートモードに切換。
    カーソルキーで行頭へカーソルを移動してdeleteキーで削除。
    「esc」キーでインサートモードを抜け
    「n」キーを数回押して他の行で「userdir」がある場所を検索します。


    #Include /private/etc/apache2/extra/httpd-userdir.conf
    の行がヒットしますので、この行も行頭の「#」を削除します。
    削除した後「etc」でインサートモードを抜けたら
    :wq
    と入力してenterキー。これで保存してvi終了します。(以下viで編集後の保存はこのコマンド)
    再びターミナルでApacheを再起動
    今度は
    sudo apachectl restart
    これでApacheが再起動されます。
    次にユーザのサイトディレクトリにブラウザでアクセス。
    http://localhost/~ユーザ名/
    または
    http://コンピュータ名.local/~ユーザ名/

    あ、あれ?
    フォルダのアクセス権は間違ってないはずなのにパーミッションエラーが…
    色々調べてみると
    http://stackoverflow.com/questions/25250566/apache-localhost-403-error-with-yosemite
    こんなのが。
    どうやらYosemiteでApacheのバージョンが上がったせいで
    今までのユーザディレクトリ用confではダメなようです。
    ユーザディレクトリ用のconfは刷新されないのね…。
    ターミナルで
    sudo vi /private/etc/apache2/users/ユーザ名.conf

    <Directory "/Users/ユーザ名/Sites/">
    Options Indexes MultiViews
    AllowOverride All
    Require all granted
    </Directory>

    と書き込んで
    「esc」キー
    :wq
    で保存
    そのファイルが無くてもで作成されます。
    そしてApache再起動。
    ターミナルは上矢印キーを押すと以前入力したコマンドが再表示されるので何度か押して
    sudo apachectl restart
    を出してenterが楽です。
    再びユーザのサイトディレクトリにアクセス。

    えぇぇぇぇ…

    もうちょっと調べてみると
    http://stackoverflow.com/questions/24583859/apache-localhost-username-not-working
    こんなの発見。
    httpd-userdir.conf
    も修正しないとダメみたい。
    ターミナルで
    sudo vi /private/etc/apache2/extra/httpd-userdir.conf

    #Include /private/etc/apache2/users/*.conf
    の「#」を削除して保存します。
    そしてApache再起動。
    先ほどのアドレスにブラウザでアクセス。


    おっしゃー!
    どうにかユーザディレクトリの有効化完了
    後々バーチャルホスト設定するのでそこまで重要な作業ではなかったのですが、
    出来そうなのに出来ないのが悔しくて意地になりました。

     

    2.PHPの有効化(httpd.conf編集)
     

    PHPが使えるか確認。
    PHPの情報が表示されるphpファイルをホームのサイトフォルダ直下に置いてアクセス。

    PHPモジュールが読み込まれていないのでPHPの中身がそのまま表示されてしまいます。

    PHPモジュールが読み込まれるようにhttpd.confを再び編集
    ターミナルで
    sudo vi /private/etc/apache2/httpd.conf 

    するとhttpd.confの中身が表示されますので
    /phpと入力してenterキー


    #LoadModule php5_module libexec/apache2/libphp5.so
    の行へ移動しました。
    ここでインサートモードに入って行頭の「#」を削除して「esc」

    ついでにhtmlファイルでもphp使いたくなったときに動くように設定しちゃいましょう。
    httpd.confの最後に以下を追加
    <IfModule php5_module>
            AddType application/x-httpd-php .php .html .htm
            AddType application/x-httpd-php-source .phps
            <IfModule dir_module>
                    DirectoryIndex index.html index.php
            </IfModule>
    </IfModule>

    :wqで保存してvi終了
    Apacheを再起動。

    先ほどのphpファイルにアクセスすると

    phpinfoが表示されました。
    YosemiteではVar.5.5.14が使われているようです。

    同様にCGIも有効化したかったのですが、
    これが一筋縄ではいかなそうなので今回見送り。


    4.PHPタイムゾーンの設定(php.ini複製、編集)

    PHPは動くようになりましたがデフォルトでphp.iniがありませんので
    時間取得する命令(date)があるとPHPがエラー起こします。
    /private/etcフォルダ内に「php.ini.default」というファイルがあるので
    これを複製・修正してdateを使えるようにします。

    sudo cp /private/etc/php.ini.default /private/etc/php.ini
    これで「php.ini.default」が「php.ini」という名前で複製されました。
    このままだと編集出来ないのでアクセス権を変更。
    sudo chmod 644 /private/etc/php.ini

    そして「php.ini」を編集します。
    sudo vi /private/etc/php.ini
    /zoneで「zone」が記述されているところを検索


    最初にヒットした行の2行下の
    ;date.timezone =

    date.timezone = "Asia/Tokyo"
    に修正して保存、Apache再起動。
    タイムゾーンの設定終了。


    5.バーチャルホスト有効化(httpd.conf編集)

    バーチャルホスト有効化というのは1つのサーバで複数のドメインを扱えるようにすることです。
    複数のWebサイトを運営するとなるとローカルで各サイト毎のフォルダが別ドメインとして扱いたいところです。
    各ドメインのサイトルートのディレクトリを好きなフォルダに設定出来るようになります。
    共通して使いたいPHPやJavascript、画像ファイルは特定のディレクトリに置いて、
    サイトルートからのパス指定で読み込みたいですね。

    またもやhttpd.confを編集
    ターミナルで
    sudo vi /private/etc/apache2/httpd.conf
    /vhostsで検索

    #Include /private/etc/apache2/extra/httpd-vhosts.conf
    この行の「#」を削除して保存。


    6.httpd-vhosts.confファイル修正

    続いて先ほど読み込みを有効にしたhttpd-vhosts.confを編集します。
    sudo vi /private/etc/apache2/extra/httpd-vhosts.conf
    DHCP環境で同一LAN内の他の端末からもアクセス出来るようにするには
    ポート番号で振り分けするしかなさそうですので、
    http://ja.wikipedia.org/wiki/TCPやUDPにおけるポート番号の一覧
    この辺りを参考に内容を以下の様に

    Listen 8080
    Listen 8082
    Listen 8083

    # localhost
    <VirtualHost *:80>
        DocumentRoot "/Library/WebServer/Documents"
        ServerName localhost
    </VirtualHost>

    # example1
    <VirtualHost *:8080>
        DocumentRoot "/Users/ユーザ名/Sites/example1/html"
    </VirtualHost>

    # backstage
    <VirtualHost *:8082>
        DocumentRoot "/Users/ユーザ名/Sites/backstage/html"
    </VirtualHost>

    #example2
    <VirtualHost *:8083>
        DocumentRoot "/Users/ユーザ名/Sites/example2/html"
    </VirtualHost>

    といった具合に作っているサイトの数だけListenとVirtualHostのポート番号を設定します。
    保存してApache再起動。

    本家サイトのテスト環境をポート番号8082で設定していますので
    ブラウザで
    http://localhost:8082
    へアクセス。

    アクセス出来ました。
    あれ?トップの画像がリンク切れてる。


    iPhoneからも「コンピュータ名.local:8082」でアクセス出来ました。

    PC版のトップページの画像リンク切れの原因を調べたところ

    GDがPNGサポートしなくなってる…マジか。
    画像の上に透過ロゴ載せたかっただけなんですけど。
    これはちょっとどうしたもんでしょ?

    本番環境はちゃんと動くので
    これでローカルサーバの設定ひとまず終了にします。
    OSのバージョンアップするたびに毎回新しいトラブルが発生しますね。
    今回はユーザーディレクトリ有効化の設定途中に余計なことをしてしまったりして、
    パーミッションエラーがずっと残ってしまい、原因究明に数日掛かってしまいました。
    職場で詳しい人に教えてもらったHomebrewとかいうものも勉強して使ってみたいと思います。

    次のOSアップグレードの時はもっと作業時間を短縮したいものです。
     
    ブログランキング・にほんブログ村へ
    にほんブログ村
    | タナカ | Macintosh | 00:28 | comments(0) | - | - |









    スマホ版
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
    << April 2017 >>
    + SELECTED ENTRIES
    + RECENT COMMENTS
    • Macのカレンダー.appを使って定期的にアプリケーションを実行してみよう
      タナカ (12/02)
    • Macのカレンダー.appを使って定期的にアプリケーションを実行してみよう
      カール (12/01)
    • Macのカレンダー.appを使って定期的にアプリケーションを実行してみよう
      タナカ (12/01)
    • Macのカレンダー.appを使って定期的にアプリケーションを実行してみよう
      タナカ (11/30)
    • Macのカレンダー.appを使って定期的にアプリケーションを実行してみよう
      カール (11/30)
    • Illustratorでオブジェクトが重なっている部分のみの線分を抽出してみよう
      タナカ (06/30)
    • Illustratorでオブジェクトが重なっている部分のみの線分を抽出してみよう
      ニャーン (06/29)
    • Illustratorでオブジェクトが重なっている部分のみの線分を抽出してみよう
      タナカ (06/19)
    • Illustratorでオブジェクトが重なっている部分のみの線分を抽出してみよう
      ニャーン (06/18)
    • Illustratorで1本の線から効果の「変形」を使って雪の結晶を作ってみよう
      ニャーン (02/13)
    + CATEGORIES
    + ARCHIVES
    + BACKSTAGE
    + Amazon
    + 広告

    + にほんブログ村ランキング
    + MOBILE
    qrcode
    + LINKS
    + PROFILE