首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Uberspace上使用Ruby脚本

如何在Uberspace上使用Ruby脚本
EN

Stack Overflow用户
提问于 2018-10-01 13:59:05
回答 1查看 168关注 0票数 0

我想在Uberspace 7上使用Ruby脚本,但在权限和安全设置方面遇到了一些问题,特别是在使用gems时。如何安装带有自定义宝石的CGI脚本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-01 13:59:05

首先,请注意,Uberspace 7运行在SELinux上。这意味着~/html/中的CGI脚本文件不仅必须是可执行的,而且还需要正确的SELinux上下文。在这种情况下,类型必须是httpd_sys_content_t

可以使用SELinux查看ls -lZ上下文。

代码语言:javascript
复制
$ 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安装到该目录中:

代码语言:javascript
复制
$ cat /etc/gemrc
gem: --no-document --user-install

由于apache进程无法访问主目录,因此无法从CGI脚本执行安装在那里的gems。您可以在/var/www/virtual/$USER/gem中安装gems,然后用

代码语言:javascript
复制
$ mkdir /var/www/virtual/$USER/gem

不能将--install-dir参数直接用于gem install,因为这与上面提到的默认参数冲突:

代码语言:javascript
复制
$ gem install mygem --install-dir /var/www/virtual/$USER/gem
ERROR:  Use --install-dir or --user-install but not both

相反,使用以下内容创建~/.gemrc以覆盖默认参数(用实际用户名替换<USERNAME> ):

代码语言:javascript
复制
gem: --install-dir /var/www/virtual/<USERNAME>/gem

现在,安装gems应该是可行的:

代码语言:javascript
复制
$ gem install mygem

若要在CGI脚本中使用gems,请在需要gems之前设置Gem.paths变量:

代码语言:javascript
复制
#!/usr/bin/ruby

Gem.paths = { 'GEM_PATH' => '/var/www/virtual/<USERNAME>/gem' }

require 'mygem'

(... rest of the script)

这是需要的,因为我们不能修改apache的环境变量(即设置GEM_PATH)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52592802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档