首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

玩转服务器---运行环境搭建

前面两篇文章,讲到了云服务的选购,以及域名的注册备案,那么我们项目上线的准备工作其实已经完成一半了。下一步其实就是在服务器上搭建我们的运行环境了。每个人的项目可能运行在不一样的环境,所以在这里我不准备一一介绍,我在这里以我的环境作为示例,我的个人博客后端服务器采用Node.js + MongoDB,所以环境搭建:Node.js + pm2 + MongoDB,前端我采用了Angular框架,因为前后端端口不一致,发起请求会跨域,所以我安装了nginx服务器,将前端项目打包后放在nginx的80端口,每次前端发起请求请求MongoDB数据库的数据, 就通过nginx反向代理,代理到4001端口,去取到服务端的数据,然后返还给前端进行页面的渲染。

02

mod_spidermonkey

SpiderMonkey是第一款最早面世的JavaScript引擎,它是Mozilla使用的Javascript引擎。FreeSWITCH也使用了该引擎来在FreeSWITCH内部支持Javascript嵌入式语言。 FreeSWITCH中对Javascript脚本的支持是在mod_spidermonkey中实现的。通过该模块,可以使用Javascrip控制呼叫流程,如,你可以使用如下Dialplan将电话交给一个Javascript脚本处理: <action application=“javascript” data=“/tmp/test.js”/> 然后,创建如下js文件: session.answer(); session.sleep(1000); session.streamFile("/tmp/hello-js.wav"); session.hangup(); 在js脚本中,可以得到一个session对象(Object),然后就可以对该session进行操作了。一个session代表一路通话。从上面的js脚本中很容易看出,第一行用于对来话进行应答,进二行小睡一会(1000毫秒),第三行则播放一个 .wav 文件,第四行挂机。 是的,它等于以下Dialplan: <action application=“answer””/> <action application=“sleep” data=“1000”/> <action application=“playback” data=“/tmp/hello-js.wav”/> <action application=“hangup”/> 但是,大家都知道,在Dialplan中加入逻辑判断等功能都是有限的,但在Javascript中就不同了,你很容易写一些 if-else 之类的语句判断当前的场景进而执行不同的动作。关于这一点,我们在此就不举例子,有兴趣的可以自己研究一下。 除了SpiderMonkey外,另一个Javascript引敬是V8,这是一个在Google Chrome中以及 Node.js中使用的Javascript引擎,它提供了比SpiderMondey更好的性能。最近,FreeSWITCH中也实现了一个mod_v8模块。该模块除了与mod_spidermonkey有一些小小的差别外,在API上完全兼容。也就是说,上述的test.js脚本在mod_v8下也能正常运行。 由于mod_v8的出现,现在mod_spidermonkey已经不推荐使用了。从下列提交信息中,可以看出它已被移至源代码的 legacy目录中: b0bcc01 Deprecate mod_spidermonkeyWe consider mod_spidermonkey to be completely replaced by mod_v8 关于mod_v8,且听下回解说。 另外,如果大家想先看哪些模块,告诉我,我会优先写。 ---------------------------------------- FreeSWITCH-CN是什么? ---------------------------------------- FreeSWITCH-CN是FreeSWITCH中文社区,我们的官方网站是 http://www.freeswitch.org.cn 。FreeSWITCH-CN同时也是一个微信公共账号,可以通过点击本页最顶端的「FreeSWITCH中文社... 」,或在通迅录->订阅号中搜索「FreeSWITCH-CN」来订阅,也可以到官方网站上扫描二维码。当然,不管是新用户还是老用户,随时都可以输入m或1显示本账号的主菜单。 FreeSWITCH-CN的账号维护者是Seven Du,在此,他会分享多年的FreeSWITCH使用经验,分享一些对开源VoIP软件以及软件社区的思考,并隔三差五的解答一些粉丝关心的问题。Seven Du于2007年听说、2008年开始使用FreeSWITCH,2009年创办FreeSWITCH-CN中文社区,2011~2013连续三年参加了在美国芝加哥举办的ClueCon全球VoIP开发者大会,该会议是由FreeSWITCH核心团队主办的。 如果你在学习和使用FreeSWITCH的过程中,有什么有趣的故事,也欢迎与我分享。移动设备上打字不方便,如果想写长的留言可以发邮件到 wechat@freeswitch.org.cn 。

02

mod_lua和mod_v8

这两个模块都是在FreeSWITCH支持使用嵌入式语言来控制呼叫流程的。我们在以前的文章中也曾不同程度地提到他们。 其中,mod_lua支持Lua语言,Lua是很有名的嵌入式语言,能非常好地嵌入其它语言的程序中。该模块有两个版本,最新的版本支持Lua 5.2,而支持Lua 5.1的版本现在已被移动到源代码的legacy目录中。 而mod_v8支持Javascript,由Google的v8库提供支持,v8库已被成功用于Chrome及node.js中,性能强劲。其实对Javascript的支持也有两个版本,另一个版本也在legacy目录中,叫做mod_spidermonkey。Spidermonkey是Firefox中的Javascript引擎。 Lua和Javascript两种语言有很多相似的地方,我们不必多说,先来看两个脚本: test.lua session:answer() session:sleep(1000) session:streamFile("/tmp/hello-lua.wav") session:hangup() test.js session.answer(); session.sleep(1000); session.streamFile("/tmp/hello-js.wav"); session.hangup(); 可以看出,两个脚本的内容和功能基本上一样。第一行,对当前呼叫进行应答;然后,小睡一会(以确定能正确的建立媒体流);接着,播放一个声音文件;最后,挂机。 可以分别使用如下Dialplan将来话路由到上述脚本: <action application=“lua” data=“/tmp/test.lua”/> 或 <action application=“javascript” data=“/tmp/test.js”/> 当然,两个脚本本质上是Lua或Javascript,因而你可以很容易地在脚本中加入条件判断、循环等,甚至也可以通过相关的API与数据库或其它系统交互。能实现什么样的程序,完全在于你的想象力,从现在起,就写个脚本练一练吧? ---------------------------------------- FreeSWITCH-CN是什么? ---------------------------------------- FreeSWITCH-CN是FreeSWITCH中文社区,我们的官方网站是 http://www.freeswitch.org.cn 。FreeSWITCH-CN同时也是一个微信公共账号,可以通过点击本页最顶端的「FreeSWITCH中文社... 」,或在通迅录->订阅号中搜索「FreeSWITCH-CN」来订阅,也可以到官方网站上扫描二维码。当然,不管是新用户还是老用户,随时都可以输入m或1显示本账号的主菜单。 FreeSWITCH-CN的账号维护者是Seven Du,在此,他会分享多年的FreeSWITCH使用经验,分享一些对开源VoIP软件以及软件社区的思考,并隔三差五的解答一些粉丝关心的问题。Seven Du于2007年听说、2008年开始使用FreeSWITCH,2009年创办FreeSWITCH-CN中文社区,2011~2013连续三年参加了在美国芝加哥举办的ClueCon全球VoIP开发者大会,该会议是由FreeSWITCH核心团队主办的。 如果你在学习和使用FreeSWITCH的过程中,有什么有趣的故事,也欢迎与我分享。移动设备上打字不方便,如果想写长的留言可以发邮件到 wechat@freeswitch.org.cn 。

01

零基础如何建立“前端技术体系”? --本周日晚“先行者课程”,给你示范

昨天的《WEB前端新人,怎么样构建自己的“前端技术体系”?用以在面试中打败其它竞争者》大概的写了下新人如何建立属于自己的前端技术体系,比较简单,正好今晚的先行者课程,就拿它来演示一下。 为什么说要建立属性自己的技术体系呢?前端开发用的技术不都是一样的吗?原因是因为每个人的基础、接受和理解程度不一样,所以每个人走的技术路线都不尽相同。 我个人吧,对于前端技术体系的建立的思路是,从高到低,从顶往下。把大的技术路径连接起来,再往下层层细化,但不要过于深究细节。因为时机不到,过于深入细节会让自己迷失在细节之中。 今

06
领券