【问题标题】:What is the best location for Ruby apps on Ubuntu?Ubuntu 上 Ruby 应用程序的最佳位置是什么?
【发布时间】:2013-04-29 09:21:15
【问题描述】:

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

我的问题可能值得商榷,但我只是想知道哪个位置实际上是用于 Ruby 应用程序的最佳、最传统的位置?以上是否可以,或者是否有其他用于守护程序应用的位置?

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

位置可能无关紧要,因此如果应用托管并位于不同的文件夹中,它不会崩溃,但我相信需要某种形式和方法来解决这种疯狂。

有什么建议吗?

【问题讨论】:

  • 你可能想在 superuser.com 上问这个问题。
  • 如果不是网站,则不属于/var/www。

标签: ruby ubuntu


【解决方案1】:

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

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

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

【讨论】:

【解决方案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 -- 已安装(或加载)的设备,例如 cdrom、数码相机等。
  • /mnt -- 挂载的文件系统
  • /opt -- “可选”安装程序的位置
  • /proc -- 包含进程信息和进程列表的动态目录
  • /root -- root 用户的“home”文件夹
  • /sbin -- 系统专用二进制文件(参见 /bin)
  • /sys -- 包含有关系统的信息
  • /tmp -- 临时文件
  • /usr -- 主要面向普通用户的应用程序
  • /var -- 主要是日志、数据库等
  • /usr/local/bin -- 放置您自己的程序的地方。它们不会被升级覆盖。
  • /usr/share/doc -- 文档。

【讨论】:

    【解决方案3】:

    我部署到/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
    

    【讨论】:

      猜你喜欢
      • 2010-10-31
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多