質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

ドメイン

ドメインとは本来、領域や範囲の意味を持ち、インターネット上では特定の部分領域を指します。ネットワークやコンピュータの識別に利用され、所得することでホームページを公開したり、メールアドレスを作成できます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Sinatra

Sinatraは、Rubyで作られた オープンソースのWebアプリケーションフレームワークです。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

1回答

1510閲覧

Sinatraと静的ページを併用する際に必要なNginxの設定

decatail

総合スコア41

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

ドメイン

ドメインとは本来、領域や範囲の意味を持ち、インターネット上では特定の部分領域を指します。ネットワークやコンピュータの識別に利用され、所得することでホームページを公開したり、メールアドレスを作成できます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Sinatra

Sinatraは、Rubyで作られた オープンソースのWebアプリケーションフレームワークです。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

0クリップ

投稿2019/08/01 06:29

前提・実現したいこと

激烈初心者です。ConohaVPSというもので遊んでいます。動的ページフレームワークSinatraと静的ページフレームワークMiddlemanを併用したいと思っています。WebサーバーにはNginx、アプリケーションサーバーにはUnicornというものを使っています。現時点ではブラウザ上で IPアドレス:8080と打つとSinatraで生成されたサイトが、IPアドレス:4567と打つとMiddlemanで生成されたサイトが出てきます。私の勘違いでなければSinatraはUnicorn経由で動作しているはずです。

今後検索結果などはSinatraで、トップページやフィードはMiddlemanで出力するみたいな運用をしたいと思っています。例えば独自ドメインを導入した際には「hogehoge.jp」や「hogehoge.jp/feed.xml」、「hogehoge.jp/about.html」とするとMiddlemanで生成してルートディレクトリ(/var/www/html/)に転送されたhtmlファイルやxmlファイルを表示し、「hogehoge.jp/search/単語」だとか「hogehoge.jp/date/2019-05-01」とするとSinatraで生成されたサイトを表示させたいとします。

このような場合にはどのような知識が必要で、何のどういう設定が必要なのでしょうか。また、ドメインなる物を買った事が無いのでこのような設定をする際に必要な機能等があれば。長文で申し訳ありませんが教えていただければ幸甚に存じます。

該当のソースコード

$ sudo emacs /etc/nginx/nginx.conf

worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml applica\ tion/xml+rss text/javascript; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; upstream unicorn { server unix:/var/www/html/tmp/sockets/unicorn.sock fail_timeout=0; } server { server_name IP.ADD.RE.SS; # Sinatraのpublicディレクトリの絶対パスを指定します root /var/www/html; # リクエストが通るポート番号を指定します listen 8080; # クライアントからのリクエストの最大値を設定します client_max_body_size 4G; # サーバーはこの時間を過ぎたら接続を閉じます keepalive_timeout 5; location / { try_files $uri @app; } location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; # pass to the upstream unicorn server mentioned above proxy_pass http://unicorn; } } }

/var/www/html/config.ru

require './index.rb' run Sinatra::Application

/var/www/html/unicorn.rb

# coding: utf-8 @dir = "/var/www/html/" worker_processes 1 # CPUのコア数に揃える working_directory @dir preload_app true timeout 30 listen "#{@dir}tmp/sockets/unicorn.sock", :backlog => 64 pid "#{@dir}tmp/pids/unicorn.pid" #pidを保存するファイル # unicornは標準出力には何も吐かないのでログ出力を忘れずに stderr_path "#{@dir}log/unicorn.stderr.log" stdout_path "#{@dir}log/unicorn.stdout.log"

試したこと

なし

補足情報(FW/ツールのバージョンなど)

$ nginx -v
nginx version: nginx/1.14.0 (Ubuntu)
$ unicorn -v
unicorn v5.5.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

二年越しの自己解決。

https://kinopyo.com/ja/blog/how-to-render-static-html-in-sinatra
これを参考、というか丸パクリ。

get '/' do File.read(File.join('public', 'index.html')) end

http://sinatrarb.com/intro-ja.html
公式ドキュメントによるとPublicという名前のファイルにぶち込むといいらしい。

投稿2021/11/29 09:00

decatail

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問