Развертывание нескольких приложений Rails в DigitalOcean

Я использую дроплет Digital Ocean для рельсов. Мне удалось успешно развернуть первое приложение, но теперь я столкнулся с проблемами при попытке развернуть второе. Я использую единорога в качестве сервера приложений и nginx в качестве веб-сервера. ОС - Ubuntu 14.04.

Я прочитал множество тем на сайтах stackexchange, также в блогах и т. Д., Но ни один из них не подходит для моей позиции. Проблема, я думаю, в структурах приложений и системных папок / файлов / конфигурации. И я очень осторожно меняю что-либо в файлах конфигурации системы.

В большинстве примеров в сети все говорят о unicorn.rb внутри rails_root/config/, но у меня его нет. Вместо этого у меня есть unicorn.conf с таким же содержимым внутри /etc.

Существует также файл сокета, который прослушивает первое приложение, и я попробовал два создать второе для моего второго приложения, но это не удалось.

Я знаю, что мне нужно создать еще одну конфигурацию единорога для второго приложения, а также нужно сделать что-то, что должно привести к созданию сокета для второго.

Но отсутствие знаний и понимания системного администрирования доводит меня до неприятностей.

Может ли кто-нибудь рассказать мне об этой проблеме?

При необходимости я могу предоставить больше файлов.

Файл конфигурации nginx для первого приложения (путь /etc/sites-available/first_app).

upstream app_server {
    server unix:/var/run/unicorn.sock fail_timeout=0;
}

server {
    listen   80;
    root /home/rails/myfirstapp/public;
    server_name www.myfirstapp.com;
    index index.htm index.html index.php index.asp index.aspx index.cgi index.pl index.jsp;

    location / {
            try_files $uri/index.html $uri.html $uri @app;
    }


    location ~* ^.+\.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|flv|mpeg|avi)$ {
                    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;
            proxy_pass http://app_server;
    }
}

server {
    listen 80;
    server_name www.myfirstapp.com;
    return 301 $scheme://myfirstapp.com$request_uri;    
}

второе приложение (/etc/sites-available/second_app)

upstream app_server_2 {
    server unix:/var/run/unicorn.app_two.sock fail_timeout=0;
}

server {
    listen   80;
    root /home/rails/secondapp/public;
    server_name secondapp.com;
    index index.htm index.html index.php index.asp index.aspx index.cgi index.pl index.jsp;

    location / {
            try_files $uri/index.html $uri.html $uri @app;
    }


    location ~* ^.+\.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|flv|mpeg|avi)$ {
                    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;
            proxy_pass http://app_server_2;
    }
}

server {
    listen 80;
    server_name secondapp.com www.secondapp.com;
    return 301 $scheme://secondapp.com$request_uri; 
}

(/etc/unicorn.conf)

listen "unix:/var/run/unicorn.sock"
worker_processes 4
user "rails"
working_directory "/home/rails/myfirstapp"
pid "/var/run/unicorn.pid"
stderr_path "/var/log/unicorn/unicorn.log"
stdout_path "/var/log/unicorn/unicorn.log"

person marmeladze    schedule 03.04.2016    source источник


Ответы (1)


Вероятно, это осталось без ответа, потому что вы должны просто использовать 2 независимых капли, а не пытаться выполнить эту работу (что будет немного кошмаром для тех, кто не знаком с сервером и материалами развертывания). В Rails есть множество способов связать 2 приложения через Интернет.

Если вам нужно предоставить общий доступ к базе данных, вы можете даже просто настроить третью каплю (хотя и не требуется) и разместить оттуда централизованную базу данных и подключить к ней оба приложения. Это также настраивает вас на большую масштабируемость.

Если, конечно, я не понял, что вы пытаетесь сделать.

Если вы используете 2 капли, а грамматика - наша непостоянная хозяйка, познакомьте нас с некоторыми подробностями, чувак.

person bryanfeller    schedule 19.12.2016
comment
да, я не очень хорошо знаком с сервером / развертыванием. Итак, я купил (или как там точный глагол) вторую каплю -)) - person marmeladze; 19.12.2016