Назад | Перейти на главную страницу

mod-redmine && mod-пассажира: Пассажир отказывается загружаться (здесь: Redmine) после перезаписи uri. Куда поставить RailsBaseURI?

у меня есть работает Redmine-instance в / var / lib / redmine. (Конфигурация Redmine не является проблемой)

ln -s /var/lib/redmine/public /var/www/redmine
chown -R www-data:www-data /var/www/redmine
echo "RailsBaseURI /redmine" > /etc/apache2/sites-available/redmine
a2ensite redmine
service apache2 restart

Протестировано через http: //here.comes.my.ip/redmine ... отлично работает для теста.

Но у меня есть претензии к моему серверу для сопоставления папок (перезапись) и пассажира.

Вот мой виртуальный хост по умолчанию (да - все в одном vhost, причина OneSSLCertPerIP)

<VirtualHost *:80>
ServerAdmin admin@example.de
DocumentRoot /var/www
RewriteEngine on

RewriteMap lowercase int:tolower
RewriteCond %{REQUEST_URI} !^/cgi-bin/

# map servername to folders
RewriteCond ${lowercase:%{SERVER_NAME}} ^[a-z0-9_-]+\.[a-z]+$
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
RewriteRule ^([a-z0-9_-]+)\.([a-z]+)/(.*) /var/www/$2/$1/default/$3 

RewriteCond ${lowercase:%{SERVER_NAME}} ^[.a-z0-9_-]+\.[a-z0-9_-]+\.[a-z]+$
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
RewriteRule ^([.a-z0-9_-]+)\.([a-z0-9_-]+)\.([a-z]+)/(.*) /var/www/$3/$2/v+$1/$4
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </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
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined  
</VirtualHost>

Эти правила RewriteRules сопоставляют example.de с / var / www / de / example / default и sub.example.de с / var / www / de / example / v + sub

Так хорошо (отображение работает) так плохо (вызов redmine через пассажира нет):

ln -s /var/lib/redmine/public /var/www/de/example/v+redmine
chown -R www-data:www-data /var/www/de/example/v+redmine
[...]
service apache2 restart

[...] можно заменить несколькими попытками разместить RailsBaseURI с разными папками для / redmine на разных позициях в / etc / apache2 / sites-available / default

Результат: http://redmine.example.de/ - Есть просто список каталогов вместо Redmine.

Дополнительная информация: ОС: Ubuntu-server Oneiric

Хорошо нашел решение, но оно не очень динамичное :(

я добавил

<Directory /var/www/de/example/v+redmine>
    RailsBaseURI /de/example/v+redmine
    PassengerAppRoot /var/lib/redmine
    Options -MultiViews
</Directory>

mod_rewrite вызывает небольшую путаницу в отношении путей выполнения для пассажира. PassengerAppRoot исправит это. ;)

P.S .: Используйте только ОДИН способ (uri) для доступа к вашему приложению - иначе ссылки будут перепутаны.