Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

動作検証用アプリサーバがあると便利? #110

Closed
takahashim opened this issue Oct 31, 2020 · 21 comments · Fixed by #125
Closed

動作検証用アプリサーバがあると便利? #110

takahashim opened this issue Oct 31, 2020 · 21 comments · Fixed by #125
Labels
enhancement New feature or request

Comments

@takahashim
Copy link
Collaborator

改善詳細 / Details of Improvement

加古川市さんのサーバが本運用に入ってしまったので、検証用に好きなデータを突っ込めて、管理画面も確認できるサーバがあった方がよいかも、と思いました。
現状では、挙動を試せるのは手元で開発サーバを動かせるひとだけ、ということになってしまっているため、ちょっとハードルが高そうです。

#56 のCDとも関連しそうです。masterブランチの最新が反映されると良いでしょうか。

期待する見せ方・挙動 / Expected behavior

検証用のデータが登録されていて、普通に動いている状態です。

管理権限のアカウントの管理は要検討かもしれません(そうでもない?)。

対象インスタンス / Instances

  • 全て
@takahashim takahashim added the enhancement New feature or request label Oct 31, 2020
@halsk
Copy link
Member

halsk commented Oct 31, 2020

そうですね。
日本版のデモサーバーを用意したいですね。
本家のはこちら
https://demo.decidim.org/

  • 1日に1回最新のmasterをdeploy
  • db:seed を実施して、db も毎回クリアする

でいけますかね。EC2 に環境作って capistrano で更新?
メールの設定とかは別途必要か。

あと、現状 Faker を使って生成されるランダムデータが不穏すぎるので、変えたいところ。

@takahashim
Copy link
Collaborator Author

https://github.com/AjuntamentDeTerrassa/decidim-terrassa はHeroku Deployボタンがついているので、似たような作りをすればherokuにpushするのがお手軽かもしれません。
また #56 でコンテナ化できればそれを使うのも良さそうです。

@takahashim
Copy link
Collaborator Author

takahashim commented Oct 31, 2020

Fakerは2.x系にアップデートできればもう少し穏当な文言に変わってるみたいなのですが、引数のbreaking changeがあるのでちょっと適用が難しそう。
文言だけ差し替えられないか見てみます。

…と思ったけど、やっぱり最新版もいまいちですね:innocent: 行政っぽいテキストコーパスが求められる…。

@komtaki
Copy link
Contributor

komtaki commented Oct 31, 2020

ちょうど、デプロイまわりを見るために、Elastic beanstalkにコンテナ動作環境が欲しかったところです。

#68

軽く触った感じ、問題なさそうな気がするのですが。decidim本家のrspecを上手く使えば、ある程度は細かく検証できると思うのですが。

単純に下記だと、上手く動かなくて試行錯誤してます。:thinking:

rails decidim:generate_external_test_app
cp -r /usr/local/bundle/bundler/gems/decidim-912bb8b483fd/decidim-*/app ./spec/decidim_dummy_app/
cp -r /usr/local/bundle/bundler/gems/decidim-912bb8b483fd/decidim-*/spec ./

@komtaki
Copy link
Contributor

komtaki commented Nov 1, 2020

どのくらいちゃんと動くかわからないですが、上記コンテナでGithubActionsでビルドして、Elastic beanstalkデプロイするテスト環境作成しちゃってもいいですか?

@halsk
Copy link
Member

halsk commented Nov 1, 2020

@komtaki はい。お願いします!

@komtaki
Copy link
Contributor

komtaki commented Nov 1, 2020

@halsk

こんな感じで、ECRのレポジトリにGithub Acitonsからpush したいので、Github settingsに下記のSecretを登録してほしいです。
https://dev.classmethod.jp/articles/github-action-ecr-push/

私の権限だとみれなそうなので。お手数ですが、よろしくお願いします。:bow:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_ECR_REPO_NAME -> 下記ページのURI

https://ap-northeast-1.console.aws.amazon.com/ecr/repositories?region=ap-northeast-1

@halsk
Copy link
Member

halsk commented Nov 1, 2020

設定しました!

image

@komtaki
Copy link
Contributor

komtaki commented Nov 1, 2020

ありがとうございます。 👏

@komtaki
Copy link
Contributor

komtaki commented Nov 1, 2020

すみません。上記、私の書き方が間違ってました。設定が見えないので、念の為訂正させてください。

AWS_ECR_REPO_NAME -> 普通にレポジトリ名でした。decidim-cfjですかね。

それと、デプロイで2点確認させてください。

  • 定時実行なら、staging デプロイは、何時がいいでしょう。毎日18時とか?
  • デプロイ完了通知はslackでもいいですか?

Githubでは、ecrにpushするところまでやります。後ろで、ecrのpushに反応して、codepiplineが自動でデプロイするイメージです。その結果をボットがslackに流します。

これが一番楽そうです。

@halsk
Copy link
Member

halsk commented Nov 1, 2020

AWS_ECR_REPO_NAME を修正したつもりが別のSecretを修正した?
18時に action が kick されましたが、失敗してしまいました。
もう一度流してみます。

@komtaki
Copy link
Contributor

komtaki commented Nov 1, 2020

The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

ありがとうございます。
AWS のSECRET KEYが間違っているかもと言われてますね。:thinking:

ちなみにまだ、デプロイはされないです。現在、構築中です。

@halsk
Copy link
Member

halsk commented Nov 1, 2020

お、なるほど。了解しました。ちゃんと設定しなおしたので、大丈夫なのではないかと思います。よろしくおねがいします。

@komtaki
Copy link
Contributor

komtaki commented Nov 2, 2020

↑Codepipline使わなくても、こんな感じでデプロイ出来ました。

CD確認用に適当に作ったstagingサーバーを、準本番用にちゃんと作り直そうとしてます。

動作ランタイムが違うと環境が複製できないみたいなので、ちょっと確認させてください。

root直下にある、このファイル群 ./ebextensionsは最新のものであってますか?
設定だと、インスタンスタイプがt2.microになっているのですが、production環境はt2.smallぽいので、よくわからず。 🤔

https://github.com/codeforjapan/decidim-cfj/blob/master/.ebextensions/00_options.config#L5

そこまでElastic Beanstalkは詳しくないので、勘違いしていたらすみません。

大味、本番と変更する箇所は、下記でしょうか。

  • インスタンスのt2.microへのダウン
  • 起動時のmigrationの実行
  • オートスケールの無効化

@halsk
Copy link
Member

halsk commented Nov 2, 2020

./ebextensions は最新ではないですね。。

これでdeployしたあとに、Elastic Beanstalk 上で設定変更していることがいくつかあります。
例えば・・・

4. Secret Key Base を設定

eb setenv SECRET_KEY_BASE=$(bin/rails secret)

5. Postgres データベースを作成する

EB コンソールの該当環境から、Configuration を選択、Database を選択し、Edit をする

必要な設定を行い、DBを立ち上げる

その後eb deployを再度実行

6. Healthcheck の条件を変更

/ が301を返すので、一旦 301 でもOKにする

Elastic Beanstalk の Configuration 画面で、Health Check を選び、Process の条件を 80 から 301 にする

7. CNAME 設定とSSL設定

Elastic Beanstalk のインスタンスをAレコードとして割り当てる

ロードバランサの設定をする(手順6.2 Configure SSL

8. 最初のユーザを作る

6.3 Create the first admin user
に従う(root で)

9. SES の設定をする

6.4 Setup email

10. REDIS の設定をする

6.5 Configure the job system with Sidekiq and Redis

11. S3 の設定をする

6.6 File storage

12 サイトを作る

/system から、step 8 で作ったユーザでログインして、新規サイトを作る

サイトを作ったら Health Check の内容を元に戻す

12. その後の設定

DB と EC2 の設定を micro から small にした。

@komtaki
Copy link
Contributor

komtaki commented Nov 2, 2020

ありがとうございます。:bow:

手順があるんですね。確認します。

@halsk
Copy link
Member

halsk commented Nov 2, 2020

手順8の、ユーザーを作るというのは db:seed をやるなら必要無いです。
その他の設定は、一度実施してしまえば、eb deploy などを使ってアップデートする分には必要無い作業です。

@komtaki
Copy link
Contributor

komtaki commented Nov 3, 2020

忘れてましたがALBも入ってるので、初期の設定とかなり変わってますね。
Cloud Formerで設定をまるごと引き抜いて、調整してます。ついでに、出来る限りコードに落とします。:+1:

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/cfn-using-cloudformer.html

@komtaki komtaki linked a pull request Nov 3, 2020 that will close this issue
6 tasks
@halsk halsk closed this as completed in #125 Nov 3, 2020
@komtaki komtaki reopened this Nov 3, 2020
@komtaki
Copy link
Contributor

komtaki commented Nov 4, 2020

ドメインは適当にstaging.diycities.jpで作成しました。変えて下さい。

本番モードだと、Fakerが入ってなかったので、db:seedが実行できませんでした。そうしたんでした。 😢
管理ユーザーのID, パスワード管理とかどうしましょう?とりあえず、AWSのパラメータストアに投げ込んでおきましたが。

https://staging.diycities.jp/system/admins/sign_in

基本、リソースをスケールダウンしてます。あとで設定を上げます。

それと、sesの設定はしてないです。検証環境ですが、事故ったらいやかもと。mailcatherとかかましたいです。

@halsk
Copy link
Member

halsk commented Nov 7, 2020

@komtaki ありがとうございます!!
staging.diycities.jp で、良いと思います。
mailcather 入れたいですね。

@komtaki
Copy link
Contributor

komtaki commented May 27, 2021

sesの設定しました。現状mailcatcher上手く入れられなさそうだったので。:bow:

メールが飛ばないとキューの検証がしづらくて。 💦

問題なければ、本件クローズしちゃいます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants