{"id":2068,"date":"2019-02-24T17:40:22","date_gmt":"2019-02-24T08:40:22","guid":{"rendered":"http:\/\/dona.dip.jp\/?p=2068"},"modified":"2020-04-22T00:05:23","modified_gmt":"2020-04-21T15:05:23","slug":"%e3%81%a9%e3%81%a9%e3%82%93%e3%81%a8%e3%81%b5","status":"publish","type":"post","link":"https:\/\/dona-co.art\/?p=2068","title":{"rendered":"\u3069\u3069\u3093\u3068\u3075\u306e\u74b0\u5883\u69cb\u7bc9(Ubuntu16.04LTS \/ Nginx \/ Spawn-fcgi\uff09"},"content":{"rendered":"<p>\u3069\u3069\u3093\u3068\u3075\u306e\u8a2d\u7f6e\u3067\u4e00\u756a\u8a70\u307e\u308a\u305d\u3046\u306a\u6240\u3092\u4fdd\u5b58\u3057\u3066\u304a\u304d\u307e\u3059\u3002<br \/>\n\u4ee5\u4e0b\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u307f\u3002<br \/>\nUbuntu16.04LTS(ZorinOS12.4)<br \/>\nPHP7.3<br \/>\nNginx1.15.8<\/p>\n<p><strong>\uff03\u5404\u7a2e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/strong><br \/>\n\u3069\u3069\u3093\u3068\u3075\u306fRuby\u3067\u66f8\u304b\u308c\u305fCGI\u306a\u306e\u3067\u3001Nginx\u3067Ruby\/CGI\u304c\u52d5\u4f5c\u3059\u308b\u74b0\u5883\u3092\u4f5c\u308a\u307e\u3059\u3002<\/p>\n<pre><code>sudo apt install spawn-fcgi\nsudo apt install ruby\nsudo apt install ruby-fcgi <span style=\"color: #ff0000;\">#\u5fd8\u308c\u305a\u306b<\/span><\/code><\/pre>\n<p><strong>#\u4f7f\u7528\u30dd\u30fc\u30c8\u306e\u958b\u653e<\/strong><br \/>\nTCP\/IP\u3067\u63a5\u7d9a\u3059\u308b\u5834\u5408\u306f\u3001\u4f7f\u7528\u30dd\u30fc\u30c8\u3092\u958b\u653e\u3059\u308b\u3002<\/p>\n<pre><code>sudo ufw allow 9009<\/code><\/pre>\n<p><strong>#Nginx \u8a2d\u5b9a\u8ffd\u52a0<\/strong><br \/>\n\/etc\/nginx\/default.conf<\/p>\n<pre style=\"margin: 0; padding: 0;\"><code>location ~ \\.rb$ {\nfastcgi_pass    127.0.0.1:9009; #TCP\u306e\u5834\u5408\u3001\u4f7f\u7528\u30dd\u30fc\u30c8\u3092\u5165\u529b\n#fastcgi_pass    unix:\/var\/run\/ddntf.sock; #Unix socket\u306e\u5834\u5408\nfastcgi_index   index.html;\ninclude        \/etc\/nginx\/fastcgi_params;\n}<\/code><\/pre>\n<p><strong>\uff03\u3069\u3069\u3093\u3068\u3075\u30b5\u30fc\u30d3\u30b9\u767b\u9332<\/strong><br \/>\nNginx\u304c\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u5148\u306espawn-fcgi\u30d7\u30ed\u30bb\u30b9\u3092\u8d77\u52d5\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u3092\u4f5c\u6210<br \/>\n\/etc\/systemd\/system\/ddntf.service<\/p>\n<pre style=\"margin: 0; padding: 0;\"><code>[Unit]\nDescription=ddntf\nWants=nginx.service\nAfter=nginx.service\n\n[Service]\n#TCP\nExecStart=\/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\n\n#Unix Socket\n#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\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n<p><strong>\uff03\u30b5\u30fc\u30d3\u30b9\u306e\u81ea\u52d5\u8d77\u52d5\u5316<\/strong><\/p>\n<pre><code>sudo systemctl enable ddntf.service\nsudo systemctl start ddntf.service<\/code><\/pre>\n<p><strong>\uff03DodontoF.rb\u4f5c\u6210<\/strong><br \/>\nDodontoFSarver.rb\u3068\u540c\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u4f5c\u6210\u3002<br \/>\nShebang(#!\/usr\/bin\/ruby\u7b49)\u306f\u74b0\u5883\u306b\u3088\u308b\u306e\u3067 which ruby \u3067\u78ba\u8a8d\u3057\u3066\u5909\u66f4\u3002<br \/>\n\/www\/DodontoF\/DodontoF.rb<\/p>\n<pre style=\"margin: 0; padding: 0;\"><code>#!\/usr\/bin\/ruby -Ku\n#--*-coding:utf-8-*--\nEncoding.default_external='utf-8' if defined?(Encoding) &amp;&amp; Encoding.respond_to?('default_external')\n\nrequire 'rubygems'\nrequire 'cgi'\nrequire 'fcgi'\nrequire 'logger'\n\n$logger = Logger.new('.\/fcgi.log')\n$logger.level = Logger::WARN\n\n$logger.info(\" load\")\nload 'DodontoFServer.rb'\n\n$logger.info(\"### FCGI.each start\")\nFCGI.each do |fcgi|\n$logger.info(\"do\")\nbegin\n$logger.info(\" begin\")\n$stdout = fcgi.out\n$stdin = fcgi.in\nENV.replace(fcgi.env)\n\n$logger.info(\" execute\")\nexecuteDodontoServerCgi()\n\nfcgi.finish\n$logger.info(\" finish\")\nrescue Exception =&gt; e\n$logger.fatal(e)\nend\n$logger.info(\"end\")\nend\n$logger.info(\"### FCGI.each end\")<\/code><\/pre>\n<p><strong>#\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u5909\u66f4<\/strong><\/p>\n<pre><code>sudo chmod +x DodontoF.rb\nsudo chown nginx:nginx DodontoF.rb<\/code><\/pre>\n<p><strong>#\u52d5\u4f5c\u78ba\u8a8d<\/strong><\/p>\n<pre><code>sudo systemctl ddntf<\/code><\/pre>\n<p>\u554f\u984c\u306a\u3051\u308c\u3070\u3001\u3069\u3069\u3093\u3068\u3075\u3092\u30de\u30cb\u30e5\u30a2\u30eb\u306b\u6cbf\u3063\u3066\u8a2d\u7f6e\u3057\u307e\u3057\u3087\u3046\u3002<br \/>\n\u30d6\u30e9\u30a6\u30b6\u3067\u5b9f\u969b\u898b\u3066\u6b63\u5e38\u306b\u8868\u793a\u3055\u308c\u306a\u3044\u5834\u5408\u306f\u3001\u307e\u305a\u5404\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u3092\u78ba\u8a8d\u3002<br \/>\nNginx\u306e\u5834\u5408\u306f\u30dd\u30fc\u30c8\u3084fastcgi_params\u7b49\u306e\u8a2d\u5b9a\u3092\u898b\u76f4\u3057\u307e\u3059\u3002<br \/>\nNginx\u3084\u30b7\u30b9\u30c6\u30e0\u306e\u30ed\u30b0\u304c\u53c2\u8003\u306b\u306a\u308b\u306e\u3067\u3001\u5fc5\u305a\u898b\u307e\u3057\u3087\u3046\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3069\u3069\u3093\u3068\u3075\u306e\u8a2d\u7f6e\u3067\u4e00\u756a\u8a70\u307e\u308a\u305d\u3046\u306a\u6240\u3092\u4fdd\u5b58\u3057\u3066\u304a\u304d\u307e\u3059\u3002 \u4ee5\u4e0b\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u307f\u3002 Ubuntu16.04LTS(ZorinOS12.4) PHP7.3 Nginx1.15.8 \uff03\u5404\u7a2e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u3069\u3069\u3093\u3068\u3075\u306fRuby\u3067 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,5],"tags":[],"class_list":["post-2068","post","type-post","status-publish","format-standard","hentry","category-7","category-memo"],"_links":{"self":[{"href":"https:\/\/dona-co.art\/index.php?rest_route=\/wp\/v2\/posts\/2068","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dona-co.art\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dona-co.art\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dona-co.art\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dona-co.art\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2068"}],"version-history":[{"count":70,"href":"https:\/\/dona-co.art\/index.php?rest_route=\/wp\/v2\/posts\/2068\/revisions"}],"predecessor-version":[{"id":3155,"href":"https:\/\/dona-co.art\/index.php?rest_route=\/wp\/v2\/posts\/2068\/revisions\/3155"}],"wp:attachment":[{"href":"https:\/\/dona-co.art\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dona-co.art\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dona-co.art\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}