以下内容默认针对的是ubuntu16.04LTS版本进行部署
1基本设置
#基本ssh登录
ssh root@47.94.236.48
#添加deploy用户并添加权限
sudo adduser deploy
sudo adduser deploy sudo
su deploy
#使用ssh-copy-id进行登录
brew install ssh-copy-id #安装ssh-copy-id,更新则为 brew upgrade ssh-copy-id
ssh-copy-id deploy@47.94.236.48 #在mac端操作
#更改用户密码
passwd deploy
#其他用法
useradd -m -s /bin/bash deploy #添加deploy用户,并且在/home目录下面建立deploy文件夹
gpasswd -d deploy sudo #从sudo组中删除deploy用户
userdel -r deploy #删除deploy用户
2更新和安装基本依赖
#基本安装和依赖
su deploy
sudo apt-get update
sudo apt-get install -y 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 nodejs
3rvm安装和使用
4mysql安装和使用
5安装nginx
6配置nginx
#使用nginx结合rails进行配置
#/etc/nginx/nginx.conf中添加下面两行到http中
#这会打开 Passenger 支持,并且指定使用之前用 rvm 安装的 ruby 版本
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /home/deploy/.rvm/wrappers/default/ruby;
#删除和新建配置
rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-enabled/example.com.conf
#example.com.conf添加如下代码
server {
listen 80 default;
server_name example.com; # 这里填写你真实域名
root /var/www/example.com/current/public; #current是项目名称
passenger_enabled on;
passenger_app_env production;#模式就是production,这里可以省略
}
6系统启动需要添加内容
#建立文件夹
sudo mkdir /var/www/example.com
#设定文件夹的归属
sudo chown -R deploy /var/www/example.com
#安装gem
bundle
#生成production环境下的数据库
RAILS_ENV=production rails db:create db:migrate
#样式编译
rails assets:precompile
#添加key到config/sercret.yml的production中
rails secret RAILS_ENV=production
#项目重新启动
sudo service nginx reload
sudo service nginx restart
#nginx log 访问日志
/var/log/nginx
出现的问题以及解决
#问题1:输入sudo 提示unable to resolve host mylinux
解决:vim /etc/hosts, 127.0.0.1 localhost 后面添加主机名称
#问题2:Can't connect to local MySQL server through socket '/tmp/mysql.sock'
解决:删除config/database.yml中的socket语句
#问题3:47.94.236.48找不到页面
解决:需要在routes.rb中设置root