Ruby on Rails 是一个快速开发的Web框架,Web设计人员和开发人员利用它能实现动态的全功能Web应用程序。 本文使用 Phusion Passenger 或mod_rails 方法部署 Rails 应用程序。 Passenger 允许您直接在Apachen应用程序中嵌入 Rails 应用程序,而无需使用FastCGI或复杂的Web服务器代理。
安装Passenger和依赖关系
1.安装使用Ruby,构建Ruby模块和运行Rails应用程序所需的系统包
sudo apt-get install build-essential libapache2-mod-passenger apache2 ruby ruby-dev libruby zlib1g-dev libsqlite3-dev
2.使用gem模块的gem包管理器,安装fastthread gem:
sudo gem install fastthread
3.安装Ruby On Rails:
sudo gem install rails
4.(可选)为您的应用程序安装其他依赖项,例如 MySQL 支持:
sudo apt-get install mysql-server libmysqlclient-dev mysql-client mysql-common sudo gem install mysql
5.将rails添加到$PATH环境变量。 请确保用正在运行的Ruby版本替换VERSION:
ls /var/lib/gems PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/VERSION/bin"
6.在您的网站的公共文件夹中启动一个新的rails项目,以确保一切正常配置。 替换为你的应用程序名称:
sudo rails new /var/www/html/example.com/public_html/application
配置Apache以使用Passenger
1.打开配置文件,调整DocumentRoot
/etc/apache2/sites-available/example.com.conf:
DocumentRoot /var/www/html/example.com/application/public
2.重启Apache
sudo systemctl restart apache2
部署多个Rails应用程序
有许多方法可以使用Passenger部署多个Rails应用程序。 最简单的方法是运行如上配置的多个不同的虚拟主机来托管单个Rails应用程序。 或者,您可以在单个虚拟主机中托管多个Rails应用程序。 本节介绍一个。
1.添加RailsBaseURI指令,指定虚拟主机配置中Rails应用程序的路径,如以下示例所示, /etc/apache2/sites-available/example.com.conf:
DocumentRoot /var/www/html/example.com/public_html/ RailsBaseURI /app1 RailsBaseURI /app2 RailsBaseURI /app3
这些指令配置Passenger在example.com站点上指定的三个位置运行三个Rails应用程序。
2.将应用程序的public/目录链接到public_html/的子目录:
ln -s /var/www/html/example.com/app1/public/ /var/www/html/example.com/public_html/app1/ ln -s /var/www/html/example.com/app1/app2/ /var/www/html/example.com/public_html/app2/ ln -s /var/www/html/example.com/app1/app3/ /var/www/html/example.com/public_html/app3/