Ubuntu上Ruby应用程序的最佳位置是什么?

时间:2013-04-29 09:21:15

标签: ruby ubuntu

我们有一个Ruby应用程序在我们的服务器上作为守护进程服务运行。目前,该应用程序位于/usr/share/theapp下的Ubuntu计算机上。

我的问题可能有争议,但我只是想知道哪个位置实际上是Ruby应用程序的最佳,最常规的地方?以上是否正确,或者是否有针对守护程序应用程序的不同位置?

例如,通常情况下,我们将使用Apache托管的PHP Web应用程序放在/var/www/...下,所以我认为必须有一个更好的,更好的实践位置来放置Ruby应用程序。

位置可能并不重要,因此如果应用程序托管并位于不同的文件夹中,应用程序不会中断,但我相信需要有一些形式和方法来解决这个问题。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

在阅读了通常使用的各种目录的几个描述之后,我们将应用程序放在/ usr / local / share中。

“bin”子目录中应该可供用户使用的任何命令然后通过我们在安装时运行的rake任务从/ usr / local / bin获得它的软链接。

我同意评论说,当他们不提供HTML时,将它们放在“www”目录下是没有意义的。

答案 1 :(得分:2)

我只是添加这个作为我自己问题的答案,因为我认为其他人可能觉得它很有用,这来自http://www.ubuntugeek.com/linux-or-ubuntu-directory-structure.html

  • / bin - 二进制应用程序(大多数可执行文件)
  • / boot - 启动所需的文件(例如内核等)
  • / dev - 您的设备(从驱动器到显示器的所有内容)
  • / etc - 几乎所有系统配置文件
  • /etc/profile.d - 包含登录时由/ etc / profile运行的脚本。
  • /etc/rc.d - 包含许多在不同运行级别的启动时运行的shell脚本。通常还有一个用于设置网络的rc.inet1脚本(在Slackwar中),一个用于加载模块化设备驱动程序的rc.modules脚本,以及一个可以编辑以运行管理员所需命令的rc.local脚本。 DOS中的autoexec.bat。
  • /etc/rc.d/init.d - 在基于rpm的系统上包含大多数初始化脚本。
  • /etc/rc.d/rc*.d - 其中“*”是与默认运行级别对应的数字。包含要在该运行级别启动和停止的服务的文件。在基于rpm的系统上,这些文件是初始化脚本本身的符号链接,它们位于* /etc/rc.d/init.d。
  • / etc / skel - 包含多个示例或骨架初始化shell的目录。通常包含用于填充新用户主目录的子目录和文件。
  • / etc / X11 - X Window系统的配置文件
  • / home - 本地存储的用户文件和文件夹
  • / lib - 系统库(类似于Program Files)
  • / lost + found - 丢失并找到丢失的文件
  • / media - 安装(或加载)设备,如cdroms,数码相机等。
  • / mnt - 已安装的文件系统
  • / opt - “可选”已安装程序的位置
  • / proc - 动态目录,包括有关进程的信息和列表
  • / root - root用户的“home”文件夹
  • / sbin - 仅限系统的二进制文件(请参阅/ bin)
  • / sys - 包含有关系统的信息
  • / tmp - 临时文件
  • / usr - 主要针对普通用户的应用
  • / var - 主要是日志,数据库等
  • / usr / local / bin - 放置自己程序的地方。它们不会被升级覆盖。
  • / usr / share / doc - 文档。

答案 2 :(得分:0)

我部署到/u/<app_name>/revisions使用由构建的日期时间命名的文件夹。然后我创建一个符号链接到/u/<app_name>/current。这是capistrano的惯例,它适用于任何类型的应用程序。

示例文件夹结构

u/foobar/
        |- current* -> /u/foobar/revisions/042920131205
        |- revisions/
                    |- 042920131205/
                                   |- bin/
                                   |- lib/
                                   |- spec/
                                   |- README.md
                                   |- ... (you get the idea)

手动执行

要手动制定此部署策略,您将会看到一些非常简单的命令。

date=`date +"%m%d%y%H%M"`
git clone <repo> /u/<app_name>/revisions/$date
ln -s /u/<app_name>/revisions/$date /u/<app_name>/current