#ruby-on-rails #digital-ocean
#ruby-on-rails #digital-ocean
Вопрос:
Возможно ли запустить более одного приложения Rails в одном и том же дроплете DigitalOcean?
Ответ №1:
Я рекомендую изучить возможность использования Dokku с Docker, который позволяет размещать приложения рядом друг с другом. В Digital Ocean доступна установка в один клик. Я только начал использовать его и развертывать таким образом, и пока мне это действительно нравится.
Вот несколько ссылок:
Ответ №2:
Да, вы можете это сделать, вам просто нужно настроить свой сервер приложений, я сделал это с помощью nginx, работает очень тихо. Это руководство довольно здорово начать с установщика сервера и приложения rails с использованием серверного приложения Nginx:
После этого откройте файл конфигурации для 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. Как или где вы сообщаете своему приложению, какой домен выполняет запрос?