- 投稿日:
adiaryをnginxの上で動作させつつ開発する方法をメモしておく。
前提条件
動作URLとしてはhttps://hoge.example.com/adiary
のようなサブドメイン付きのサブディレクトリとする。
adiaryはネイティブでfcgiをサポートしているらしいが、そこは無視して一般的な環境で起動するのがゴール。
SSLで動かす設定を書いているため、nginxでローカル開発環境向けのhttps環境を作るも参考にすること。
特別な設定は不要で、サブドメインモードにしなくとも動く。
確認環境
Env | Ver |
---|---|
OS | Ubuntu 22.04.3 LTS |
nginx | 1.24.0 |
fcgiwrap | 1.1.0-12 amd64 |
adiary | 3.50n |
手順
nginxはインストールされており、既に稼働している状態として話を進める
# adiaryを格納するディレクトリを作成する
sudo mkdir -p /usr/share/nginx/html/sites
# 既にどっかに展開済みのadiaryをディレクトリに突っ込む
sudo cp -R adiary /usr/share/nginx/html/sites
cd /usr/share/nginx/html/sites
# 所有権とパーミッションの調整
sudo chwon -R $USER:$USER adiary/
cd adiary/
sudo chmod -R 777 __cache/
sudo chmod -R 777 data/
sudo chmod -R 777 pub/
# Image::Magickを入れる
sudo apt install -y libimage-magick-perl
# nginxでCGIを動かすために、fcgiwrapをインストールする
sudo apt install fcgiwrap
# /etc/nginx/conf.dに設定ファイルを作成
cat <<'EOF' | sudo tee -a /etc/nginx/conf.d/hoge.example.com.conf
server {
listen 443 ssl;
server_name hoge.example.com;
ssl_certificate ssl/hoge.example.com.pem;
ssl_certificate_key ssl/hoge.example.com-key.pem;
access_log /var/log/nginx/hoge.example.com.access.log;
error_log /var/log/nginx/hoge.example.com.error.log;
# マルチテナント用にこう書いている
root /usr/share/nginx/html/sites;
# /usr/share/nginx/html/sites/adiaryにadiary一式が入っている想定
location / {
index index.html;
}
location /adiary {
index adiary.cgi;
}
# fastcgi用
location ~ \.cgi$ {
gzip off;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
EOF
# nginxの設定を再読み込みする
sudo service nginx restart
トラブルシューティング
403エラーで起動せず、エラーログにパスがないと出る
以下のコマンドを叩き、パスが整合するまで設定を調整する
sudo strace -f -e trace=file -p $(pidof fcgiwrap)
- 投稿日:
公式のドキュメントには書かれていない気がするがDockerだけあればセットアップ可能。WSL2でのセットアップが面倒なVargantは不要
本記事ではWSL2内のUbuntuの中でDockerとDocker Composeを使った構築法について記述する。Windows向けのDocker Desktopは使用しない
前提
- WSL2のUbuntuにVSCodeで接続して作業
- 起動してログイン、トゥート、設定と言った最低限の画面操作が可能な程度まで
確認環境
Env | ver |
---|---|
Mastodon | v3.5.3 |
Docker | 20.10.21, build baeda1f |
Docker Compose | v2.12.2 |
Ubuntu | 20.04.5 LTS |
WSL2 | 1.0.3.0 |
DevContainer | v0.266.1 |
VSCode | 1.73.0 |
手順
git clone https://github.com/mastodon/mastodon.git
- 最新版などバージョン指定が必要な場合は追加で
tag
をチェックアウトする
- 最新版などバージョン指定が必要な場合は追加で
- VSCodeでClone先を開く
- Reopen Containerする
- セットアップが走るので暫く待つ
foreman start
を流す- http://localhost:3000/ へアクセス
操作方法
ユーザーを作ったりしたい場合、Using the admin CLIが参考になる
一例としてユーザー作成は次の書式で行ける
./bin/tootctl accounts create foo --emaill foo@example.com --confirmed
トラブルシュート
DB接続エラーが出る
ActiveRecord::ConnectionNotEstablished at /
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql//.s.PGSQL.5432"?
上記のエラーが出る場合、ビルドしたDockerイメージが壊れてるので以下のコマンドで全て消して作り直すとうまく行く
docker rm -f `docker ps -a -q`
docker rmi `docker images -q`
docker system prune
他のMastodonインスタンスが動かない
複数のMastodonインスタンスのDocker環境を同居させると多分コンフリクトする