前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Debian 8 使用 Apache 部署 Ruby on Rails

Debian 8 使用 Apache 部署 Ruby on Rails

作者头像
Debian中国
发布于 2018-12-20 03:55:20
发布于 2018-12-20 03:55:20
2.7K00
代码可运行
举报
文章被收录于专栏:Debian中国Debian中国
运行总次数:0
代码可运行

Ruby on Rails 是一个快速开发的Web框架,Web设计人员和开发人员利用它能实现动态的全功能Web应用程序。 本文使用 Phusion Passengermod_rails 方法部署 Rails 应用程序。 Passenger 允许您直接在Apachen应用程序中嵌入 Rails 应用程序,而无需使用FastCGI或复杂的Web服务器代理。

安装Passenger和依赖关系

1.安装使用Ruby,构建Ruby模块和运行Rails应用程序所需的系统包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install build-essential libapache2-mod-passenger apache2 ruby ruby-dev libruby zlib1g-dev libsqlite3-dev

2.使用gem模块的gem包管理器,安装fastthread gem:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo gem install fastthread

3.安装Ruby On Rails:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo gem install rails

4.(可选)为您的应用程序安装其他依赖项,例如 MySQL 支持:

(adsbygoogle = window.adsbygoogle || []).push({});

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install mysql-server libmysqlclient-dev mysql-client mysql-common
sudo gem install mysql

5.将rails添加到$PATH环境变量。 请确保用正在运行的Ruby版本替换VERSION:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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项目,以确保一切正常配置。 替换为你的应用程序名称:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo rails new /var/www/html/example.com/public_html/application

配置Apache以使用Passenger

1.打开配置文件,调整DocumentRoot /etc/apache2/sites-available/example.com.conf:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DocumentRoot /var/www/html/example.com/application/public

2.重启Apache

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl restart apache2

部署多个Rails应用程序

有许多方法可以使用Passenger部署多个Rails应用程序。 最简单的方法是运行如上配置的多个不同的虚拟主机来托管单个Rails应用程序。 或者,您可以在单个虚拟主机中托管多个Rails应用程序。 本节介绍一个。

1.添加RailsBaseURI指令,指定虚拟主机配置中Rails应用程序的路径,如以下示例所示, /etc/apache2/sites-available/example.com.conf:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DocumentRoot /var/www/html/example.com/public_html/
RailsBaseURI /app1
RailsBaseURI /app2
RailsBaseURI /app3

这些指令配置Passenger在example.com站点上指定的三个位置运行三个Rails应用程序。 2.将应用程序的public/目录链接到public_html/的子目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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/
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-06-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Unity编辑器UnityEditor基础(二)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
bering
2019/12/03
2.3K0
Unity-工具-查找丢失资源的Objects
public SerializedProperty GetIterator(); 返回SerializedProperty类 objectReferenceValue 参数:Object索引的相关obj
祝你万事顺利
2019/07/15
1.6K0
Unity 编辑器开发实战【Custom Editor】- 为UI视图制作动画编辑器
为了更方便地为UI视图添加动画,将动画的编辑功能封装在了UI View类中,可以通过编辑器快速的为视图编辑动画。动画分为两种类型,一种是Unity中的Animator动画,该类型直接通过一个字符串类型变量记录动画State状态的名称即可,播放时调用Animator类中的Play方法传入该名称。另一种是DoTween动画,支持视图的移动、旋转、缩放、淡入淡出动画的编辑:
CoderZ
2022/08/29
1.7K0
Unity 编辑器开发实战【Custom Editor】- 为UI视图制作动画编辑器
Unity编辑器扩展 | 编辑器扩展基础入门
Unity编辑器扩展 是一种自定义工具和功能,可以增强和扩展Unity编辑器的默认功能,以满足特定项目或工作流程的需求。通过Unity编辑器扩展,开发者可以创建自定义的编辑器窗口、面板、工具栏按钮、菜单选项等,以提供更直观、高效的工作环境。
呆呆敲代码的小Y
2023/09/02
8890
Unity编辑器扩展 | 编辑器扩展基础入门
Week16-编辑器服务端API开发
第一章:周介绍 1-1 介绍 需求指导设计,设计指导开发。无设计不开发。 服务端技术方案设计的方法 B端和编辑器基本功能API 技术方案设计文档 第二章:技术方案设计 2-1 技术方案设计-章介绍 领导技术方案设计、评审技术方案设计。 主要产出:server端技术方案设计 主要内容: 接口设计 选择Restful,而不是GraphQL 数据库设计 sever端整体设计 注意:正视技术方案设计,设计会节约时间。 2-2 接口设计-整理所有接口 接口设计应该是在需求后的第一设计,接口设
六个周
2022/10/28
5200
Week16-编辑器服务端API开发
Unity3D--项目:CS局域网之战(二)
我们除了扔进头部中,还可以扔进骨骼头部,保持相对位置,然后通过弯腰等骨骼动画来达到相机跟随
孙寅
2020/06/02
1K0
Unity編輯器案列
Unity最强大的地方之一是它扩展性非常强的编辑器。Unite Europe 2016上有一个视频专门讲编辑器编程的:
bering
2019/12/02
1.4K0
操作系统课设详细解答
(1)学会使用 VC 编写基本的 Win32 Consol Application(控制台应用程序)。 (2)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解 Windows 进程的“一生”。 (3)通过阅读和分析实验程序,学习创建进程、观察进程、终止进程以及父子进程同步的基本程序设计方法。
全栈程序员站长
2022/09/13
1.1K0
Java安全之SnakeYaml反序列化
YAML是一种可读性高,用来表达数据序列化的格式。YAML是”YAML Ain’t a Markup Language”(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML的意思其实是:”Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据为中心,而不是以标记语言为重点,而用反向缩略语重命名。
ph0ebus
2023/09/12
6120
PHP中对象的序列化和反序列化
serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。
宣言言言
2019/12/18
1.4K0
JSON快速入门(Java版)-imooc
个人学习源码:https://github.com/zccodere/study-imooc
chenchenchen
2023/01/30
1.1K0
面向对象的Java实现
1-1:封装 a.为什么需要封装(封装可以是数据方便维护、增加实用性、方便扩展等等。通过面向对象的思想,模拟现实生活中的事物。) b.什么是封装(封装就是将属性私有化,提供共有的方法访问私有属性) c.如何实现封装 例如: package s2java.sg.ch01; public class AccpTeacher3{ private String name;//教员姓名 private int age;//年龄 public String getName(){ return name; } public void setName(String MyName){ name=MyName; } public int getAge(){ return age; } public void setAge(int age){ if(age<22){ System.out.println("错误!最小年龄应为22岁!"); this.age=22;//若果不符合年龄要求,则赋予默认值 }else{ this.age=age; } } /* *返回自我介绍的内容 */ public String introduction(){ return "大家好!我是"+name+",我今年"+age+"岁"; } } 1-2:构造方法 a.为什么需要构造方法(使用构造方法可以给属性赋值。而且,实例化一个对象实际上就是去调用这个对象的构造方法。) b.什么是构造方法(构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值。) 构造方法必须满足以下语法规则:方法名与类名相同和没有返回类型。或者会所二名同、无返型。 c.带参数的构造方法(带参数的构造方法可以在构造方法中传递参数。) 在使用带参数的构造方法示例化对象时,传递的值和构造方法的参数应当在个数、次序和类型上互相匹配。 例如:AccpTeacher6 teacher=new AccpTeacher6("李名",23,"本科","咨询师"); 通过调用带参数的构造方法,在创建对象时,一并完成了对象成员的初始化工作,简化了对象初始化的代码。 1-3:方法重载 a.生活中的方法重载 例如: 一个司机可以驾驶不同的车子,虽然驾驶的行为实现各不相同,但是这些 操作都称为驾驶。驾驶这一行为就构成了生活中的方法重载。 b.方法重载的代码示例 例如: public static int max(int a,int b) public static int max(long a,long b) public static int max(float a,foat b) public static int max(double a,double b) 多次调用Math类的max()方法,分别进行不同的取最大值的操作。 例如: public class Test{ public static void main(String[] args){ Math.max(1,2); Math.max(1.0F,2.F); Math.max(1.0,2); } } c.构造方法重载(构造方法重载是方法重载的一个典型特例) 例如: package s2Java.sg.ch02; public class AccpTeacher7{ private String name;//教员姓名 private String school="北京中心";//所在中心 public AccpTeacher7(String name){ this.name=name;//设定教员姓名 } public AccpTeacher7(String name,String school){ this.name=name;//设定教员姓名 this.school=school;//设定教员的所在中心 } public String introduction(){ return "大家好!我是"+school+"的"+name; } } 例如: package s2java.sg.ch01; public class AccpTeacher7Test{ public static void main(String[] args){ AccpTeacher7 teacher1=new AccpTeacher7("李明"); System.out.println(teacher1.introduction()); AccpTeacher
用户1112962
2018/09/19
6070
day17-缓冲流&转换流&序列化流&打印流&Properties
前期我们学习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。
张哥编程
2024/12/13
1190
Java进阶之路——从初级程序员到架构师,从小工到专家
怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题。希望这篇文章会是你看到过的最全面最权威的回答。
凯哥Java
2019/06/28
6730
Java进阶之路——从初级程序员到架构师,从小工到专家
本文主要讲述了如何从一名初级程序员成长为一名优秀的技术管理者。首先,作者通过自己的经历,分享了在技术管理过程中遇到的问题和解决方法。接着,作者介绍了在技术管理过程中需要具备的技能和素质,包括领导力、团队协作、沟通能力、学习能力等。最后,作者提供了一些成为优秀技术管理者的实践建议,包括制定计划、分配任务、持续学习等。
Java后端工程师
2017/12/17
2.7K0
Unity性能调优手册9Unity的Script:空生命周期函数,tags,组件,string,显式销毁的类(Texture2D、Sprite、Material),burst
翻译自https://github.com/CyberAgentGameEntertainment/UnityPerformanceTuningBible/
立羽
2023/11/27
4550
Unity性能调优手册9Unity的Script:空生命周期函数,tags,组件,string,显式销毁的类(Texture2D、Sprite、Material),burst
如何实现一个优雅的Python的Json序列化库
在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题。Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化。但是这种序列化仅支持python内置的基本类型。
ThoughtWorks
2020/09/10
1.5K0
如何实现一个优雅的Python的Json序列化库
ObjectInputStream类实现对象的反序列,ObjectOutputStream类实现对象的序列化流
本文主要学习ObjectInputStream类实现对象的反序列,ObjectOutputStream类实现对象的序列化流,接下来小编带大家一起来学习!
Java进阶者
2021/11/19
4760
ObjectInputStream类实现对象的反序列,ObjectOutputStream类实现对象的序列化流
[PHP]实体类基类和序列化__sleep问题
1.构造函数传参 2.__get和__set实现,当调用不存在的属性的时候,可以取值和赋值到data属性数组 3.__sleep实现,当序列化对象的时候,只序列化data属性数组和类内初始化定义的字段 4.__isset实现,可以判断属性是否存在,通过判断data属性数组 5.toArray方法实现,返回data属性数组 6.记录了构造初始化后,动态添加的属性字段
唯一Chat
2019/09/10
5180
09 | 反序列化漏洞:使用了编译型语言,为什么还是会被注入?
我们都知道,Java 是一种高层级的语言。在 Java 中,你不需要直接操控内存,大部分的服务和组件都已经有了成熟的封装。除此之外,Java 是一种先编译再执行的语言,无法像 JavaScript 那样随时插入一段代码。因此,很多人会认为,Java 是一个安全的语言。如果使用 Java 开发服务,我们只需要考虑逻辑层的安全问题即可。但是,Java 真的这么安全吗?
小黑同学
2020/11/24
5370
09 | 反序列化漏洞:使用了编译型语言,为什么还是会被注入?
推荐阅读
相关推荐
Unity编辑器UnityEditor基础(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档