検索条件
全1件
(1/1ページ)
adiaryをローカルで開発するための動かす環境構築のログ。
http://adiary.example.test/
のようなサブドメイン付きURLとする
Env | Ver |
---|---|
OS | Ubuntu 24.04.3 LTS |
nginx | 1.26.1 |
apache2 | 2.4.58 (Ubuntu) |
adiary | 3.51a |
この手順では手描きした内容をtee
に書き直しており、正しくファイルが生やせるか見てないので注意。
/etc/nginx/nginx.conf
のhttp
セクションのinclude
の手前にapacheのupstream情報を追記する
upstream apache {
server [::1]:8080;
}
nginx→apache2のリバプロ設定の作成
cat <<'EOF' | sudo tee /etc/nginx/conf.d/adiary.conf
server {
listen [::]:80;
client_max_body_size 100M;
server_name adiary.example.local;
access_log /var/log/nginx/adiary.example.access.log;
error_log /var/log/nginx/adiary.example.error.log;
location / {
proxy_pass http://apache/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
sudo service nginx restart
Apache2でadiaryをホスティングするバーチャルホスト設定の作成
cat <<'EOF' | sudo tee /etc/apache2/sites-enabled/001-adiary.conf
<VirtualHost *:8080>
# internal use only domain
ServerName adiary.example.local
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/sites/adiary
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/adiary-error.log
CustomLog ${APACHE_LOG_DIR}/adiary-access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
EOF
/etc/apache2/apache2.conf
を開き<Directory /var/www/>
のセクションを次のように書き換える
Options Indexes FollowSymLinks
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
AddHandler cgi-script .cgi
Require all granted
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
の行は標準のserve-cgi-bin.conf
からパクってきたのでOptions +ExecCGI
だけでも動く可能性があるAllowOverride All
はindex.htmlを残したまま表示させないために.htaccessを書くのに使うmod_rewriteとmod_cgiを有効化し、apache2を再起動
sudo a2enmod rewrite
sudo a2enmod cgi
sudo service apache2 restart
/var/www/html/sites/adiary
を作成し、adiaryの動作環境一式を配置
chmod 777 -R /var/www/html/sites/adiary
sudo chown -R <your-user-name>:<your-user-name> /var/www/html/sites/adiary/
/var/www/html/sites/adiary/.htaccess
にadiary用の.htaccessを書く
DirectoryIndex
RewriteEngine On
# favicon
RewriteRule ^favicon\.ico /path/to/icon.png [L]
# 正規URLは通す
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) adiary.cgi/$1 [L]
結論から書くとnginx + fcgiwrapだとtry_filesの仕様的にadiaryが行うパス解析が上手く行かずに正常に動作しないためだ。
元々ModRewrite前提のCGIとして設計されており、個人的なユースケースがCGIとしての動作であることから、Apacheで動かすことにした。
adiaryの作者がcgiラッパーを作っているため、これを使えばnginxでも動かせそうだが、adiary専用のデーモンを起動するのもなんか嫌というのも理由の一つとしてある。
何より現在このブログが動作している環境が、さくらのレンタルサーバーであり、構成的にnginx + Apacheであるため、この構成を作ることに興味があったというのもあるし、現状のローカル環境ではnginxをフロントに立たせて後ろで様々なものを動かしている都合で、フロントはnginxで捌いた方が管理がしやすいのもある。