部署 一键安装 Nginx 和 Passenger

dongli1985 · 2015年12月18日 · 最后由 dongli1985 回复于 2015年12月22日 · 3320 次阅读

之前发过一个帖子介绍我正在做的一个支持多个 OS 的包管理器,最近更新了下 Nginx 和 Passenger 的安装,将用到我自己的一个 Rails 项目的部署,因此想提前拿出分享给大家。

首先,安装packman,它是一个类似于 Homebrew 一样的包管理器,用 Ruby 写的,DSL 模仿了 Homebrew,但是所有程序都是从头写的。

然后,安装:

$ packman install nginx -with_passenger=true

再然后就是设置 nginx.conf 了:

http {
  ...

  passenger_root /opt/software/passenger/5.0.22/libexec; # <-- 自动加入
  passenger_ruby /opt/software/ruby/2.2.3/bin/ruby;      # <- 自动加入

  server {
    listen 80; 
    server_name <...>;
    ...
    root <应用根目录>/public;
    passenger_enabled on; 
  }
}

安装好后启动 nginx:

$ packman start nginx

关闭 nginx:

$ packman stop nginx

其它需要的包如 postgresl, redis 的使用类似:

$ packman start postgresl redis

我之所以再写一个包管理器是因为厌倦了不同 OS 上不尽相同的包安装流程,有了 packman 就只用熟悉一套安装流程和控制流程。当然现在有 vagrant,docker,但是在里面还是要安装软件包,总得有先人帮你装好~

packman 这样的工具要维护很多`软件`的版本。目前看到是源码中写死的路径 和 版本号 所以每过一段时间都需要人去手动更新 url 和 sha1 还有 version 嚒

#1 楼 @so_zengtao 是的,这个和 Homebrew 一样,需要有人来维护~ 目前是我一个人在维护和更新。

给楼主点赞 :plus1: 但是我关心的是 packman 会不会根据系统生成相应的 upstart 等脚本. 因为我感觉手动编译最麻烦的就是要自己处理这些脚本,要不然不能开机自启,respawn 等

#3 楼 @kikyous 可以做的,只要稍加设计就行了,在post_install阶段生成自动启动脚本到系统文件中。我针对不同的操作系统有不同的程序来处理,比如mac.rbcentos.rb

给楼主点个赞,我记得 homebrew 也有 linux 版https://github.com/Homebrew/linuxbrew

#5 楼 @izuo 是的,但是那个版本还是有局限的,另外早先和作者交流过gcc的安装(见这里),但是总是受到 Homebrew 的限制,所以干脆自己写(我还加入了对非gcc编译器的支持,用于科学计算)~ 后来就没有再追踪 linuxbrew 了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号