Недавно я решил попробовать 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
, но я не думаю, что это так просто. Когда я перехожу на страницу Welcome Aboard приложения Rails и нажимаю «О среде моего приложения», я получаю страницу 404, но когда DocumentRoot установлен в общедоступный каталог, я получаю ожидаемый результат.
Я не хочу создавать новый поддомен каждый раз, когда создаю новый проект. Есть ли способ сделать это так, чтобы я мог хранить все свои приложения в /var/www/ruby
и просматривая http://ruby.ubuntu
позволит мне получить там доступ ко всем моим приложениям Rails? Таким образом, если я хочу создать новое приложение, все, что мне нужно сделать, это rails new app
, конфигурация Apache .htaccess или VirtualHost не требуется.
вы можете обслуживать любое количество рельсовых приложений.
Если вы используете apache httpd и пассажир, выполните следующие действия:
Просто сделайте символическую ссылку на общую папку каждого вашего приложения rails в Apache DocumentRoot в качестве подпапки. Затем добавьте в конфигурацию apache директиву RailsBaseURI, которая сообщает пассажиру, что данная папка является приложением 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
, ваше приложение rails обслуживается
Похоже, вы пытаетесь использовать SubURI. Passenger может их поддерживать, но вам нужно немного изменить конфигурацию виртуального хоста.
В Документы для пассажиров для Apache объясните, как это сделать, а также приведите пример, который поможет вам.
Я могу ошибаться, но я считаю, что то, что вы пытаетесь достичь, называется Sub-URI.
Используйте поддомен ruby.ubuntu, и тогда каждое приложение будет работать в разных подкаталогах /.
Дальнейшее чтение: http://collab.stat.ucla.edu/users/jose/weblog/9e335/