Digitalocean — более одного приложения, запущенного в одном дроплете?

#ruby-on-rails #digital-ocean

#ruby-on-rails #digital-ocean

Вопрос:

Возможно ли запустить более одного приложения Rails в одном и том же дроплете DigitalOcean?

Ответ №1:

Я рекомендую изучить возможность использования Dokku с Docker, который позволяет размещать приложения рядом друг с другом. В Digital Ocean доступна установка в один клик. Я только начал использовать его и развертывать таким образом, и пока мне это действительно нравится.

Вот несколько ссылок:

  1. http://reallybusywizards.com/dokku-digitalocean-your-very-own-cheap-heroku-clone/
  2. https://www.andrewmunsell.com/blog/dokku-tutorial-digital-ocean
  3. https://www.digitalocean.com/community/tutorials/how-to-use-the-dokku-one-click-digitalocean-image-to-run-a-node-js-app

Ответ №2:

Да, вы можете это сделать, вам просто нужно настроить свой сервер приложений, я сделал это с помощью nginx, работает очень тихо. Это руководство довольно здорово начать с установщика сервера и приложения rails с использованием серверного приложения Nginx:

Учебное пособие DigitalOcean

После этого откройте файл конфигурации для nginx:

   sudo nano /opt/nginx/conf/nginx.conf
 

Теперь просто добавьте еще один блок для настройки нового приложения на другом порту, порт по умолчанию всегда равен 80. Введите обратите внимание, что порт 8080 в этом блоке.

       server { 
               listen 8080; 
               server_name example.com; 
               passenger_enabled on; 
               root /var/www/my_new_rails_app/public; 
             }
 

Надеюсь, это поможет!

Комментарии:

1. Могу я попросить вас дать мне несколько советов по его настройке?

2. Спасибо за подробности. Я следовал руководству, но мое приложение не работает. Если я попытаюсь получить доступ к своему приложению через IP-адрес сервера, я получаю сообщение об ошибке «Не найдено». Вот как выглядит мой файл nginx.conf: pastebin.com/qhtQdYvQ . Мое приложение находится в /var/www/test (еще не окончательное приложение rails, только index.html для теста).

3. @gabriel Ваш корень должен быть указан на общую папку. Пример: root / var / www / test / public

Ответ №3:

ДА

Я делаю это в настоящее время. Если вы используете Apache , то в вашем httpd.conf файле просто сделайте две записи, указывающие на общие папки двух разных приложений. Не забудьте указать разные адреса для каждого.

Я использую phusion-passenger для запуска rails apache , и моя настройка выглядит так;

 <VirtualHost ####################.com:80>
    ServerName ####################.com
    DocumentRoot /var/www/html/first_app/current/public/
    <Directory /var/www/html/first_app/current/public>
    Allow from all
    Options -MultiViews
    </Directory>
    PassengerEnabled on
    #RewriteEngine On
    #RewriteCond %{HTTPS} on
    #RewriteRule (.*) http://www.####################.com%{REQUEST_URI}
    SetEnv GEM_HOME /usr/lib/ruby/gems/1.8
</VirtualHost>
<VirtualHost second_app.####################.com:80>
        ServerName second_app.####################.com
        DocumentRoot /var/www/html/second_app/current/public/
        <Directory /var/www/html/second_app/current/public>
        Allow from all
        Options -MultiViews
        </Directory>
        PassengerEnabled on
        #RewriteEngine On
        #RewriteCond %{HTTPS} off
        #RewriteRule (.*) https://www.####################.com%{REQUEST_URI}
        SetEnv GEM_HOME /usr/lib/ruby/gems/1.8
</VirtualHost>
 

Комментарии:

1. В настоящее время я использую unicorn, но могу перейти на Apache, если это лучше. Не могли бы вы дать мне еще несколько инструкций или краткое руководство по настройке?

Ответ №4:

У меня была похожая проблема, но ответы @Leandro Figueredo не сработали для меня. Ниже я представляю, что я делаю для достижения этой цели.

На самом деле у меня есть два веб-сайта на одной капле. Я настроил свой сервер с помощью этого руководства: GoRails Как настроить сервер с Ubuntu 14.04 и nginx

После этого настройте файл /etc/nginx/sites-включен / по умолчанию

 server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;

    server_name example.com www.example.com;
    passenger_enabled on;
    rails_env    production;
    root         /home/user/appname/current/public;

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

server {
       listen 80;
       listen [::]:80;
       server_name second_site.com www.second_site.com;
       passenger_enabled on;
       root /home/user/second_app/current/public;
}
 

Важно:
удалить default_server; из первого серверного блока

Комментарии:

1. Как или где вы сообщаете своему приложению, какой домен выполняет запрос?