Во-первых, обратите внимание, что Uberspace 7 работает на SELinux.Это означает, что файлы сценариев CGI в ~/html/
должны быть не только исполняемыми, но и иметь правильный контекст SELinux.В этом случае тип должен быть httpd_sys_content_t
.
Вы можете просмотреть контекст SELinux с помощью ls -lZ
:
$ ls -Z file1
-rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
Если у некоторых файлов неправильный контекст, контекст можно восстановить с помощью команды restorecon
, например, restorecon -R ~/html/
.
Каталог установки пользователя для драгоценных камней Ruby: ~/.gem/
.В Uberspace gem install
устанавливается в этот каталог по умолчанию:
$ cat /etc/gemrc
gem: --no-document --user-install
Поскольку домашний каталог не доступен для процесса apache, установленные там гемы не могут быть выполнены из скриптов CGI.Вместо этого вы можете установить гемы в /var/www/virtual/$USER/gem
, создать каталог с
$ mkdir /var/www/virtual/$USER/gem
. Вы не можете использовать параметр --install-dir
для gem install
напрямую, поскольку это противоречит параметрам по умолчанию, указанным выше:
$ gem install mygem --install-dir /var/www/virtual/$USER/gem
ERROR: Use --install-dir or --user-install but not both
Вместо этого создайте ~/.gemrc
со следующим содержимым, чтобы переопределить параметры по умолчанию (замените <USERNAME>
своим действительным именем пользователя):
gem: --install-dir /var/www/virtual/<USERNAME>/gem
Теперь установка гемов должна работать:
$ gem install mygem
Чтобы использовать драгоценные камни в CGI-скриптах, установите переменную Gem.paths
, прежде чем требовать драгоценные камни:
#!/usr/bin/ruby
Gem.paths = { 'GEM_PATH' => '/var/www/virtual/<USERNAME>/gem' }
require 'mygem'
(... rest of the script)
Это необходимо, поскольку мы не можем изменять переменные среды (т. Е. Установить * 1039).*) для процесса apache.