Ruby&Rails---Rails5在ubuntu16.04配置生产环境

进入阿里云的服务器
$ ssh [email protected]
[email protected]'s password: ******

如果你之前ssh过这个服务器,然而服务器重装后,再次ssh,会出现这个错误:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!


Ruby&Rails---Rails5在ubuntu16.04配置生产环境_第1张图片
图片.png

需要用下列的命令来解决这个问题

ssh-keygen -R 120.77.45.76
添加用户

因为用root操作还是不安全,我们需要创建一个用户
创建用户并且输入密码

root@aliyun-ubuntu-sever1:~# useradd -r -m -s /bin/bash hpd
root@aliyun-ubuntu-sever1:~# passwd hpd

要确保给hpd配置sudo的权限

root@aliyun-ubuntu-sever1:/home# chmod +w /etc/sudoers
root@aliyun-ubuntu-sever1:/home# vim /etc/sudoers
Ruby&Rails---Rails5在ubuntu16.04配置生产环境_第2张图片
图片.png

之后撤销sudoers文件写权限

chmod u-w /etc/sudoers

然后我们ctrl+D退出server,在本地重新以hpd的用户登录

安装rbenv

让我们安装rbenv,我们将使用它来安装和管理我们的Ruby安装。 首先,更新apt-get:

sudo apt-get update

使用apt-get安装rbenv和Ruby依赖:

sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

现在我们准备安装rbenv。最简单的方法是运行这些命令,作为将使用Ruby的用户:

cd
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

注:在Ubuntu桌面,更换所有出现.bash_profile与上面的代码块.bashrc 。 这将rbenv安装到您的主目录,并设置相应的环境变量,允许rbenv到活动版本的Ruby。 现在我们准备安装Ruby。

安装Ruby

我这边是使用2.3.0的ruby版本
rbenv install -v 2.3.0
rbenv global 2.3.0

在global子命令设置的Ruby的默认版本。如果要安装和使用其他版本,只需运行带有不同版本号的rbenv命令。 使用此命令验证Ruby是否已正确安装:

ruby -v

很可能你不会希望Rubygems为您安装的每个gem生成本地文档,因为这个过程可能很长。要禁用此功能,请运行以下命令:

echo "gem: --no-document" > ~/.gemrc

您还将要安装bundler gem,以管理您的应用程序依赖关系:

gem install bundler

现在Ruby已经安装,让我们安装Rails。

安装Rails

相同的用户,安装Rails使用此命令(您可以指定与特定版本-v选项):我这边是使用5.1.4的版本

gem install rails -v 5.1.4

当你安装Ruby或提供命令的Gem的新版本,您应该运行rehash子命令。 这将安装shims出于众所周知的rbenv所有的Ruby可执行文件,这将允许您使用可执行文件:

rbenv rehash

使用此命令打印其版本,验证Rails已正确安装:

rails -v

如果安装正确,您将看到安装的Rails版本。

安装Javascript运行时

一些Rails特性(例如资产管道)取决于Javascript运行时。我们将安装Node.js以提供此功能。 添加Node.js PPA到apt-get:

sudo add-apt-repository ppa:chris-lea/node.js

注意:如果出现Ubuntu的add-apt-repository: command not found,否则略过下列这个

sudo apt-get install software-properties-common python-software-properties

然后更新apt-get并安装Node.js包:

sudo apt-get update
sudo apt-get install nodejs

恭喜! Ruby on Rails现在安装在您的系统上。

安装PostgreSQL

首先,更新apt-get:

sudo apt-get update

然后安装PostgreSQL及其开发库:

sudo apt-get install postgresql postgresql-contrib libpq-dev

PostgreSQL现在已经安装,但你应该创建一个新的数据库用户,你的Rails应用程序将使用。
使用此命令创建一个PostgreSQL超级用户用户(用您自己的用户名替换高亮显示的单词):

sudo -u postgres createuser -s pguser

如果要为数据库用户设置密码,请使用以下命令输入PostgreSQL控制台:

sudo -u postgres psql

PostgreSQL的控制台被显示postgres=#提示符。 在PostgreSQL提示符处,输入此命令以设置您创建的数据库用户的密码:

\password pguser

在提示符处输入所需的密码,然后进行确认。

现在您可以通过输入以下命令退出PostgreSQL控制台:

\q
把项目传到服务器

我是想把项目传到github上,然后在服务器上用git clone把项目拷贝下来

配置数据库连接

请确保你在你的应用程序的根目录( cd ~/ appname )。

在您喜欢的文本编辑器中打开应用程序的数据库配置文件。 我们将使用vi:

vi config/database.yml

更新production部分,所以它看起来是这样的:

production:
  <<: *default
  host: localhost
  adapter: postgresql
  encoding: utf8
  database: appname_production
  pool: 5
  username: <%= ENV['APPNAME_DATABASE_USER'] %>
  password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>

注意,数据库的用户名和密码,被配置为通过环境变量,被读取APPNAME _DATABASE_USER和APPNAME _DATABASE_PASSWORD 。 将生产密码和秘密保留在应用程序代码库之外是最佳做法,因为如果您使用的是分布式版本控制系统(如Git),它们可以轻松暴露出来。 我们将讨论如何使用环境变量设置数据库认证。

保存并退出

安装rbenv-vars插件

在部署生产Rails应用程序之前,应该使用环境变量设置生产密钥和数据库密码。 一个简单的方法来管理环境变量,我们可以在运行时使用密码和秘密加载到我们的应用程序,是使用rbenv -瓦尔插件。

要安装rbenv -瓦尔插件,只需切换到.rbenv/plugins目录,并从GitHub克隆。 例如,如果rbenv安装在您的主目录中,请运行以下命令:

cd ~/.rbenv/plugins
git clone https://github.com/sstephenson/rbenv-vars.git

设置环境变量

现在安装了rbenv-vars插件,让我们设置所需的环境变量。

首先,生成秘密密钥,将用于验证签名的cookie的完整性:

cd ~/appname
rake secret

复制生成的密钥,然后打开.rbenv-vars用你喜欢的编辑器文件。 我们将使用vi:

vi .rbenv-vars

您在此设置的任何环境变量都可以由Rails应用程序读取。

首先,设置SECRET_KEY_BASE这样的变量(替换您刚才生成和复制的秘密高亮文本):

SECRET_KEY_BASE=your_generated_secret

接下来,设置APPNAME _DATABASE_USER这样的变量(与你的应用程序名称替换突出了“APPNAME”和“应用程序名称”与您的生产数据库的用户名):

APPNAME_DATABASE_USER=appname

最后,设置APPNAME _DATABASE_PASSWORD这样的变量(与你的应用程序名称替换突出了“APPNAME”和“prod_db_pass”与您的生产数据库的用户密码):

APPNAME_DATABASE_PASSWORD=prod_db_pass

保存并退出。

您可以通过运行以下命令,使用rbenv-vars插件查看为应用程序设置的环境变量:

rbenv vars

如果你改变你的秘密,数据库密码,更新.rbenv-vars文件。 请小心保持此文件为私有,并且不要包含任何公共代码存储库。

创建生产数据库

现在您的应用程序配置为与您的PostgreSQL数据库通信,让我们创建生产数据库:

RAILS_ENV=production rake db:create

注意:如果出现PG::ConnectionBad: FATAL: Peer authentication failed for user "user1",需要修改下配置:
修改 /etc/postgresql/9.5/main/pg_hba.conf

sudo vim /etc/postgresql/9.5/main/pg_hba.conf
Ruby&Rails---Rails5在ubuntu16.04配置生产环境_第3张图片
图片.png

修改保存,重新启动pg

sudo service postgresql restart

后继续执行上面的创建生产数据库命令

现在运行此命令来更新生产数据库:

RAILS_ENV=production rake db:migrate

您还应预先编译资产:

RAILS_ENV=production rake assets:precompile

注意:如果出现Yarn executable was not detected in the system.

配置config/environments/prouction.rb
因为默认开发环境资源编译是关闭,所以要开启

  config.assets.compile = true

要测试应用程序是否工作,可以运行生产环境,并将其绑定到服务器的公共IP地址(替换服务器的公共IP地址):

RAILS_ENV=production rails server --binding=120.77.45.76

配置安全组

阿里云上有个安全组设置,可以控制ip的访问,如果没有配置的话,以上的是不能访问的


图片.png
安装redis

step1:下载

wget http://download.redis.io/releases/redis-4.0.8.tar.gz

step2:解压

tar zxvf redis-4.0.8.tar.gz

step3:复制,放到usr/local/redis目录下(先创建redis目录)

sudo mv redis-4.0.8/* /usr/local/redis/

step4:进入redis目录

cd /usr/local/redis/

step5:生成

sudo make

step6:测试,这段运行时间会较长

sudo make test

注意:如果make test不过,运行

sudo apt-get install tcl

step7:安装,将redis的命令安装到/usr/bin/目录

sudo make install

step8:配置文件,移动到/etc/目录下
配置文件目录为/usr/local/redis/redis.conf

sudo cp /usr/local/redis/redis.conf /etc/redis/

setp9:修改/etc/redis/中的配置文件
是否以守护进程运行
如果以守护进程运行,则不会在命令行阻塞,类似于服务
如果以非守护进程运行,则当前终端被阻塞
设置为yes表示守护进程,设置为no表示非守护进程
推荐设置为yes

daemonize yes
配置 navicat premium 能连接到服务器的pg数据库

https://www.qcloud.com/community/article/499397 可以参考这篇文章

Ruby&Rails---Rails5在ubuntu16.04配置生产环境_第4张图片
图片.png

接下来,我们还要开启 PostgreSQL 允许通过 TCP/IP 进行连接的特性。这主要通过 postgresql.conf 配置文件控制,该文件和 pg_hba.conf 处于同一目录下。

sudo vi /etc/postgresql/9.5/main/postgresql.conf
Ruby&Rails---Rails5在ubuntu16.04配置生产环境_第5张图片
图片.png

修改保存后,重启pg数据库

sudo service postgresql restart

然后连接


Ruby&Rails---Rails5在ubuntu16.04配置生产环境_第6张图片
图片.png

配置rails在后台运行

配置config/puma.rb

daemonize true

你可能感兴趣的:(Ruby&Rails---Rails5在ubuntu16.04配置生产环境)