Ubuntu 16.04上使用Nginx Passenger 部署 Rails
2018-01-11 20:33
381 查看
本文参照
退出root账户,以deploy登录。
安装RVM
安装 Ruby
安装 Passenger 最简单的方法是通过 apt 安装,首先导入 Passenger 的密钥([官方文档](
https://www.phusionpassenger.com/library/install/nginx/install/oss/trusty)):
安装 apt 插件以支持 https 传输:
添加 apt 源(对应 Ubuntu 16.04 LTS):
安装 Passenger 的包:
修改 nginx 配置,编辑
clone 项目文件:
当前项目使用mysql,安装mysql:
mysql 相关配置可能出现的问题:
Access denied for user ‘root’@’localhost’,要解决这个问题,只需要在
无法通过
远程无法连接mysql:阿里云添加安全规则,允许访问3306端口
执行 migrate
执行 assets precompile:
新建网站配置:
编辑
重启 nginx:
Missing
无法通过IP访问:添加80/80端口的安全规则;
修改主机名后出现错误“sudo: unable to resolve host lyz”:
Ruby China的教程,在阿里云ubuntu 16.04上部署自己的rails应用,逐步列出遇到的问题及其解决方案
创建账号
以root账户登录服务器,运行:$ useradd -m -s /bin/bash deploy $ adduser deploy sudo $ passwd deploy
退出root账户,以deploy登录。
使用 RVM 安装 Ruby
更新 apt,并安装 curl:$ sudo apt-get update $ sudo apt-get install curl
安装RVM
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 $ \curl -sSL https://get.rvm.io | bash -s stable $ source ~/.bashrc $ source ~/.bash_profile
安装 Ruby
$ rvm use --install --default 2.4.1
安装Passenger
Passenger 是一个 app server,支持基于 Rack 框架的 Ruby app(包括 Rails),作为模块变异到Nginx,不需要自己启动。安装 Passenger 最简单的方法是通过 apt 安装,首先导入 Passenger 的密钥([官方文档](
https://www.phusionpassenger.com/library/install/nginx/install/oss/trusty)):
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
安装 apt 插件以支持 https 传输:
sudo apt-get install apt-transport-https ca-certificates
添加 apt 源(对应 Ubuntu 16.04 LTS):
$ sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main > /etc/apt/sources.list.d/passenger.list' $ sudo apt-get update
安装 Passenger 的包:
$ sudo apt-get install nginx-extras passenger
修改 nginx 配置,编辑
/etc/nginx/nginx.conf,找到这一行的注释:
# include /etc/nginx/passenger.conf;
应用部署
创建文件夹:$ sudo mkdir -p /var/www/dodolee.club $ sudo chown deploy:deploy /var/www/dodolee.club
clone 项目文件:
$ /var/www/dodolee.club $ git clone https://github.com/LuoYeGuFei/dodolee_blog.git current
当前项目使用mysql,安装mysql:
$ sudo apt-get install mysql-server
mysql 相关配置可能出现的问题:
Access denied for user ‘root’@’localhost’,要解决这个问题,只需要在
/etc/mysql/mysql.conf.d/mysqld.cnf中找到
[mysqld]模块,插入
skip-grant-tables。
无法通过
/tmp/mysql.sock连接:
$ ln -s /run/mysqld/mysqld.sock /tmp/mysql.sock
远程无法连接mysql:阿里云添加安全规则,允许访问3306端口
执行 migrate
$ bundle install $ RAILS_ENV=production rake db:create db:migrate
执行 assets precompile:
$ rails assets:precompile
Nginx 配置
删除原有的默认网站配置:$ rm /etc/nginx/sites-enabled/default
新建网站配置:
$ touch /etc/nginx/sites-enabled/example.com.conf
编辑
/etc/nginx/sites-enabled/example.com.conf,写入以下内容:
server { listen 80 default; server_name example.com; # 这里填写你真实域名 root /var/www/example.com/current/public; passenger_enabled on; }
重启 nginx:
$ sudo service nginx restart
网站依旧无法访问
config/database.yml中定义的
ENV['DATABASE_PASSWORD']不存在,可以在
~/.bash_profile中export,然后source一下;
Missing
secret_key_basefor ‘production’ environment, set this value in
config/secrets.yml: 执行
rails secret RAILS_ENV=production, 将生成的key作为
secret_key_baseexport;
无法通过IP访问:添加80/80端口的安全规则;
修改主机名后出现错误“sudo: unable to resolve host lyz”:
sudo vi /etc/hosts , 127.0.0.1 lyz。
相关文章推荐
- Ubuntu 14.04 上使用 Nginx Passenger 部署 Ruby on Rails
- 使用 Visual Studio 部署 .NET Core 应用 ——.Net Core 部署到Ubuntu 16.04
- Rails Production Server @ Nginx + Postgresql + Ubuntu 使用git远程部署 配置
- 使用passenger+nginx在Ubuntu14.04服务器上部署rails应用填坑记
- 使用autopilot部署OpenStack将不在Ubuntu 16.04中支持
- Rails Production Server @ Nginx + Postgresql + Ubuntu 使用git远程部署 配置
- 在linux(Ubuntu16.04)上部署使用django的debug模式,部署服务器,供局域网其他电脑访问
- Ubuntu 16.04 上使用devstack部署openstack
- 在Ubuntu上使用Nginx + Passenger部署Rails应用
- vagrant使用virtualbox安装ubuntu16.04搭建lemp部署laravel项目
- apache服务器安装以及使用passenger插件部署rails应用,基于ubuntu 12.04 LTS
- Ubuntu 16.04 下使用 MySQL 5.7 + PHP 7 + Apache 部署 Nextcloud
- ubuntu16.04使用nginx、uwsgi部署django应用
- 记录从零开始在Ubuntu 16.04 上部署Ruby on rails 项目
- apache服务器安装以及使用passenger插件部署rails应用,基于ubuntu 12.04 LTS
- 初始设置ubuntu 16.04 Vps部署rails
- ubuntu16.04使用git
- Ubuntu 16.04安装使用--Ubuntu16.04下基于Docker的Caffe-GPU版本环境搭建总结
- Ubuntu16.04配置使用deepnlp
- Ubuntu16.04中使用texlive+texstudio搭建Latex环境