3

MAMP Pro を使用すると、「local.example.com」などのエントリを作成して、ローカル マシン上のそのサイトのルート ディレクトリを指すことができます。

これを自動化することは可能ですか?

それは私のコンピューター上にあり、次のようにセットアップしています。

User/hm/Sites/example.com/app User/hm/Sites/example2.com/app User/hm/Sites/example3.com/app など...

app フォルダー内には、各ドメインの実際のサイトがあります。

もちろん、それらのそれぞれを手動でMAMP Proに追加し、それぞれのサイトに関連するURL「example1.com」、「example2.com」、「example3.com」などを追加できますが、自動化する方法があるかどうか疑問に思っていましたこれは、MAMP Pro の仮想ホスト テンプレートを編集して行います。したがって、サイトのフォルダーに「example4.com」という新しいフォルダーを作成し、その中にWordPressサイトを含むアプリフォルダーを配置すると、MAMP Proが実行されている限り、ブラウザーでexample4.comに移動して表示できますそのローカルサイト。

MAMP(Proではありません) http://wp.tutsplus.com/tutorials/hosting/wordpress-development-and-deployment-with-mamp-git-and-dropbox/の記事を見ましたが、それにはあなたがする必要がありますホストファイルにも各エントリを手動で追加しますが、MAMP Proを手動で簡単に追加できるため、目的が無効になります。

4

1 に答える 1

3

drush(サイトを管理するためのコマンドラインツールdrupal)をMAMPおよびMAMP Proと統合し、テスト用の仮想ホストの作成を自動化できるようにしたかったので、私は同様の考えを持っていました。

MAMP Proに手動で追加した情報はファイルに保存され、テンプレートファイルに基づいてファイルを~/Library/Preferences/de.appsolute.mamppro.plist変更/作成するために使用されます。実際には、テンプレートファイルはに保存され、生成されたファイルはに保存されます(このフォルダと同様にチェックしてください)。/etc/hostshttpd.conf~/Library/Application Support/appsolute/MAMP PRO/templatesLibrary/Application Support/appsolute/MAMP PRO/httpd.confhosts

手動で変更を保存して再起動するたびにMAMPによって生成されるため、これらのファイルを編集しても意味がありません(詳細は調べていませんが、手動で編集しようとしたときに希望がなかったことを覚えています) 。

あなたがする必要があるのは、plistファイルde.appsolute.mamppro.plistを直接編集することです。ファイルの読み取りと書き込みは、をplist使用して実行できますPlistBuddy/usr/libexec/PlistBuddyを参照man PlistBuddy)。

plist次のコマンドを使用して、ファイル内の情報を抽出できます。

/usr/libexec/PlistBuddy -c Print ~/Library/Preferences/de.appsolute.mamppro.plist

このコマンドを使用した仮想ホストの一般的な(単一の)レコードは、次のようになります。

    Dict {
        MultiViews = false
        documentRoot = /home/test/openpublish-2.3
        Order = 0
        ExecCGI = false
        serverAliases = Array {
        }
        dyndns = Dict {
            displayName = -
        }
        serverName = openpublish-2.3
        FollowSymLinks = true
        AllowOverride = 0
        local = true
        Allow = 0
        Includes = true
        Indexes = false
        SymLinksifOwnerMatch = false
    }

ここでdocumentRoot、およびserverNameは各仮想ホストに必要な主な値です。出力をxmlplistの形式にする場合は、次の-xオプションを追加します。

/usr/libexec/PlistBuddy -x -c Print ~/Library/Preferences/de.appsolute.mamppro.plist

上記の単一のレコードは、次の構造を持つ配列内の多くのレコードの1つです。

virtualHosts = Array {Dict {... VirtualHost1の値...}Dict{... VirtualHost2の値...}Dict{... etc ...}}

上記のコマンドはファイル全体を吐き出しplistます。マニュアルページだけを使用して、配列に焦点を当てる方法や、配列の2番目(レコード)をvirtualHosts言う方法を見つけるのは長い苦痛でした。Plistの操作に関するこのページのおかげで、私はそれを正しく理解しました(次のコマンドではその部分をスキップします)。配列全体にアクセスするには、次のコマンドを使用します。DictvirtualHosts/usr/libexec/virtualHosts

PlistBuddy -c "Print :virtualHosts" ~/Library/Preferences/de.appsolute.mamppro.plist

2番目のレコードを印刷するには:

PlistBuddy -c "Print :virtualHosts:2" ~/Library/Preferences/de.appsolute.mamppro.plist

documentRoot5番目のvirtualHostsレコードのを印刷するには:

PlistBuddy -c "Print :virtualHosts:5:documentRoot" ~/Library/Preferences/de.appsolute.mamppro.plist

manページによると、PlistBuddy -c Add entry type [value]あなたのためにトリックを行う(つまり、必要なレコードを追加/書き込む)ので、上記の情報をマニュアルページおよびリンクと組み合わせることで問題を解決できます(リンクは、スクリプトを作成する場合に役立ちます) )。

自動スクリプトはまだ完成していませんが(drushコードインphpまたはbashスクリプトが私の好みです)、次の点が役立つと思います。

何よりもまず、テストを行う場合は、最初にバックアップを作成するか、de.appsolute.mamppro.plistこのファイルをコピーして、コピーに対してすべてのテストを実行するようにしてください。したがって、以下では、端末を使用していて、コマンドのエイリアスを作成し、plist次のようにファイルをコピーしていると仮定します。

$ alias PlistBuddy="/usr/libexec/PlistBuddy"
$ cp ~/Library/Preferences/de.appsolute.mamppro.plist safe_to_play.plist

アレイに新しいDictものを追加するには:virtualHosts

PlistBuddy -c "Add :virtualHosts: dict" safe_to_play.plist

新しい仮想ホストエントリのインデックスを見つけるには、次のようにします(bashスクリプトを想定)。

PlistBuddy -c "Print :virtualHosts: dict" safe_to_play.plist  | grep documentRoot | wc -l

documentRootこの新しいレコードのエントリを追加するには、次のようにします。

PlistBuddy -c "Add :virtualHosts:XXX:documentRoot string /home/path" safe_to_play.plist

ここXXXで、はプレビューコマンドから出力される行番号です(配列のインデックスは0で始まるため)。

もちろん、構造とタイプを尊重していることを確認して、すべてのエントリ(など)に対してこれを繰り返す必要があります(FollowSymLinks単一serverNameのエントリに配列と整数と文字列がありますDict)。最後になりましたが、変更を有効にするには、MAMP Pro(または少なくともサーバー)を再起動する必要があります~/Library/Preferences/de.appsolute.mamppro.plist。もう一度plistファイルをバックアップしてください!!!

これが、必要なスクリプトの作成に役立つことを願っています。

于 2013-01-15T13:19:20.727 に答える