どどんとふの設置で一番詰まりそうな所を保存しておきます。
以下、インストール済み。
Ubuntu16.04LTS(ZorinOS12.4)
PHP7.3
Nginx1.15.8
#各種インストール
どどんとふはRubyで書かれたCGIなので、NginxでRuby/CGIが動作する環境を作ります。
sudo apt install spawn-fcgi
sudo apt install ruby
sudo apt install ruby-fcgi #忘れずに
#使用ポートの開放
TCP/IPで接続する場合は、使用ポートを開放する。
sudo ufw allow 9009
#Nginx 設定追加
/etc/nginx/default.conf
location ~ \.rb$ {
fastcgi_pass 127.0.0.1:9009; #TCPの場合、使用ポートを入力
#fastcgi_pass unix:/var/run/ddntf.sock; #Unix socketの場合
fastcgi_index index.html;
include /etc/nginx/fastcgi_params;
}
#どどんとふサービス登録
Nginxがリダイレクト先のspawn-fcgiプロセスを起動するサービスを作成
/etc/systemd/system/ddntf.service
[Unit]
Description=ddntf
Wants=nginx.service
After=nginx.service
[Service]
#TCP
ExecStart=/usr/bin/spawn-fcgi -d /www/DodontoF -f /www/DodontoF/DodontoF.rb -u nginx -g nginx -a 127.0.0.1 -p 9009 -F 8 -P /home/www/ddntf/ddntf.pid
#Unix Socket
#ExecStart=/usr/bin/spawn-fcgi -d /www/DodontoF -f /www/DodontoF/DodontoF.rb -u nginx -g nginx -a 127.0.0.1 -s /var/run/ddntf.sock -F 8 -P /home/www/ddntf/ddntf.pid
[Install]
WantedBy=multi-user.target
#サービスの自動起動化
sudo systemctl enable ddntf.service
sudo systemctl start ddntf.service
#DodontoF.rb作成
DodontoFSarver.rbと同ディレクトリに作成。
Shebang(#!/usr/bin/ruby等)は環境によるので which ruby で確認して変更。
/www/DodontoF/DodontoF.rb
#!/usr/bin/ruby -Ku
#--*-coding:utf-8-*--
Encoding.default_external='utf-8' if defined?(Encoding) && Encoding.respond_to?('default_external')
require 'rubygems'
require 'cgi'
require 'fcgi'
require 'logger'
$logger = Logger.new('./fcgi.log')
$logger.level = Logger::WARN
$logger.info(" load")
load 'DodontoFServer.rb'
$logger.info("### FCGI.each start")
FCGI.each do |fcgi|
$logger.info("do")
begin
$logger.info(" begin")
$stdout = fcgi.out
$stdin = fcgi.in
ENV.replace(fcgi.env)
$logger.info(" execute")
executeDodontoServerCgi()
fcgi.finish
$logger.info(" finish")
rescue Exception => e
$logger.fatal(e)
end
$logger.info("end")
end
$logger.info("### FCGI.each end")
#パーミッション変更
sudo chmod +x DodontoF.rb
sudo chown nginx:nginx DodontoF.rb
#動作確認
sudo systemctl ddntf
問題なければ、どどんとふをマニュアルに沿って設置しましょう。
ブラウザで実際見て正常に表示されない場合は、まず各ファイルのパーミッションを確認。
Nginxの場合はポートやfastcgi_params等の設定を見直します。
Nginxやシステムのログが参考になるので、必ず見ましょう。