前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Debian 9下安装Ruby on Rails与NGINX

Debian 9下安装Ruby on Rails与NGINX

作者头像
Likenttt
发布2018-09-14 09:49:58
3.5K0
发布2018-09-14 09:49:58
举报
文章被收录于专栏:技术视野技术视野

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。将以下版本替换为适合您应用的版本:

代码语言:txt
复制
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安装数据库服务器。安装并正确配置后,发出以下命令:

代码语言:txt
复制
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)工具来加速部署工作流程。

更多信息

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开始之前
    • 安装Ruby
      • 安装Rails
        • 安装NGINX和乘客
        • 启用passenger并启动NGINX
        • 安装MySQL支持(可选)
        • 部署Rails应用程序
        • 下一步
        • 更多信息
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档