145 lines
3.6 KiB
Markdown
145 lines
3.6 KiB
Markdown
+++
|
|
date = "2019-04-04"
|
|
tags = ["pleroma","heroku"]
|
|
title = "pleromaをherokuで立てる"
|
|
slug = "pleroma"
|
|
+++
|
|
|
|
|
|
pleroma on heroku.
|
|
|
|
herokuでpleromaを動かします。動いた環境を記録します。
|
|
|
|
## heroku info
|
|
|
|
```sh
|
|
remote: * Stack heroku-18
|
|
remote: * Erlang 21.2
|
|
remote: * Elixir 1.7
|
|
```
|
|
|
|
src : https://git.pleroma.social/pleroma/pleroma , `fd7dd8f9a2f052531bb17fe51d3678787bd8b4c8`
|
|
|
|
buildpack : https://github.com/syui/heroku-buildpack-elixir
|
|
|
|
こちらの[HashNuke/heroku-buildpack-elixir](https://github.com/HashNuke/heroku-buildpack-elixir)で`${build_path}`からmixを実行できないので、それを修正したもの。
|
|
|
|
```sh
|
|
$ git push heroku master
|
|
remote: -----> Fetching app dependencies with mix
|
|
remote: fatal: not a git repository (or any parent up to mount point /)
|
|
remote: Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
|
|
```
|
|
|
|
```sh
|
|
$ heroku buildpacks:set https://github.com/syui/heroku-buildpack-elixir.git -a $APP_NAME
|
|
```
|
|
|
|
> Procfile
|
|
|
|
```sh
|
|
web: mix phx.server
|
|
```
|
|
|
|
> elixir_buildpack.config
|
|
|
|
```sh
|
|
erlang_version=21.2
|
|
elixir_version=1.7
|
|
always_rebuild=false
|
|
runtime_path=/app
|
|
hook_pre_fetch_dependencies="pwd"
|
|
#hook_pre_compile="pwd"
|
|
#hook_post_compile="pwd"
|
|
```
|
|
|
|
[Pleroma Install Wiki](https://git.pleroma.social/pleroma/pleroma/wikis/Pleroma%E3%81%AE%E5%85%A5%E3%82%8C%E6%96%B9)
|
|
|
|
## example
|
|
|
|
```sh
|
|
$ git clone https://git.pleroma.social/pleroma/pleroma
|
|
$ cd !$:t
|
|
$ git checkout -b master
|
|
|
|
$ heroku create $APP_NAME
|
|
$ heroku git:remote -a $APP_NAME
|
|
$ heroku buildpacks:set https://github.com/syui/heroku-buildpack-elixir.git -a $APP_NAME
|
|
|
|
$ heroku addons:create heroku-postgresql:hobby-dev -a $APP_NAME
|
|
$ heroku config -a $APP_NAME
|
|
|
|
$ mix --version
|
|
Erlang/OTP 21 [erts-10.3.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace]
|
|
Mix 1.8.1 (compiled with Erlang/OTP 21)
|
|
|
|
$ mix deps.get
|
|
|
|
# これによって必要な値がconfig(config/generated_config.exs)に書き込まれる
|
|
$ mix pleroma.instance gen
|
|
$ mv config/{generated_config.exs,prod.secret.exs}
|
|
|
|
# heroku pgslでは、権限がないので、setup_db.psqlの内容は書き込めない
|
|
# cat config/setup_db.psql | pbcopy
|
|
# heroku pg:psql -a $APP_NAME
|
|
# 貼り付け
|
|
|
|
$ heroku pg:reset -a $APP_NAME
|
|
|
|
$ mix phx.gen.secret
|
|
# configのsecret_key_baseに入れる, herokuのSECRET_KEY_BASEを使ってもいい
|
|
$ heroku config:set SECRET_KEY_BASE="XXX" -a $APP_NAME
|
|
|
|
$ mix ecto.migrate
|
|
|
|
# heroku用に$PORTを追加
|
|
$ vim config/prod.secret.exs
|
|
config :pleroma, Pleroma.Web.Endpoint,
|
|
http: [port: {:system, "PORT"}],
|
|
url: [host: "APP_NAME.herokuapp.com", scheme: "https", port: 443],
|
|
secret_key_base: "",
|
|
signing_salt: "o+Aj/ehx"
|
|
|
|
# あと、System.get_env("DATABASE_URL")などを使ったほうが安全
|
|
|
|
$ vim Procfile
|
|
web: mix phx.server
|
|
|
|
$ vim elixir_buildpack.config
|
|
erlang_version=21.2
|
|
elixir_version=1.7
|
|
always_rebuild=false
|
|
runtime_path=/app
|
|
hook_pre_fetch_dependencies="pwd"
|
|
#hook_pre_compile="pwd"
|
|
#hook_post_compile="pwd"
|
|
|
|
$ cat .gitignore
|
|
$ cat ~/.gitignore
|
|
|
|
$ git add .
|
|
$ git commit -m "first"
|
|
$ git push heroku master
|
|
|
|
$ heroku logs -a $APP_NAME
|
|
$ heroku run bash -a $APP_NAME
|
|
$ ls -a
|
|
$ ./.platform_tools/elixir/bin/mix phx.server
|
|
|
|
# ユーザーの作成
|
|
$ heroku run "mix pleroma.user invite" -a $APP_NAME
|
|
# 権限の付与
|
|
$ heroku run "mix pleroma.user set $USER --admin" -a $APP_NAME
|
|
```
|
|
|
|
## 説明
|
|
|
|
pleromaは、elixir+phoenixで書かれた分散snsです。最新のcommitでは、buildpackがうまく動作しませんので、対応しました。
|
|
|
|
srcやbuildpackを合わせても、今後、herokuやaddonの仕様変更によって動かなくなる可能性はあります。
|
|
|
|
動いた日付 : 2019/04/01
|
|
|
|
|
|
|