Несколько приложений Rails на одном поддомене?
Недавно я решил попробовать Rails. При работе с PHP все мои проекты PHP просто находились в одном каталоге. Например, я могу иметь http://ubuntu/app1
, http://ubuntu/app2
, так далее.
Я создал поддомен для Rails (http://ruby.ubuntu
), установлены Rails и Passenger и все работает. Тем не менее, я могу ошибаться, но похоже, что я могу иметь только одно приложение Rails на поддомен?
Мой VirtualHost выглядит следующим образом:
<VirtualHost *:80>
ServerName ruby.ubuntu
ServerAdmin webmaster@localhost
DocumentRoot /var/www/ruby/blog/public
<Directory /var/www/ruby/blog/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
RailsEnv development
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Весь мой PHP и разное. файлы хранятся в /var/www/main
, Я хочу иметь возможность хранить все мои приложения Rails в /var/www/ruby
, Я попытался изменить DocumentRoot на /var/www/ruby
, но я не думаю, что это так просто. Когда я захожу на страницу приветствия приложения Rails и нажимаю "О среде моего приложения", я получаю страницу 404, но когда DocumentRoot установлен в публичный каталог, я получаю ожидаемый результат.
Я не хочу создавать новый поддомен каждый раз, когда создаю новый проект. Есть ли способ, которым я могу сделать это, чтобы я мог хранить все свои приложения в /var/www/ruby
и просматривая http://ruby.ubuntu
позволит мне получить доступ ко всем моим приложениям на Rails? Таким образом, если я хочу создать новое приложение, все, что мне нужно сделать, это rails new app
, не требуется настройка Apache .htaccess или VirtualHost.
3 ответа
Вы можете обслуживать столько рельсов, сколько пожелаете.
Если вы используете apache httpd и passenger, выполните следующие действия:
Просто вставьте символическую публичную папку каждого из ваших приложений rails в apache DocumentRoot как подпапку. Затем добавьте директиву RailsBaseURI в конфигурацию apache, которая сообщает пассажиру, что данная папка является приложением rails.
Допустим, у вас есть два приложения rails rapp1 и rapp2. Допустим, ваш apache DocumentRoot это / var / www / html
ln -s rapp1 /var/www/html/rapp1
ln -s rapp2 /var/www/html/rapp2
Теперь откройте файл конфигурации виртуального хоста Apache и добавьте следующие две строки
RailsBaseURI /rapp1
RailsBaseURI /rapp2
перезагрузите сервер Apache и при посещении http://servername/rapp1
, ваше приложение рельсы обслуживается
Я могу ошибаться, но я верю, что то, что вы пытаетесь достичь, называется Sub-URI.
Используйте поддомен ruby.ubuntu, и тогда каждое приложение будет работать в разных подкаталогах.
Некоторое дальнейшее чтение: http://collab.stat.ucla.edu/users/jose/weblog/9e335/
Похоже, вы пытаетесь использовать SubURI. Пассажир может их поддерживать, но вам нужно немного настроить конфигурацию виртуального хоста.
Документы для пассажиров для Apache объясняют, как это сделать, а также пример, чтобы помочь вам.