web-dev-qa-db-ja.com

複数サイトおよびプロジェクトごとのインストールでVagrantとHomesteadを使用する

私はかなり長い間XAMPPを使用してきましたが、Laravel=を発見し、それが非常に気に入っていることを知り、Homesteadを使用したいと思いました。私が抱えている問題は、複数のサイトを実行することはできないようです。

私はさまざまなことを試しましたが、現在の主な問題は、1つのプロジェクトが機能する一方で、他のすべてのプロジェクトがWebページにアクセスしようとすると接続タイムアウトになることです。

これらは、ホームステッドを使用するために行った手順です

  1. VirtualBoxのインストール
  2. Vagrantのインストール
  3. vagrant box add laravel/Homesteadを使用してHomesteadを追加する
  4. リポジトリの更新git clone https://github.com/laravel/Homestead.git Homestead
  5. bash init.shスクリプトを使用して、HomesteadディレクトリにHomestead.yamlファイルを作成します。
  6. 新しいプロジェクトを作成laravel new projectA
  7. ホームステッドを要求composer require laravel/Homestead
  8. Vagrantfile php vendor/bin/Homestead makeを生成
  9. Homestead.yamlを変更して、IPが10で終わるようにします
  10. 別のプロジェクトを作成laravel new projectB
  11. ホームステッドを要求composer require laravel/Homestead
  12. Vagrantfile php vendor/bin/Homestead makeを生成
  13. Homestead.yamlを変更して、IPが11で終わるようにします
  14. それらの2つのサイトをhostsファイルに追加するSudo nano /etc/hosts => xxx.xx.xx.10 projecta.appxxx.xx.xx.11 projectb.app
  15. 2つのディレクトリのいずれかからのvagrantの開始vagrant up

今、私は問題を抱えています。プロジェクトの1つだけが到達可能であるということです。それは常に私がvagrant upと呼んだ場所からのものです。したがって、プロジェクトAからvagrant upを呼び出すと、http://projecta.apphttp://projectb.appにアクセスできます。悲しいことに、他の方法でも同じです。

これは私のvagrant global-statusです

id       name    provider   state   directory                           
------------------------------------------------------------------------
fc6fadb  default virtualbox running /Users/mknb/work/projectA

projectBディレクトリから別のvagrant upを実行するだけだと思っていましたが、それはもちろん動作しません。

Laravel=は、per projectインストールが可能だと言っていたので、グローバルホームステッドを使用したくないので、どうすれば達成できますか?詳細情報が必要ですか? ?

IPとドメイン名を除いてHomestead.yamlを変更しませんでしたHomestead.app => projecta.app

Homestead.yamlにサイトを追加するだけでよいので、Homesteadを使用したグローバルインストールはかなり簡単に思えますが、先ほど述べたように、プロジェクトごとにインストールしたいと思います。誰でも助けることができますか?

もちろん、Homesteadディレクトリからvagrantを起動することはできません。

26
Musterknabe

あなたの方法でホームステッドを使用することにより、プロジェクトごとに仮想マシンを作成します。したがって、VirtualBoxは、仮想マシンのallに対してホストマシンからのHTTP要求を転送できません。毎回1台のマシン(つまり、1つのプロジェクト)しか実行できません。

Homesteadで複数のプロジェクトを実行するには、次のようにします:

  • ホームステッドのクローンgit clone https://github.com/laravel/Homestead.git Homestead
  • Homesteadフォルダー内で、bash init.shを実行します

~/.Homestead/Homestead.yamlfoldersプロパティを編集して、両方のプロジェクトのコードをVMと共有します。

folders:
    - map: ~/pj1
      to: /path/to/project1
    - map: ~/pj2
      to: /path/to/project2

~/.Homestead/Homestead.yamlsitesプロパティを編集して、Nginxが両方のサイトのドメインを有効にするようにします。

sites:
    - map: project1.local
      to: /home/vagrant/pj1/public
    - map: project2.local
      to: /home/vagrant/pj2/public

hostsファイルを編集して、これらのドメインをローカルホストに転送します

127.0.0.1 project1.local
127.0.0.1 project2.local
  • その中にHomesteadコードをクローンしたフォルダー(vagrant upファイルを含む)でinit.shを実行します。

これで、たった1つのHomestead仮想マシンで必要な数のプロジェクトを実行できます。

35
Hieu Le

それは私を大いに助けたが、受け入れられた答えに欠けているいくつかの重要なステップがあります。これらの必要な手順を追加しました。答えてくれてありがとう@ Hieu Le

Laravel docs の指示に従って、最初のサイトを正しくインストールしたと仮定します。これで、別のlaravelサイトをvagrantに移行します。次の手順に従ってください。

  1. cdを新しいLaravelプロジェクトのディレクトリに追加します。追加するすべてのlaravelファイルとその使用MAMPまたは非浮浪者のソリューション。
  2. vagrant init laravel/Homesteadを実行します。このコマンドは、この新しいプロジェクトに必要なVagrantFileを追加します。
  3. 最初の元のプロジェクトファイルのディレクトリを開き、エディターでそのHomestead.yamlファイルを開きます。
  4. 承認された回答の@ Hieu Leで定義された手順に従って、.yamlファイルを変更します

    folders:
         - map: ~/pj1
           to: /path/to/project1
         - map: ~/pj2
           to: /path/to/project2
    
    sites:
        - map: project1.local
          to: /home/vagrant/pj1/public
        - map: project2.local
          to: /home/vagrant/pj2/public
    

    ホストファイルを編集して、これらのドメインをローカルホストに転送します

    127.0.0.1 project1.local
    127.0.0.1 project2.local
    
  5. 端末cdで、最初の元の元のプロジェクトディレクトリに移動します。
  6. コマンドvagrant reload --provisionを実行します。これによりvagrantマシンがリロードされ、.yamlファイルで行った変更が有効になります。元のプロジェクトのデータベースはそのまま残ります。
  7. vagrant sshを実行します
  8. lsを実行し、新しいプロジェクトのフォルダーが表示されることを確認します。その場合、新しいサイトを正しく構成しました。
  9. http://を追加して新しいサイトのURLにアクセスすると、完了です。
10
hhsadiq

here のように、Homesteadをプロジェクトに直接インストールし、所有する各プロジェクトのルートディレクトリでこのcomposer require laravel/Homestead --devを使用してHomesteadを要求できます。これで、makeコマンドにより、VagrantfileおよびHomestead.yamlファイルをプロジェクトのルートディレクトリに生成できます。

  • Mac/Linux:

    php vendor/bin/Homestead make
    
  • ウィンドウズ:

    vendor\bin\Homestead make
    

各プロジェクトルートには、編集するHomestead.yamlファイルがあります。

  • プロジェクトA

    ip: "192.168.10.10"
    ...
    folders:
        - map: "~/Code/projecta"
          to: "/home/vagrant/projecta"
    sites:
        - map: project.a
          to: "/home/vagrant/projecta/public"
    
  • プロジェクトB

    ip: "192.168.10.10"
    ...
    folders:
        - map: "~/Code/projectb"
          to: "/home/vagrant/projectb"
    sites:
        - map: project.b
          to: "/home/vagrant/projectb/public"
    

これを/etc/hostsに追加します:

    192.168.10.10 project.a
    192.168.10.10 project.b

次に、各プロジェクトのルートとvagrant upにcdする必要があります。これで、各プロジェクトからvagrant sshを実行すると、そのプロジェクトはVM環境にあります。

0
Soroush

追加したいサイトをプロキシするためのショートカットコマンドがあります。

homestead.yamlファイルを台無しにして、再び浮浪者ボックスをプロビジョニングする必要はありません...

これは、グローバルおよびプロジェクトごとのインストールの両方に適用されます

別のプロジェクトを追加するかどうかを確認してください...

Homestead.yamlで宣言された共有フォルダーに(プロジェクト全体)を追加します

共有フォルダーがC:/Users/MYACCOUNT/Codes

そのフォルダーに別のプロジェクトを追加しますlaravel new Homestead.app

それから

あなたがホームステッドタイプでsshであると仮定しますa。)nginxを使用している場合

serve Homestead.app /home/Vagrant/Code/Homestead/public

b。)hhvmを使用している場合serve-hhvm Homestead.app /home/Vagrant/Code/Homestead/publicドメインの名前とパスをプロジェクトのパブリックフォルダーに変更するだけです

次に、管理者としてetc/hostsファイルを編集します

Homestead.yamlで定義したIPアドレス

通常、デフォルトは192.168.10.10です

127.0.0.1の代わりに使用します

どうして? 127.0.0.1を使用する場合、URLはHomestead.app:8000のようになるためです。

Homestead.yamlでIPアドレスを使用する場合

192.168.10.10 Homestead.app

ポート8000​​なしでサイトにアクセスし、Homestead.appを使用するだけです。

このソリューションはプロビジョニングよりもはるかに優れています...そしてより高速です...

これが私がすることです

0
Midas Code