問題タブ [laravel-envoy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
laravel - Laravel envoy を使用してデプロイするときに app.js が環境変数を取得できない
ダウンタイムがゼロになるように、envoy を使用してアプリケーションをデプロイしたいと考えています。いくつかの調査の結果、このスクリプトはまさに私が望んでいたとおりに機能することがわかりました。 https://github.com/papertank/envoy-deploy
基本的に、バックエンドではすべてがうまく機能しました。プロジェクトのクローンを作成し、すべてのコマンドを実行して、最新のプロジェクトを指すことができます。その後、vue コンポーネント用に npm の新しいタスクを追加しました。これがタスクです
これを行うには、laravel mix 関連の依存関係を devDependencies から依存関係に移動します。
タスクを実行すると、最初の問題が発生します。webpack.mix.js が変数を読み取れないようです。process.env.APP_URL を呼び出すと、未定義が返されました。これが構文です。
これは私の.envのようです
laravel mixの問題を確認した後、使用することをお勧めします
環境変数をロードします。
だから私は webpack.mix.js を次のように変更します
これで、process.env を介してすべての変数を取得できるようになりました。タスクが完了しました。その後、プロジェクトに移動すると、2 番目の問題が発生しました。
app.js が process.env を取得できず、console.log(process.env) のときに {} が返されました
.env がそこにあることを確認できます。それ以外の場合は、npm run prod の実行時にエラーがスローされます app.js で env 変数を取得できない理由がわかりません
これは、運用環境でアセットをコンパイルするためのベスト プラクティスではないかもしれません。しかし、私の vue コンポーネントは .env ファイルから同じ環境変数を共有していたので、これは私の場合に必要です。
これを解決する方法を知っている人はいますか?
php - Apache サーバーが再起動するまでシンボリックリンクが更新されない
基本的に、私はこのリンクの手順に従いました: https://docs.gitlab.com/ee/ci/examples/laravel_with_gitlab_and_envoy/
私はNGINXの代わりにApacheサーバーを使用していますが、それが唯一の違いです。
したがって、以下で実行される 1 つの envoy ファイルがあります。
- リポジトリのクローン
- 作曲家を実行する
- シンボリックリンクを更新する
envoy ファイルのコードはhttps://docs.gitlab.com/ee/ci/examples/laravel_with_gitlab_and_envoy/#full-scriptと同じですが、git url の変更とルート ディレクトリの変更が異なります。
セットアップは次のようになります:
ここcurrent
に指すシンボリックリンクがあります。 /var/www/html/deployer-home/releases/1
新しいリリースのシンボリックリンクをアップロードすると、に変更されます/var/www/html/deployer-home/releases/2
サーバーでそうする場合ls -l
、シンボリックリンクが表示されます/var/www/html/deployer-home/releases/2
が、example.comはまだ指されています/var/www/html/deployer-home/releases/1
私はしようとしましservice apache2 restart
たが、それでもドメインポインティングが更新されていません。サーバーで実行する場合にのみ更新さreboot
れます。
では、この問題を解決するにはどうすればよいでしょうか。リリースごとにサーバーを再起動したくありません。