进入阿里云的服务器
$ ssh root@120.77.45.76
root@120.77.45.76's password: ******
如果你之前ssh过这个服务器,然而服务器重装后,再次ssh,会出现这个错误:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
需要用下列的命令来解决这个问题
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
之后撤销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
修改保存,重新启动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的访问,如果没有配置的话,以上的是不能访问的
安装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 可以参考这篇文章
接下来,我们还要开启 PostgreSQL 允许通过 TCP/IP 进行连接的特性。这主要通过 postgresql.conf 配置文件控制,该文件和 pg_hba.conf 处于同一目录下。
sudo vi /etc/postgresql/9.5/main/postgresql.conf
修改保存后,重启pg数据库
sudo service postgresql restart
然后连接
配置rails在后台运行
配置config/puma.rb
daemonize true