专栏首页技术视野Debian 9下安装Ruby on Rails与NGINX

Debian 9下安装Ruby on Rails与NGINX

Ruby on Rails是一个Web框架,允许Web设计人员和开发人员实现动态的功能齐全的Web应用程序。在生产中部署Rails应用程序时,开发人员可以从几个流行的应用程序服务器中进行选择,包括Puma,Unicorn和Passenger。本指南将使用Passenger,因为它可以方便地与NGINX集成。

注意本指南是为非root用户编写的。需要提升权限的命令带有前缀sudo。如果您不熟悉该sudo命令,可以查看我们的“ 用户和组”指南。

开始之前

  1. 按照入门保护服务器指南进行操作,并设置Linode的主机名。 要检查主机名运行:hostname hostname -f第一个命令应显示短主机名,第二个命令应显示完全限定的域名(FQDN)。
  2. 更新系统:sudo apt-get update && sudo apt-get upgrade安装依赖项
  3. 安装使用Ruby,构建Ruby模块和运行Rails应用程序所需的系统包:

sudo apt-get install build-essential dirmngr gnupg ruby ruby-dev zlib1g-dev libruby libssl-dev libpcre3-dev libcurl4-openssl-dev rake ruby-rack

安装Ruby

使用Ruby版本管理器(RVM)安装Ruby。确保在Gemfile中安装与Rails版本兼容的Ruby版本。本指南将使用Rails 5.1.4和Ruby 2.4.2

安装mpapis GPG密钥:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

如果这不起作用dirmngr,则默认情况下可能尚未安装您的系统。安装它以纠正错误:

sudo apt install dirmngr

运行官方RVM安装脚本:

curl -sSL https://get.rvm.io | bash -s stable --ruby

安装过程将输出必须在使用RVM之前运行的命令:

source /home/username/.rvm/scripts/rvm

检查以下要求rvm

rvm requirements

安装Ruby版本并将其设置为系统的默认版本:

rvm install ruby rvm --default use ruby

如果您的项目需要不同版本的ruby,请明确安装该版本:

rvm install ruby-2.5.0 rvm --default use ruby-2.5.0

安装Rails

使用Rubygems包管理器安装Rails。将以下版本替换为适合您应用的版本:

gem install rails -v 5.1.4

安装NGINX和乘客

安装NGINX:

sudo apt install nginx

Phusion拥有一个包含最新版Phusion Passenger的存储库。要将其添加到包管理器,请首先安装Phusion PGP密钥:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7 sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger stretch main > /etc/apt/sources.list.d/passenger.list'

为APT启用HTTPS支持:

sudo apt-get install apt-transport-https ca-certificates

更新本地包数据库并安装Phusion Passenger:

sudo apt-get update sudo apt-get install libnginx-mod-http-passenger

启用passenger并启动NGINX

NGINX现已安装在系统上,但未启用对Phusion Passenger的支持。以root身份或使用sudo命令打开文件/etc/nginx/conf.d/mod-http-passenger.conf并验证以下两行是否存在且未注释:

/etc/nginx/conf.d/mod-http-passenger.conf1 2

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; passenger_ruby /usr/bin/passenger_free_ruby;注意如果该文件尚不存在,则需要创建该文件并手动添加这些行。

重启NGINX:

sudo systemctl restart nginx

要验证是否已正确安装和启用Passenger支持:

sudo passenger-memory-stats

如果Passenger正在运行,则应在“Passenger processes”部分下显示一些正在运行的进程:

----- Passenger processes ----- PID VMSize Private Name ------------------------------- 14337 420.8 MB 1.1 MB Passenger watchdog 14340 559.3 MB 1.4 MB Passenger core 14345 292.5 MB 1.2 MB Passenger ust-router

安装MySQL支持(可选)

如果部署的应用程序使用MySQL,请按照Debian 8指南中的MySQL安装数据库服务器。安装并正确配置后,发出以下命令:

sudo apt-get install libmysqlclient-dev

部署Rails应用程序

将您的Rails应用程序复制到您的Linode。导航到应用程序的根目录并安装所有依赖项:

cd railsapp bundle install

Rails需要JavaScript运行时。安装Node.js:

sudo curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo apt install nodejs

注意如果您的Gemfile已包含therubyracer,或者您的系统上有另一个JavaScript运行时,则可以跳过此步骤。

  1. /etc/nginx/sites-available/default在文本编辑器中打开并default_serverserver块的前两行中删除: 在/ etc / nginx的/网站可用/默认1 2 3 4 5 server { listen 80; listen :::80; . . .
  2. 由于您使用的是RVM,因此您需要指定Passenger应使用哪个版本的Ruby:

rvm use passenger-config --ruby-command

passenger-config命令将生成几行输出,类似于:

passenger-config was invoked through the following Ruby interpreter: Command: /home/username/.rvm/gems/ruby-2.4.2/wrappers/ruby Version: ruby 2.4.2p198 (2017-09-14 revision 59899) x86_64-linux To use in Apache: PassengerRuby /home/username/.rvm/gems/ruby-2.4.2/wrappers/ruby To use in Nginx : passenger_ruby /home/username/.rvm/gems/ruby-2.4.2/wrappers/ruby To use with Standalone: /home/username/.rvm/gems/ruby-2.4.2/wrappers/ruby /home/username/.rvm/gems/ruby-2.4.2/gems/passenger-5.1.11/bin/passenger start

复制NGINX系列以用于下一步。

为您的Rails应用配置新站点。/etc/nginx/sites-available/railsapp在文本编辑器中创建并添加以下内容:

在/ etc / nginx的/网站可用/ railsapp1 2 3 4 5 6 7

server { listen 80 default_server; server_name 192.0.2.0; passenger_ruby /home/path/to/ruby/installation; passenger_enabled on; root /path/to/app/public; }

设置server_nameLinode的公共IP地址或FQDN,并将root路径替换为Rails应用程序的路径。粘贴passenger-config命令的输出以替换该passenger_ruby行。

创建符号链接以sites-enabled激活新站点:

sudo ln -s /etc/nginx/sites-available/railsapp /etc/nginx/sites-enabled/railsapp

重启NGINX:

sudo systemctl restart nginx

在Web浏览器中,导航到您的Linode的公共IP地址。您的Rails应用程序现在应该是活动的。

下一步

现在您的应用程序正在运行,请考虑使用Capistrano等构建工具或TravisJenkins等持续集成(CI)工具来加速部署工作流程。

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

本文的版权归 Likenttt 所有,如需转载请联系作者。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在Ubuntu 16.04或Debian 8上安装SquirrelMail

    SquirrelMail是一个用PHP编写的webmail包,它支持SMTP和IMAP协议,并具有跨平台兼容性。SquirrelMail需要一台带有PHP的We...

    Likenttt
  • 使用tail查看并跟踪文本文件的结尾

    tail命令是用于查看文本文件末尾的核心Linux实用程序。您还可以使用跟随模式查看实时添加到文件中的新行。tail类似于,用于查看文件的开头

    Likenttt
  • 崇尚开源软件的公司如何从中获益?

    专有软件和开源软件之间的对比与IT行业本身一样古老。几乎所有类别的软件都可以从开发和销售代码的供应商处获得,或者从公开代码的开发人员社区里获得。在过去十年中,对...

    Likenttt
  • WordPress 批量替换 url 插件 Velvet Blues Update URLs 安装使用

    我们经常遇到 wordpress 要批量修改一些 url 之类的,可以用 phpmyadmin 操作,不过稍显麻烦不适合新手,也可以使用插件操作,用完了删除就是...

    魏艾斯博客www.vpsss.net
  • WordPress 批量替换 url 插件 Velvet Blues Update URLs 安装使用

    魏艾斯博客www.vpsss.net
  • 一个Java程序员的年终总结

    新的一年过去了,又到了该总结的时候。这一年可以说是很重要一年,很多事情,都阶段性的开花结果。 先是2月份,去了海辉,实在说,没有进去这前想的那么...

    程序员互动联盟
  • RTSP/RTMP流媒体协议网页无插件直播视频平台浏览器请求地址自带尾缀符解释说明

    TSINGSEE青犀视频全线产品都是支持HTTP接口调用的,可自由二次开发,接口文档中会对每个接口需要用到的参数进行一一的介绍和说明。

    EasyNVR
  • Linux: sudo小技能

    sudo 允许一个权限受限用户在指定的安全策略下以root用户或其它用户执行一条命令(不需要知道root用户密码也不需要切换到root用户)。出于安全考虑,当你...

    码代码的陈同学
  • Dart 服务端开发 shelf_bind 包

    shelf_bind倾向于约定优于配置,因此您可以编写必要的最小代码,但仍然可以根据需要覆盖默认值。

    南郭先生
  • 肿瘤微环境生信高分套路

    肿瘤“种子与土壤”学说是肿瘤生物学最具影响力的理论之一,自提出以来就受到了广泛的认可和延伸。该理论认为肿瘤的发生发展不仅是肿瘤细胞遗传学和表观遗传学方面的改变,...

    生信交流平台

扫码关注云+社区

领取腾讯云代金券