<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Asterisk ajax javascript jquery php resource</title>
	<atom:link href="http://blog.thai2info.com/index.php/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.thai2info.com</link>
	<description>Manon2029 Develope Blog</description>
	<pubDate>Mon, 26 Apr 2010 04:19:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Create daemons in PHP</title>
		<link>http://blog.thai2info.com/index.php/archives/105</link>
		<comments>http://blog.thai2info.com/index.php/archives/105#comments</comments>
		<pubDate>Mon, 26 Apr 2010 04:15:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.thai2info.com/?p=105</guid>
		<description><![CDATA[
» Create  daemons in PHP

Everyone  knows PHP can be used to create websites. But it can also be used to create desktop applications and commandline tools. And now with a  class called System_Daemon, you can even create daemons using nothing but PHP. And did I mention it was easy?
What is a Daemon?
A [...]]]></description>
			<content:encoded><![CDATA[<div class="header">
<h1><span style="color: #5a1400;">» </span>Create  daemons in PHP</h1>
</div>
<p><!-- Ad:span:possible -->Everyone  knows PHP can be used to create websites. But it can also be used to create desktop applications and commandline tools. And now with a  class called System_Daemon, you can even create daemons using nothing but PHP. And did I mention it was easy?</p>
<h2>What is a Daemon?</h2>
<p>A daemon is a Linux program that run in the background, just like a <em>&#8216;Service</em>&#8216; on Windows. It can perform all sorts of tasks that do  not require direct user input. Apache is a daemon, so is MySQL. All you ever hear from them is found in somewhere in <code>/var/log</code>, yet they  silently power over 40% of the Internet.</p>
<p>You reading this page, would not have been possible without them. So clearly: a daemon is a powerful thing, and can be bend to do a lot of different tasks.</p>
<h2>Why PHP?</h2>
<p>Most daemons are written in C. It&#8217;s fast &amp; robust. But if you are  in a LAMP oriented company like me, and you need to create a lot of software in  PHP anyway, it makes sense:</p>
<ul>
<li><strong>Reuse &amp; connect existing code</strong> Think of database connections, classes that create customers from your  CRM, etc.</li>
<li><strong>Deliver new applications very fast</strong> PHP has a lot of build in functions that speed up development greatly.</li>
<li><strong>Everyone knows PHP</strong> (right?) If you work in a small company: chances are there are more PHP  programmers than there are C programmers. What if your C guy abandons  ship? Admittedly it&#8217;s a very pragmatic reason, but it&#8217;s the same reason  why Facebook is building <a title="HipHop by Facebook" href="http://github.com/facebook/hiphop-php">HipHop</a>.</li>
</ul>
<p><script type="text/javascript"><!--
        Vertical1240801 = false;
        ShowAdHereBanner1240801 = false;
        RepeatAll1240801 = false;
        NoFollowAll1240801 = false;
        BannerStyles1240801 = new Array(
            "a{display:block;font-size:11px;color:#888;font-family:verdana,sans-serif;margin:20px auto;text-align:center;text-decoration:none;overflow:hidden;}",
            "img{border:0;clear:right;}",
            "a.adhere{color:#666;font-weight:bold;font-size:12px;border:1px solid #ccc;background:#e7e7e7;text-align:center;}",
            "a.adhere:hover{border:1px solid #999;background:#ddd;color:#333;}"
        );
        document.write(unescape("%3Cscript src='"+document.location.protocol+"//s3.buysellads.com/1240801/1240801.js?v="+Date.parse(new Date())+"' type='text/javascript'%3E%3C/script%3E"));
// --></script><script src="http://s3.buysellads.com/1240801/1240801.js?v=1272250607000" type="text/javascript"></script></p>
<div class="content"><script id="bsap_js" src="http://s3.buysellads.com/ac/bsa.js?v=1272250615000" type="text/javascript"></script></p>
<h2>Possible use cases</h2>
<ul>
<li><strong>Website optimization</strong> If you&#8217;re running a (large) website, jobs that do heavy lifting should  be taken away from the user interface and scheduled to run on the  machine separately.</li>
<li><strong>Log parser</strong> Continually scan logfiles and import critical messages in your database.</li>
<li><strong>SMS daemon</strong> Read a database queue, and let your little daemon interface with your  SMS provider. If it fails, it can easily try again later!</li>
<li><strong>Video converter</strong> (think Youtube) Scan a queue/directory for incoming video uploads. Make some system  calls to <em>ffmpeg</em> to finally store them as Flash video files.  Surely you don&#8217;t want to convert video files right after the upload,  blocking the user interface that long? No: the daemon will send the  uploader a mail when the conversion is done, and proceed with the next  scheduled upload</li>
</ul>
<h2>Deamons vs Cronjobs</h2>
<p>Some people <a href="http://kevin.vanzonneveld.net/techblog/article/schedule_tasks_on_linux_using_crontab/">use  cronjobs</a> for the same <em>Possible use cases</em>. Crontab is fine  but it only allows you to run a PHP file every minute or so.</p>
<ul>
<li>What if the previous <strong>run hasn&#8217;t finished</strong> yet?  Overlap can seriously damage your data &amp; cause siginificant load on  your machines.</li>
<li>What if you can&#8217;t afford to wait a minute for the cronjob to run?  Maybe you need to trigger a process <strong>the moment</strong> a record  is inserted?</li>
<li>What if you want to keep track of multiple <em>&#8216;runs&#8217;</em> and store  data in memory.</li>
<li>What if you need to keep your application listening (on a socket for  example) Cronjobs are a bit rude for this, they may spin out of control  and don&#8217;t provide a</li>
</ul>
<p><strong>framework for logging</strong>, etc. Creating a daemon would  offer more elegance &amp; possibilities. Let&#8217;s just say: there are very  good reasons why a <strong>Linux OS isn&#8217;t composed entirely of Cronjobs</strong> <img src='http://blog.thai2info.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>How it works internally</h2>
<p>(<em>Nerd alert!</em>) When a daemon program is started, it fires up a  second child process, detaches it, and then the parent process dies. This is called <em>forking</em>. Because the parent process dies, it will give  the console back and it will look like nothing has happened. <strong>But  wait</strong>: the child process is still running. Even if you close your terminal, the child continues to run in memory, until it either stops, crashes or is killed.</p>
<p>In PHP: forking can be achieved by using the <a href="http://www.php.net/manual/en/book.pcntl.php">Process Control  Extensions</a>. Getting a good grip on it, may take some studying though.</p>
<p><script type="text/javascript"><!--
        Vertical1240804 = false;
        ShowAdHereBanner1240804 = false;
        RepeatAll1240804 = false;
        NoFollowAll1240804 = false;
        BannerStyles1240804 = new Array(
            "a{display:block;font-size:11px;color:#888;font-family:verdana,sans-serif;margin:20px auto;text-align:center;text-decoration:none;overflow:hidden;}",
            "img{border:0;clear:right;}",
            "a.adhere{color:#666;font-weight:bold;font-size:12px;border:1px solid #ccc;background:#e7e7e7;text-align:center;}",
            "a.adhere:hover{border:1px solid #999;background:#ddd;color:#333;}"
        );
        document.write(unescape("%3Cscript src='"+document.location.protocol+"//s3.buysellads.com/1240804/1240804.js?v="+Date.parse(new Date())+"' type='text/javascript'%3E%3C/script%3E"));
// --></script><script src="http://s3.buysellads.com/1240804/1240804.js?v=1272250621000" type="text/javascript"></script><script type="text/javascript"><!--
 _bsap.drop("70b060f05164228bc87cfd92a1948716", 1240804);
// --></script></p>
<h2>System_Daemon</h2>
<p>Because the <a href="http://www.php.net/manual/en/book.pcntl.php">Process  Control Extensions</a>&#8216; documentation is a bit rough, I decided to figure it out once, and then wrap my knowledge and the  required code inside a <a href="http://kevin.vanzonneveld.net/techblog/tag/pear/">PEAR</a> class called: <a href="http://pear.php.net/package/System_Daemon">System_Daemon</a>. And so now you can just:</p>
<pre class="mycode"><span style="color: #b1b100;">require_once</span> <span style="color: #ff0000;">&#8220;System/Daemon.php&#8221;</span>;                 <span style="font-style: italic; color: orange;">// Include the Class</span>
 
System_Daemon::<span style="color: #006600;">setOption</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8220;appName&#8221;</span>, <span style="color: #ff0000;">&#8220;mydaemon&#8221;</span><span style="color: #66cc66;">)</span>;  <span style="font-style: italic; color: orange;">// Minimum configuration</span>
System_Daemon::<span style="color: #006600;">start</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;                           <span style="font-style: italic; color: orange;">// Spawn Deamon!</span></pre>
<p>And that&#8217;s all there is to it. The code after that, will run in your server&#8217;s background. So next, if you create a <code>while(true)</code> loop around that code, the code will run indefinitely. Remember to build in a <code>sleep(5)</code> to ease up on system resources.</p>
<h3>Features &amp; Characteristics</h3>
<p>Here&#8217;s a grab of System_Daemon&#8217;s features:</p>
<ul>
<li>Daemonize any PHP-CLI script</li>
<li>Simple syntax</li>
<li>Driver based Operating System detection</li>
<li>Unix only</li>
<li>Additional features for Debian / Ubuntu based systems like:</li>
<li>Automatically generate startup files (init.d)</li>
<li>Support for PEAR&#8217;s Log package</li>
<li>Can run with PEAR (more elegance &amp; functionality) or without  PEAR (for standalone packages)</li>
<li>Default signal handlers, but optionally reroute signals to your own  handlers.</li>
<li>Set options like max RAM usage</li>
</ul>
<h3>Download</h3>
<p>You could <a href="http://pear.php.net/package/System_Daemon/download">download the  package</a> from PEAR, or, if you have PEAR installed on your system: just run this from a console:</p>
<pre><code>pear install -f System_Daemon
</code></pre>
<p>You can also update it using that last command.</p>
<h3>Beta</h3>
<p>Though I have quite some daemons set up this way, it&#8217;s officially still beta. So please <a href="http://pear.php.net/bugs/search.php?cmd=display&amp;package_name[0]=System_Daemon">report  any bugs</a> over at the PEAR page. Other comments may be posted here.</p>
<h2>Complex Example</h2>
<p>Ready to dig a little deeper? This example program is called  &#8216;logparser&#8217;, it takes a look at a more complex use of System_Daemon. For instance, it introduces command line arguments like:</p>
<pre><code>--no-daemon              # just run the program in the console this time
--write-initd            # writes a startup file
</code></pre>
<p>Read this source to get the picture. Don&#8217;t forget the comments!</p>
<pre class="mycode" style="position: relative;"><span style="font-style: italic; color: orange;">#!/usr/bin/php -q</span>
<span style="font-weight: bold; color: #000000;">&lt;?php</span>
<span style="font-style: italic; color: orange;">/**
 * System_Daemon turns PHP-CLI scripts into daemons.
 *
 * PHP version 5
 *
 * @category  System
 * @package   System_Daemon
 * @author    Kevin &lt;kevin@vanzonneveld.net&gt;
 * @copyright 2008 Kevin van Zonneveld
 * @license   http://www.opensource.org/licenses/bsd-license.php
 * @link      http://github.com/kvz/system_daemon
 */</span>
 
<span style="font-style: italic; color: orange;">/**
 * System_Daemon Example Code
 *
 * If you run this code successfully, a daemon will be spawned
 * but unless have already generated the init.d script, you have
 * no real way of killing it yet.
 *
 * In this case wait 3 runs, which is the maximum for this example.
 *
 *
 * In panic situations, you can always kill you daemon by typing
 *
 * killall -9 logparser.php
 * OR:
 * killall -9 php
 *
 */</span>
 
<span style="font-style: italic; color: orange;">// Allowed arguments &amp; their defaults </span>
<span style="color: #0000ff;">$runmode</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span>
    <span style="color: #ff0000;">&#8216;no-daemon&#8217;</span> =&gt; <span style="font-weight: bold; color: #000000;">false</span>,
    <span style="color: #ff0000;">&#8216;help&#8217;</span> =&gt; <span style="font-weight: bold; color: #000000;">false</span>,
    <span style="color: #ff0000;">&#8216;write-initd&#8217;</span> =&gt; <span style="font-weight: bold; color: #000000;">false</span>,
<span style="color: #66cc66;">)</span>;
 
<span style="font-style: italic; color: orange;">// Scan command line attributes for allowed arguments</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$argv</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$k</span>=&gt;<span style="color: #0000ff;">$arg</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><a href="http://www.php.net/substr"><span style="color: #000066;">substr</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$arg</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">)</span> == <span style="color: #ff0000;">&#8216;&#8211;&#8217;</span> &amp;&amp; <a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$runmode</span><span style="color: #66cc66;">[</span><a href="http://www.php.net/substr"><span style="color: #000066;">substr</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$arg</span>, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">]</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
        <span style="color: #0000ff;">$runmode</span><span style="color: #66cc66;">[</span><a href="http://www.php.net/substr"><span style="color: #000066;">substr</span></a><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$arg</span>, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">]</span> = <span style="font-weight: bold; color: #000000;">true</span>;
    <span style="color: #66cc66;">}</span>
<span style="color: #66cc66;">}</span>
 
<span style="font-style: italic; color: orange;">// Help mode. Shows allowed argumentents and quit directly</span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$runmode</span><span style="color: #66cc66;">[</span><span style="color: #ff0000;">'help'</span><span style="color: #66cc66;">]</span> == <span style="font-weight: bold; color: #000000;">true</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
    <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&#8216;Usage: &#8216;</span>.<span style="color: #0000ff;">$argv</span><span style="color: #66cc66;">[</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">]</span>.<span style="color: #ff0000;">&#8216; [runmode]&#8216;</span> . <span style="color: #ff0000;">&#8220;<span style="font-weight: bold; color: #000099;">\n</span>&#8220;</span>;
    <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&#8216;Available runmodes:&#8217;</span> . <span style="color: #ff0000;">&#8220;<span style="font-weight: bold; color: #000099;">\n</span>&#8220;</span>;
    <span style="color: #b1b100;">foreach</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$runmode</span> <span style="color: #b1b100;">as</span> <span style="color: #0000ff;">$runmod</span>=&gt;<span style="color: #0000ff;">$val</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
        <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">&#8216; &#8211;&#8217;</span>.<span style="color: #0000ff;">$runmod</span> . <span style="color: #ff0000;">&#8220;<span style="font-weight: bold; color: #000099;">\n</span>&#8220;</span>;
    <span style="color: #66cc66;">}</span>
    <a href="http://www.php.net/die"><span style="color: #000066;">die</span></a><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;
<span style="color: #66cc66;">}</span>
 
<span style="font-style: italic; color: orange;">// Make it possible to test in source directory</span>
<span style="font-style: italic; color: orange;">// This is for PEAR developers only</span>
<a href="http://www.php.net/ini_set"><span style="color: #000066;">ini_set</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;include_path&#8217;</span>, <a href="http://www.php.net/ini_get"><span style="color: #000066;">ini_get</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;include_path&#8217;</span><span style="color: #66cc66;">)</span>.<span style="color: #ff0000;">&#8216;:..&#8217;</span><span style="color: #66cc66;">)</span>;
 
<span style="font-style: italic; color: orange;">// Include Class</span>
<a href="http://www.php.net/error_reporting"><span style="color: #000066;">error_reporting</span></a><span style="color: #66cc66;">(</span><span style="font-weight: bold; color: #000000;">E_ALL</span><span style="color: #66cc66;">)</span>;
<span style="color: #b1b100;">require_once</span> <span style="color: #ff0000;">&#8216;System/Daemon.php&#8217;</span>;
 
<span style="font-style: italic; color: orange;">// Setup</span>
<span style="color: #0000ff;">$options</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">(</span>
    <span style="color: #ff0000;">&#8216;appName&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;logparser&#8217;</span>,
    <span style="color: #ff0000;">&#8216;appDir&#8217;</span> =&gt; <a href="http://www.php.net/dirname"><span style="color: #000066;">dirname</span></a><span style="color: #66cc66;">(</span><span style="font-weight: bold; color: #000000;">__FILE__</span><span style="color: #66cc66;">)</span>,
    <span style="color: #ff0000;">&#8216;appDescription&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;Parses vsftpd logfiles and stores them in MySQL&#8217;</span>,
    <span style="color: #ff0000;">&#8216;authorName&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;Kevin van Zonneveld&#8217;</span>,
    <span style="color: #ff0000;">&#8216;authorEmail&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;kevin@vanzonneveld.net&#8217;</span>,
    <span style="color: #ff0000;">&#8217;sysMaxExecutionTime&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;0&#8242;</span>,
    <span style="color: #ff0000;">&#8217;sysMaxInputTime&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;0&#8242;</span>,
    <span style="color: #ff0000;">&#8217;sysMemoryLimit&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;1024M&#8217;</span>,
    <span style="color: #ff0000;">&#8216;appRunAsGID&#8217;</span> =&gt; <span style="color: #cc66cc;">1000</span>,
    <span style="color: #ff0000;">&#8216;appRunAsUID&#8217;</span> =&gt; <span style="color: #cc66cc;">1000</span>,
<span style="color: #66cc66;">)</span>;
 
System_Daemon::<span style="color: #006600;">setOptions</span><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$options</span><span style="color: #66cc66;">)</span>;
 
<span style="font-style: italic; color: orange;">// This program can also be run in the forground with runmode &#8211;no-daemon</span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span>!<span style="color: #0000ff;">$runmode</span><span style="color: #66cc66;">[</span><span style="color: #ff0000;">'no-daemon'</span><span style="color: #66cc66;">]</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
    <span style="font-style: italic; color: orange;">// Spawn Daemon </span>
    System_Daemon::<span style="color: #006600;">start</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;
<span style="color: #66cc66;">}</span>
 
<span style="font-style: italic; color: orange;">// With the runmode &#8211;write-initd, this program can automatically write a </span>
<span style="font-style: italic; color: orange;">// system startup file called: &#8216;init.d&#8217;</span>
<span style="font-style: italic; color: orange;">// This will make sure your daemon will be started on reboot </span>
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span>!<span style="color: #0000ff;">$runmode</span><span style="color: #66cc66;">[</span><span style="color: #ff0000;">'write-initd'</span><span style="color: #66cc66;">]</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
    System_Daemon::<span style="color: #006600;">info</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;not writing an init.d script this time&#8217;</span><span style="color: #66cc66;">)</span>;
<span style="color: #66cc66;">}</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">{</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #66cc66;">(</span><span style="color: #0000ff;">$initd_location</span> = System_Daemon::<span style="color: #006600;">writeAutoRun</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span><span style="color: #66cc66;">)</span> === <span style="font-weight: bold; color: #000000;">false</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
        System_Daemon::<span style="color: #006600;">notice</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;unable to write init.d script&#8217;</span><span style="color: #66cc66;">)</span>;
    <span style="color: #66cc66;">}</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">{</span>
        System_Daemon::<span style="color: #006600;">info</span><span style="color: #66cc66;">(</span>
            <span style="color: #ff0000;">&#8217;sucessfully written startup script: %s&#8217;</span>,
            <span style="color: #0000ff;">$initd_location</span>
        <span style="color: #66cc66;">)</span>;
    <span style="color: #66cc66;">}</span>
<span style="color: #66cc66;">}</span>
 
<span style="font-style: italic; color: orange;">// Run your code</span>
<span style="font-style: italic; color: orange;">// Here comes your own actual code</span>
 
<span style="font-style: italic; color: orange;">// This variable gives your own code the ability to breakdown the daemon:</span>
<span style="color: #0000ff;">$runningOkay</span> = <span style="font-weight: bold; color: #000000;">true</span>;
 
<span style="font-style: italic; color: orange;">// This variable keeps track of how many &#8216;runs&#8217; or &#8216;loops&#8217; your daemon has</span>
<span style="font-style: italic; color: orange;">// done so far. For example purposes, we&#8217;re quitting on 3.</span>
<span style="color: #0000ff;">$cnt</span> = <span style="color: #cc66cc;">1</span>;
 
<span style="font-style: italic; color: orange;">// While checks on 3 things in this case:</span>
<span style="font-style: italic; color: orange;">// - That the Daemon Class hasn&#8217;t reported it&#8217;s dying</span>
<span style="font-style: italic; color: orange;">// - That your own code has been running Okay</span>
<span style="font-style: italic; color: orange;">// - That we&#8217;re not executing more than 3 runs </span>
<span style="color: #b1b100;">while</span> <span style="color: #66cc66;">(</span>!System_Daemon::<span style="color: #006600;">isDying</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span> &amp;&amp; <span style="color: #0000ff;">$runningOkay</span> &amp;&amp; <span style="color: #0000ff;">$cnt</span> &lt;=<span style="color: #cc66cc;">3</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
    <span style="font-style: italic; color: orange;">// What mode are we in?</span>
    <span style="color: #0000ff;">$mode</span> = <span style="color: #ff0000;">&#8216;&#8221;&#8216;</span>.<span style="color: #66cc66;">(</span>System_Daemon::<span style="color: #006600;">isInBackground</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span> ? <span style="color: #ff0000;">&#8221;</span> : <span style="color: #ff0000;">&#8216;non-&#8217;</span> <span style="color: #66cc66;">)</span>.
        <span style="color: #ff0000;">&#8216;daemon&#8221; mode&#8217;</span>;

    <span style="font-style: italic; color: orange;">// Log something using the Daemon class&#8217;s logging facility</span>
    <span style="font-style: italic; color: orange;">// Depending on runmode it will either end up:</span>
    <span style="font-style: italic; color: orange;">//  - In the /var/log/logparser.log</span>
    <span style="font-style: italic; color: orange;">//  - On screen (in case we&#8217;re not a daemon yet)  </span>
    System_Daemon::<span style="color: #006600;">info</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;{appName} running in %s %s/3&#8242;</span>,
        <span style="color: #0000ff;">$mode</span>,
        <span style="color: #0000ff;">$cnt</span>
    <span style="color: #66cc66;">)</span>;

    <span style="font-style: italic; color: orange;">// In the actuall logparser program, You could replace &#8216;true&#8217;</span>
    <span style="font-style: italic; color: orange;">// With e.g. a  parseLog(&#8217;vsftpd&#8217;) function, and have it return</span>
    <span style="font-style: italic; color: orange;">// either true on success, or false on failure.</span>
    <span style="color: #0000ff;">$runningOkay</span> = <span style="font-weight: bold; color: #000000;">true</span>;
    <span style="font-style: italic; color: orange;">//$runningOkay = parseLog(&#8217;vsftpd&#8217;);</span>

    <span style="font-style: italic; color: orange;">// Should your parseLog(&#8217;vsftpd&#8217;) return false, then</span>
    <span style="font-style: italic; color: orange;">// the daemon is automatically shut down.</span>
    <span style="font-style: italic; color: orange;">// An extra log entry would be nice, we&#8217;re using level 3,</span>
    <span style="font-style: italic; color: orange;">// which is critical.</span>
    <span style="font-style: italic; color: orange;">// Level 4 would be fatal and shuts down the daemon immediately,</span>
    <span style="font-style: italic; color: orange;">// which in this case is handled by the while condition.</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span>!<span style="color: #0000ff;">$runningOkay</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
        System_Daemon::<span style="color: #006600;">err</span><span style="color: #66cc66;">(</span><span style="color: #ff0000;">&#8216;parseLog() produced an error, &#8216;</span>.
            <span style="color: #ff0000;">&#8217;so this will be my last run&#8217;</span><span style="color: #66cc66;">)</span>;
    <span style="color: #66cc66;">}</span>

    <span style="font-style: italic; color: orange;">// Relax the system by sleeping for a little bit</span>
    <span style="font-style: italic; color: orange;">// iterate also clears statcache</span>
    System_Daemon::<span style="color: #006600;">iterate</span><span style="color: #66cc66;">(</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">)</span>;

    <span style="color: #0000ff;">$cnt</span>++;
<span style="color: #66cc66;">}</span>
 
<span style="font-style: italic; color: orange;">// Shut down the daemon nicely</span>
<span style="font-style: italic; color: orange;">// This is ignored if the class is actually running in the foreground</span>
System_Daemon::<span style="color: #006600;">stop</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;
</pre>
<h2>Console action: Controlling the Daemon</h2>
<p>Now that we&#8217;ve created an example daemon, it&#8217;s time to fire it up! I&#8217;m going to assume the name of your daemon is <em>logparser</em>. This  can be changed with the statement: <code>System_Daemon::setOption('appName', 'logparser')</code>. But the name of the daemon is very important because it is also used in filenames (like the logfile).</p>
<h3>Execute</h3>
<p>Just make your daemon script executable, and then execute it:</p>
<p><code>chmod a+x ./logparser.php ./logparser.php </code></p>
<h3>Check</h3>
<p>Your daemon has no way of communicating through your console, so check for messages in:</p>
<p><code>tail /var/log/logparser.log </code>And see if it&#8217;s still running:</p>
<p><code>ps uf -C logparser.php </code></p>
<h3>Kill</h3>
<p>Without the <em>start/stop files</em> (see below for howto), you need  to:</p>
<p><code>killall -9 logparser.php </code>Autch.. Let&#8217;s work on those start / stop files, right?</p>
<h3>Start / Stop files (Debian &amp; Ubuntu only)</h3>
<p>Real daemons have an <code>init.d</code> file. Remember you can  restart Apache with the following statement?</p>
<p><code>/etc/init.d/apache2 restart </code>That&#8217;s a lot better than killing. So you should be able to control  your own daemon like this as well:</p>
<p><code>/etc/init.d/logparser stop /etc/init.d/logparser start </code>Well with System_Daemon you can write autostartup files using the  <code>writeAutoRun()</code> method, look:</p>
<p><span style="color: #0000ff;">$path</span> = System_Daemon::<span style="color: #006600;">writeAutoRun</span><span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;On success, this will return the path to the autostartup file:  <code>/etc/init.d/logparser</code>, and you&#8217;re good to go!</p>
<h3>Run on boot</h3>
<p>Surely you want your daemon to run at system boot.. So on Debian &amp; Ubuntu you could type:</p>
<p><code>update-rc.d logparser defaults </code>Done your daemon now starts every time your server boots. Cancel it with:</p>
<p><code>update-rc.d -f logparser remove </code></p>
<h2>Logrotate</h2>
<p><a href="http://pear.php.net/user/ifeghali">Igor Feghali</a> shares  with us a logrotate config file to keep your log files from growing too large. Just place a file in your <code>/etc/logrotate.d/</code>.</p>
<p><code>/var/log/mydaemon.log {    rotate 15    compress    missingok    notifempty    sharedscripts    size 5M    create 644 mydaemon_user mydaemon_group    postrotate        /bin/kill -HUP `cat /var/run/mydaemon/mydaemond.pid 2&gt;/dev/null` 2&gt; /dev/null || true    endscript } </code>Obviously, replace the <code>mydaemon</code> occurances with values  corresponding to your environment. Thanks Igor!</p>
<h2>Troubleshooting</h2>
<p>Here are some issues you may encounter down the road.</p>
<ul>
<li><strong>Don&#8217;t use echo()</strong> **Echo writes to the STDOUT of your current session. If you logout, that  will cause fatal errors and the daemon to die. Use <em>System_Daemon::log()</em> instead.</li>
<li><strong>Connect to MySQL after you <em>start()</em> the daemon.</strong> Otherwise only the parent process will have a MySQL connection, and  since that dies.. It&#8217;s lost and you will get a &#8216;MySQL has gone away&#8217;  error.</li>
<li><strong>Error handling</strong> Good error handling is imperative. Daemons are often mission critical  applications and you don&#8217;t want an uncatched error to bring it to it&#8217;s  knees.
<ul>
<li><strong>Reconnect to MySQL</strong> A connection may be interrupted. Think about network downtime or  lock-ups when your database server makes backups. Whatever the cause:  You don&#8217;t want your daemon to die for this, let it try again later.</li>
<li><strong>PHP error handler</strong> As of <a href="http://pear.php.net/package/System_Daemon/download/0.6.3">0.6.3</a>,  System_Daemon forwards all PHP errors to the log() method, so keep an  eye on your logfile. This behavior can be controlled using the <code>logPhpErrors</code> (true||false) option.</li>
</ul>
</li>
<li><strong>Monit</strong> Monit is a standalone program that can kickstart any daemon, based on  your parameters. Should your daemon fail, monit will mail you and try to  restart it.</li>
<li><strong>Watch that memory</strong> Some classes keep a history of executed commands, sent mails, queries,  whatever. They were designed without knowing they would ever be used in a  daemonized environment. Cause daemons run indefinitely this &#8216;history&#8217; will expand indefinitely.  Since unfortunately your server&#8217;s RAM is not infinite, you will run into  problems at some point. This makes it&#8217;s very important to address these memory &#8216;leaks&#8217; when  building daemons.</li>
<li><strong>Statcache will corrupt your data</strong> If you do a <code>file_exists()</code>, PHP remembers the results to  ease on your disk until the process end. That&#8217;s ok but since the Daemon  process does not end, PHP will not be able to give you up to date  information. As of <a href="http://pear.php.net/package/System_Daemon/download/0.8.0">0.8.0</a> you should call <code>System_Daemon::iterate(2)</code> instead of e.g. <code>sleep(2)</code>,  this will sleep &amp; clear the cache and give you fresh &amp; valid  data.</li>
</ul>
<p>I know I&#8217;m saying MySQL a lot, but you can obviously replace that  with Oracle, MSSQL, PostgreSQL, etc.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.thai2info.com/index.php/archives/105/feed</wfw:commentRss>
		</item>
		<item>
		<title>run php script on startup</title>
		<link>http://blog.thai2info.com/index.php/archives/104</link>
		<comments>http://blog.thai2info.com/index.php/archives/104#comments</comments>
		<pubDate>Sun, 07 Feb 2010 11:04:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.thai2info.com/?p=104</guid>
		<description><![CDATA[Suse appears to use init scripts  to launch apps at start up and you will need to write a custom init script to launch your socket.php script. 
At the bare minimum, you could create an executable script in /etc/rc2.d named S99socket containing

#!/bin/sh
/path/to/php /path/to/socket.php &#38; 
]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: verdana; color: #000000; font-size: x-small;">Suse appears to use init <strong style="color: black; background-color: #bbffff;">script</strong>s  to launch apps at start up and you will need to write a custom init <strong style="color: black; background-color: #bbffff;">script</strong> to launch your socket.<strong style="color: black; background-color: #ffffaa;">php</strong> <strong style="color: black; background-color: #bbffff;">script</strong>. </span></p>
<p><span style="font-family: verdana; color: #000000; font-size: x-small;">At the bare minimum, you could create an executable <strong style="color: black; background-color: #bbffff;">script</strong> in /etc/rc2.d named S99socket c<strong style="color: black; background-color: #ffbbff;">on</strong>taining<br />
</span><code><br />
#!/bin/sh<br />
/path/to/<strong style="color: black; background-color: #ffffaa;">php</strong> /path/to/socket.<strong style="color: black; background-color: #ffffaa;">php</strong> &amp; </code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thai2info.com/index.php/archives/104/feed</wfw:commentRss>
		</item>
		<item>
		<title>Installing !Openmeetings on debian etch</title>
		<link>http://blog.thai2info.com/index.php/archives/103</link>
		<comments>http://blog.thai2info.com/index.php/archives/103#comments</comments>
		<pubDate>Sun, 31 Jan 2010 07:00:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[openmeeting]]></category>

		<guid isPermaLink="false">http://blog.thai2info.com/?p=103</guid>
		<description><![CDATA[First variant  (works with lenny as well):
Download the following  debian package: http://www.expressaas.com/distrib/release/red5-openmeetings_1.0.2760.noarch.deb
And install it using sudo dpkg -i  red5-openmeetings_1.0.2760.noarch.deb command. All additional  utilities, such as Openoffice, Ghostscript, Imagemagick and Swftools  should be installed as described below.
Second variant (outdated):
this sample is rather outdated 
the installation  procedure (if you forget of [...]]]></description>
			<content:encoded><![CDATA[<h2><a name="First_variant_(works_with_lenny_as_well):">First variant  (works with lenny as well):</a></h2>
<p><a name="First_variant_(works_with_lenny_as_well):">Download the following  debian package: </a><a rel="nofollow" href="http://www.expressaas.com/distrib/release/red5-openmeetings_1.0.2760.noarch.deb">http://www.expressaas.com/distrib/release/red5-openmeetings_1.0.2760.noarch.deb</a></p>
<p>And install it using <strong>sudo dpkg -i  red5-openmeetings_1.0.2760.noarch.deb</strong> command. All additional  utilities, such as Openoffice, Ghostscript, Imagemagick and Swftools  should be installed as described below.</p>
<h2><a name="Second_variant_(outdated):">Second variant (outdated):</a></h2>
<p><a name="Second_variant_(outdated):"><em>this sample is rather outdated</em> </a></p>
<p><a name="Second_variant_(outdated):">the installation  procedure (if you forget of all 3th party requirements) is as simple as  the following: </a></p>
<p><a name="Second_variant_(outdated):">donwload  openmeetings-package (you can download it into your home-directory)<br />
unzip it<br />
cd /openmeetings-package/webapps/openmeetings/conf and  configure the hibernate.cfg.xml<br />
cd up again to   /openmeetings-package/ run the red5.sh</p>
<p>that is all! </a></p>
<p><a name="Second_variant_(outdated):">no copy of any dirs, no /etc/init.d/,  ^^ In doubt see what is written down in here:</a><a rel="nofollow" href="http://code.google.com/p/openmeetings/wiki/InstallationOpenMeetings">http://code.google.com/p/openmeetings/wiki/InstallationOpenMeetings</a> There is no mention of any init.d-script or other copy actions.</p>
<hr />In  this how-to I&#8217;m going to descript way to install OpenMeetings on debian  GNU/Linux Etch (4.0), Steps are following way:</p>
<ul>
<li>What we  need!</li>
<li>Install MySQL</li>
<li>Install xvfb and OpenOffice.org</li>
<li>Install  ImageMagic &amp; !Ghostscript</li>
<li>Install SwfTools</li>
<li>Install  Java and red5</li>
<li>Download openlazslo</li>
<li>Install  OpenMeetings</li>
<li>Installing must new version?</li>
<li>Configure  OpenMeetings and place files</li>
<li>Start every thing</li>
<li>!Troobleshooting</li>
<li>Author</li>
</ul>
<h2><a name="What_We_Need">What We Need</a></h2>
<p><a name="What_We_Need">In this article I will use </a><a rel="nofollow" href="http://en.wikipedia.org/wiki/Aptitude_%28program%29">aptitude</a> to install  packages, if you don&#8217;t have  apptitude please install it before going forward :</p>
<pre class="prettyprint"><span class="pln">$su
</span><span class="com">#apt-get update</span><span class="pln">
</span><span class="com">#apt-get install aptitude</span></pre>
<p>After  aptitude we need  <a rel="nofollow" href="http://www.debian.org/">Debian  GNU/Linux</a>, I use version 4.0 (code name Etch), befor installing any  thing else I recommend you to create a directory and manage every thing  from there:</p>
<pre class="prettyprint"><span class="com">#su</span><span class="pln">
</span><span class="com">#mkdir /root/tmpOpenMeetings/</span><span class="pln">
</span><span class="com">#cd  /root/tmpOpenMeetings/</span></pre>
<h2><a name="Install_!MySQL">Install !MySQL</a></h2>
<p><a name="Install_!MySQL">OpenMeetings can work with wide range of  databases, I will install OpenMeetings with </a><a rel="nofollow" href="http://en.wikipedia.org/wiki/MySQL">MySQL</a>, to   install !MySQL server:</p>
<pre class="prettyprint"><span class="pln">aptitude install mysql</span><span class="pun">-</span><span class="pln">server</span></pre>
<p>Add/edit  the following lines to /etc/mysql/my.conf to enable localization:</p>
<pre class="prettyprint"><span class="pun">[</span><span class="pln">mysqld</span><span class="pun">]</span><span class="pln">
</span><span class="kwd">default</span><span class="pun">-</span><span class="pln">character</span><span class="pun">-</span><span class="kwd">set</span><span class="pun">=</span><span class="pln">utf8
character</span><span class="pun">-</span><span class="kwd">set</span><span class="pun">-</span><span class="pln">server</span><span class="pun">=</span><span class="pln">utf8</span></pre>
<h2><a name="Install_xvfb_and_OpenOffice">Install xvfb and OpenOffice</a></h2>
<p><a name="Install_xvfb_and_OpenOffice">If you would like exchange  Presentation and Office documentation in OpenMeetings, you will nedd  xvfb and </a><a rel="nofollow" href="http://en.wikipedia.org/wiki/OpenOffice.org">OpenOffice.org</a></p>
<pre class="prettyprint"><span class="com">#aptitude install xvfb  openoffice.org</span></pre>
<p>Then  edit Setup.xcu:</p>
<pre class="prettyprint"><span class="com">#vim  /usr/lib/openoffice/share/registry/data/org/openoffice/Setup.xcu</span></pre>
<p>You  should insert following lines after:  &lt;node oor:name=&#8221;Office&#8221;&gt;:</p>
<pre class="prettyprint"><span class="pln">    </span><span class="tag">&lt;prop</span><span class="pln"> </span><span class="atn">oor:name</span><span class="pun">=</span><span class="atv">&#8220;ooSetupConnectionURL&#8221;</span><span class="pln"> </span><span class="atn">oor:type</span><span class="pun">=</span><span class="atv">&#8220;xs:string&#8221;</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;value&gt;</span><span class="pln">socket,host=localhost,port=8100;urp</span><span class="tag">&lt;/value&gt;</span><span class="pln">
    </span><span class="tag">&lt;/prop&gt;</span></pre>
<h2><a name="Install_and__Ghostscript">Install ImageMagick and  Ghostscript</a></h2>
<p><a rel="nofollow" href="http://en.wikipedia.org/wiki/ImageMagic">ImageMagick</a> is a software suite for image manipulation and display, supporting  close to 100 image formats. It is mainly used to perform various  transformation and conversion operations on images and <a rel="nofollow" href="http://ghostscript.com/awki">Ghostscript</a> is a  suite of software based on an interpreter for Adobe Systems&#8217; PostScript  and Portable Document Format (PDF) page description languages.</p>
<blockquote><p>To  install this tools run:</p></blockquote>
<pre class="prettyprint"><span class="pln"> </span><span class="com">#aptitude install imagemagick  gs-gpl</span></pre>
<h2><a name="Install_SWFTools">Install SWFTools</a></h2>
<p><a name="Install_SWFTools"> </a><a rel="nofollow" href="http://www.swftools.org/">SWFTools</a> s a collection of SWF manipulation and  creation utilities written by Rainer Böhme and Matthias Kramm. It is  released under the GPL.</p>
<pre class="prettyprint"><span class="com">#aptitude install swftools</span></pre>
<p>If  you get this message: &#8220;Couldn&#8217;t find any package whose name or  description matched &#8220;swftools&#8221; &#8221; please download swftools directly from  web with running:</p>
<pre class="prettyprint"><span class="com">#wget   http://ftp.it.debian.org/debian/pool/main/s/swftools/swftools_0.8.1-1_i386.deb</span></pre>
<p>befor  installing this ackage should install &#8220;libart-2.0-2 &#8221; so run:</p>
<pre class="prettyprint"><span class="com">#aptitude install libart-2.0-2</span></pre>
<p>and  now install SWFTools:</p>
<pre class="prettyprint"><span class="com">#dpkg -i swftools_0.8.1-1_i386.deb</span></pre>
<h2><a name="Install_Java_and_Red5">Install Java and Red5</a></h2>
<p><a rel="nofollow" href="http://osflash.org/red5">red5</a> is a Open Source  Flash Server that OpenMeetings based on, so you should install it, and  befor installing red5 should install Java Runtime Environment and Java  development Kit run:</p>
<pre class="prettyprint"><span class="com">#aptitude install sun-java5-bin</span><span class="pln">
</span><span class="com">#aptitude install  sun-java5-demo</span><span class="pln">
</span><span class="com">#</span></pre>
<p>If  aptitude gives you any error, please download all file with wget and  then install</p>
<pre class="prettyprint"><span class="com">#wget http://ftp.tr.debian.org/debian/pool/non-free/s/sun-java5/sun-java5-demo_1.5.0-13-1_i386.deb</span><span class="pln">
</span><span class="com">#wget http://ftp.de.debian.org/debian/pool/non-free/s/sun-java5/sun-java5-jdk_1.5.0-14-1etch1_i386.deb</span><span class="pln">
</span><span class="com"># wget http://ftp.de.debian.org/debian/pool/non-free/s/sun-java5/sun-java5-bin_1.5.0-15-1_i386.deb</span><span class="pln">
</span><span class="com">#dpkg -i sun-java5-demo_1.5.0-13-1_i386.deb sun-java5-jdk_1.5.0-14-1etch1_i386.deb sun-java5-bin_1.5.0-15-1_i386.deb </span></pre>
<p>Now  download red5 for Debian GNU/Linux and install it:</p>
<pre class="prettyprint"><span class="com">#wget http://dl.fancycode.com/red5/0.6.3/debian/red5_0.6.3-1_all.deb</span><span class="pln">
</span><span class="com">#dpkg -i red5_0.6.3-1_all.deb</span></pre>
<h2><a name="openlazslo">openlazslo</a></h2>
<p><a rel="nofollow" href="http://openlaszlo.org/">OpenLaszlo</a> is an open  source platform for the development and delivery of rich Internet  applications. to installing it, run:</p>
<pre class="prettyprint"><span class="com">#wget http://download.openlaszlo.org/4.0.6/openlaszlo-4.0.6-unix.tar.gz</span><span class="pln">
</span><span class="com">#tar -xvf openlaszlo-4.0.6-unix.tar.gz</span><span class="pln">
</span><span class="com">#mv lps-4.0.6/ /opt/</span></pre>
<p><strong> Note: there is no need to install OpenLaszlo if you only use the  application but don&#8217;t want to modify it. </strong></p>
<p><strong> Note:  you might would like to have a look at this shell script to  start/stop/restart/status, if yes you can use <a rel="nofollow" href="http://wiki.conzul.de/index.php/OpenOffice2.x">this  how-to</a>. </strong></p>
<h2><a name="Installing_OpenMeetings">Installing OpenMeetings</a></h2>
<p><a name="Installing_OpenMeetings">Huraaa, making infrastructure is  finished, now we are going to download latest OpenMeeting release and  instaling it: </a></p>
<pre class="prettyprint"><a name="Installing_OpenMeetings"><span class="com">#wget http://openmeetings.googlecode.com/files/openmeetings051.zip</span><span class="pln">
</span><span class="com">#unzip openmeetings051.zip</span></a></pre>
<p><a name="Installing_OpenMeetings">To installing OpenMeetings you should  tell OM where is your DataBase server and  as I use MySQL as my Server, steps are like this: </a></p>
<pre class="prettyprint"><a name="Installing_OpenMeetings"><span class="com">#cp openmeetings/conf/mysql_hibernate.cfg.xml openmeetings/conf/hibernate.cfg.xml</span></a></pre>
<p><a name="Installing_OpenMeetings">Now edit file and config your database: </a></p>
<pre class="prettyprint"><a name="Installing_OpenMeetings"><span class="com">#vim openmeetings/conf/hibernate.cfg.xml</span></a></pre>
<p><a name="Installing_OpenMeetings">Now change : </a></p>
<pre class="prettyprint"><a name="Installing_OpenMeetings"><span class="pln">            </span><span class="tag">&lt;property</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">&#8220;connection.username&#8221;</span><span class="tag">&gt;&lt;DB_USER&gt;&lt;/property&gt;</span><span class="pln">
            </span><span class="tag">&lt;property</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">&#8220;connection.password&#8221;</span><span class="tag">&gt;&lt;DB_PASSWORD&gt;&lt;/property&gt;</span><span class="pln">
            </span><span class="tag">&lt;property</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">&#8220;connection.url&#8221;</span><span class="tag">&gt;</span><span class="pln">jdbc:mysql://</span><span class="tag">&lt;DB_HOST&gt;</span><span class="pln">/</span><span class="tag">&lt;DB_NAME&gt;&lt;/property&gt;</span></a></pre>
<p><a name="Installing_OpenMeetings">For example my config look likes: </a></p>
<pre class="prettyprint"><a name="Installing_OpenMeetings"><span class="pln"> </span><span class="com">&lt;!&#8211; User  / Password &#8211;&gt;</span><span class="pln">
                </span><span class="tag">&lt;property</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">&#8220;connection.username&#8221;</span><span class="tag">&gt;</span><span class="pln">root</span><span class="tag">&lt;/property&gt;</span><span class="pln">
                </span><span class="tag">&lt;property</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">&#8220;connection.password&#8221;</span><span class="tag">&gt;</span><span class="pln">dj76shwrsh16xsvak1</span><span class="tag">&lt;/property&gt;</span><span class="pln">

                </span><span class="com">&lt;!&#8211; Database Settings &#8211;&gt;</span><span class="pln">
                </span><span class="tag">&lt;property</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">&#8220;connection.driver_class&#8221;</span><span class="tag">&gt;</span><span class="pln">com.mysql.jdbc.Driver</span><span class="tag">&lt;/property&gt;</span><span class="pln">
                </span><span class="tag">&lt;property</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">&#8220;dialect&#8221;</span><span class="tag">&gt;</span><span class="pln">org.hibernate.dialect.MySQLInnoDBDialect</span><span class="tag">&lt;/property&gt;</span><span class="pln">
                </span><span class="tag">&lt;property</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">&#8220;connection.url&#8221;</span><span class="tag">&gt;</span><span class="pln">jdbc:mysql://localhost/openmeetings?useUnicode=true&amp;amp;createDatabaseIfNotExist=true&amp;amp;characterEncoding=utf-8</span><span class="tag">&lt;/property&gt;</span><span class="pln">
</span></a></pre>
<h2><a name="Installing_Must_new_Version?">Installing Must new Version?</a></h2>
<p><a name="Installing_Must_new_Version?">If you would like get must new  version, I mean the version is under development, you should get a  Snapshot from current source code, to do this follow this steps, if you  don&#8217;t like to have any thing more than OpenMeetings latest version or  don&#8217;t know what&#8217;s snapshot, skip this step. </a></p>
<ul>
<li><a name="Installing_Must_new_Version?">nstall Subversion if you don&#8217;t have: </a></li>
</ul>
<p><a name="Installing_Must_new_Version?"> </a></p>
<pre class="prettyprint"><a name="Installing_Must_new_Version?"><span class="com">#aptitude install subversion</span></a></pre>
<p><a name="Installing_Must_new_Version?">Get (checkout) OpenMeetings latest  snapshot: </a></p>
<pre class="prettyprint"><a name="Installing_Must_new_Version?"><span class="com">#svn checkout http://openmeetings.googlecode.com/svn/branches/dev/</span></a></pre>
<p><a name="Installing_Must_new_Version?">I will rename dev to  !OpenMeetingsFromSVN and then replace what updated in snapshot (from  subversion) with what should be out of date in orginal openmeetings file  downloaded from OpenMeetings and OpnLazslo: </a></p>
<pre class="prettyprint"><a name="Installing_Must_new_Version?"><span class="com"># mv dev/ OpenMeetingsFromSVN</span><span class="pln">
</span><span class="com">#cp -r OpenMeetingsFromSVN/laszlo/client/xmlcrm/videoconference/ /opt/lps-4.0.6/Server/lps-4.0.6/ </span></a></pre>
<h2><a name="Configure_OpenMeetings">Configure OpenMeetings</a></h2>
<p><a name="Configure_OpenMeetings">Now, first I update my language files: </a></p>
<pre class="prettyprint"><a name="Configure_OpenMeetings"><span class="com">#cp OpenMeetingsFromSVN/xmlcrm/java/webapp/openmeetings/languages/*  openmeetings/languages/.</span></a></pre>
<p><a name="Configure_OpenMeetings">Ok, It&#8217;s time to place my OpenMeting in  red5 document root to serving: </a></p>
<pre class="prettyprint"><a name="Configure_OpenMeetings"><span class="com">#cp -r openmeetings/ /usr/lib/red5/webapps/</span></a></pre>
<h2><a name="Start_every_thing">Start every thing</a></h2>
<p><a name="Start_every_thing">Now time to start every thing we installed, I  will start OpenOffice.org at first and then OpenLazslo and  will start  red5 server: </a></p>
<pre class="prettyprint"><a name="Start_every_thing"><span class="com">#xvfb-run &#8211;server-args=&#8217;-screen 0 800&#215;600x16&#8242; -a /usr/lib/openoffice/program/soffice -headless -nologo -norestore &amp; </span><span class="pln">
</span><span class="com">#export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun</span><span class="pln">
</span><span class="com">#/opt/lps-4.0.6/Server/tomcat-5.0.24/bin/startup.sh</span><span class="pln">
</span><span class="com">#/etc/init.d/red5 start</span></a></pre>
<p><a name="Start_every_thing">Instead of using a virtual frame buffer you  may install and use a </a><a rel="nofollow" href="http://www.mail-archive.com/openmeetings-dev@googlegroups.com/msg01203/daemons.tar.gz">/etc/init.d/ooomeetings</a> service.</p>
<p>The last  part of instalation is web based, with your web browser (Firefox, Opera,  IE, &#8230;) and servers IP address and port 5080 (default):</p>
<p><a rel="nofollow" href="http://$your_ip:5080/openmeetings/Install">http://$YOUR_IP:5080/openmeetings/Install</a></p>
<p>For example:  <a rel="nofollow" href="http://127.0.0.1:5080/openmeetings/Install">http://127.0.0.1:5080/openmeetings/Install</a></p>
<p>after putting information in forms, OpenMeetings will initialize  a DataBase (based on information that we gived to him) and now you can  access OpenMeetings first page at:</p>
<p><a rel="nofollow" href="http://$your_ip:8080/lps-4.0.6/videoconference/">http://$YOUR_IP:8080/lps-4.0.6/videoconference/</a></p>
<p>For example:  <a rel="nofollow" href="http://127.0.0.1:5080/openmeetings/">http://127.0.0.1:5080/openmeetings/</a></p>
<p>Congratulation, OpenMeetings is ready to use <img src='http://blog.thai2info.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2><a name="Touble_Shooting">Touble Shooting</a></h2>
<p><a name="Touble_Shooting">If you get any message about locales or fonts,  you can use : </a></p>
<pre class="prettyprint"><a name="Touble_Shooting"><span class="com">#dpkg-reconfigure locales</span><span class="pln">
</span><span class="com">#aptitude install xfonts-base</span></a></pre>
<p><a name="Touble_Shooting">If you would like to change rtmp host, you can  use: </a></p>
<pre class="prettyprint"><a name="Touble_Shooting"><span class="pln">vim  </span><span class="pun">/</span><span class="pln">opt</span><span class="pun">/</span><span class="pln">lps</span><span class="pun">-</span><span class="lit">4.0</span><span class="pun">.</span><span class="lit">6</span><span class="pun">/</span><span class="typ">Server</span><span class="pun">/</span><span class="pln">lps</span><span class="pun">-</span><span class="lit">4.0</span><span class="pun">.</span><span class="lit">6</span><span class="pun">/</span><span class="pln">videoconference</span><span class="pun">/</span><span class="pln">config</span><span class="pun">.</span><span class="pln">xml </span></a></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.thai2info.com/index.php/archives/103/feed</wfw:commentRss>
		</item>
		<item>
		<title>PG Map</title>
		<link>http://blog.thai2info.com/index.php/archives/102</link>
		<comments>http://blog.thai2info.com/index.php/archives/102#comments</comments>
		<pubDate>Fri, 06 Nov 2009 10:52:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.thai2info.com/?p=102</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://www.thai2info.com/develop/gmap2/pg.html" width="600" height="480" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thai2info.com/index.php/archives/102/feed</wfw:commentRss>
		</item>
		<item>
		<title>Netcall Setup</title>
		<link>http://blog.thai2info.com/index.php/archives/101</link>
		<comments>http://blog.thai2info.com/index.php/archives/101#comments</comments>
		<pubDate>Fri, 06 Nov 2009 10:32:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.thai2info.com/?p=101</guid>
		<description><![CDATA[TOT Netcall for Nokia Phone 
]]></description>
			<content:encoded><![CDATA[<p><a title="View TOT Netcall for Nokia Phone on Scribd" href="http://www.scribd.com/doc/22193779/TOT-Netcall-for-Nokia-Phone" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;">TOT Netcall for Nokia Phone</a> <object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_231313859870000" name="doc_231313859870000" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle"	height="500" width="450" ><param name="movie"	value="http://d1.scribdassets.com/ScribdViewer.swf?document_id=22193779&#038;access_key=key-m74yt9ugmjq2vnj85xx&#038;page=1&#038;version=1&#038;viewMode=list"><param name="quality" value="high"><param name="play" value="true"><param name="loop" value="true"><param name="scale" value="showall"><param name="wmode" value="opaque"><param name="devicefont" value="false"><param name="bgcolor" value="#ffffff"><param name="menu" value="true"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><param name="salign" value=""><param name="mode" value="list"><embed src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=22193779&#038;access_key=key-m74yt9ugmjq2vnj85xx&#038;page=1&#038;version=1&#038;viewMode=list" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_231313859870000_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle" mode="list" height="500" width="450"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thai2info.com/index.php/archives/101/feed</wfw:commentRss>
		</item>
		<item>
		<title>การใช้ Google Map Api หาเส้นทาง จากจุดสองจุด</title>
		<link>http://blog.thai2info.com/index.php/archives/99</link>
		<comments>http://blog.thai2info.com/index.php/archives/99#comments</comments>
		<pubDate>Thu, 15 Oct 2009 03:53:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[javascript]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[google map]]></category>

		<guid isPermaLink="false">http://blog.thai2info.com/?p=99</guid>
		<description><![CDATA[


&#60;?php
require(&#039;GoogleMapAPI.class.php&#039;);
$map = new GoogleMapAPI(&#039;map1&#039;);
$map-&#62;setAPIKey(&#039;ABQIAAAAPOHd09dXhJtbKHeZpxlh6BTdM_BGb_HRDyhTa-dAuFdRUQ382BTsqAFfGu_x3jaT_hgEvzyEiREMIg&#039;);
$map-&#62;setMapType(&#039;map&#039;);
$map-&#62;enableInfoWindow();
$map-&#62;enableDirections();
$map-&#62;setInfoWindowTrigger(&#039;mouseover&#039;);
$map-&#62;setWidth(&#039;400px&#039;);
$map-&#62;setHeight(&#039;400px&#039;);
$map-&#62;setFT(&#039;13.786987220018625,100.60581922531128&#039;,&#039;13.780276823001238,100.60309410095215&#039;);

?&#62;

    &#60;html &#34;&#62;
    &#60;head&#62;
    &#60;?php $map-&#62;printHeaderJS(); ?&#62;
    &#60;?php $map-&#62;printMapJS(); ?&#62;
    &#60;!-- necessary for google maps polyline drawing in IE --&#62;
    &#60;style type=&#34;text/css&#34;&#62;
      v\:* {
      [...]]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://www.thai2info.com/develop/gmap2/mymap.php" width="600" height="600" style="width: 600px; height: 600px;" frameborder="0" scrolling="no"></iframe></p>
<pre name="code" class="php">

&lt;?php
require(&#039;GoogleMapAPI.class.php&#039;);
$map = new GoogleMapAPI(&#039;map1&#039;);
$map-&gt;setAPIKey(&#039;ABQIAAAAPOHd09dXhJtbKHeZpxlh6BTdM_BGb_HRDyhTa-dAuFdRUQ382BTsqAFfGu_x3jaT_hgEvzyEiREMIg&#039;);
$map-&gt;setMapType(&#039;map&#039;);
$map-&gt;enableInfoWindow();
$map-&gt;enableDirections();
$map-&gt;setInfoWindowTrigger(&#039;mouseover&#039;);
$map-&gt;setWidth(&#039;400px&#039;);
$map-&gt;setHeight(&#039;400px&#039;);
$map-&gt;setFT(&#039;13.786987220018625,100.60581922531128&#039;,&#039;13.780276823001238,100.60309410095215&#039;);

?&gt;

    &lt;html &quot;&gt;
    &lt;head&gt;
    &lt;?php $map-&gt;printHeaderJS(); ?&gt;
    &lt;?php $map-&gt;printMapJS(); ?&gt;
    &lt;!-- necessary for google maps polyline drawing in IE --&gt;
    &lt;style type=&quot;text/css&quot;&gt;
      v\:* {
        behavior:url(#default#VML);
      }
    &lt;/style&gt;
    &lt;/head&gt;
    &lt;body onload=&quot;onLoad()&quot;&gt;
    &lt;table border=0&gt;
    &lt;tr&gt;&lt;td&gt;
    &lt;?php $map-&gt;printMap(); ?&gt;

    &lt;/td&gt;
	&lt;td&gt;
    &lt;?php $map-&gt;printSidebar(); ?&gt;
	  &lt;div id=&quot;route&quot;&gt;&lt;/div&gt;
    &lt;/td&gt;
	&lt;/tr&gt;
    &lt;/table&gt;

    &lt;/body&gt;
    &lt;/html&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.thai2info.com/index.php/archives/99/feed</wfw:commentRss>
		</item>
		<item>
		<title>MySql Trigger - Basic</title>
		<link>http://blog.thai2info.com/index.php/archives/98</link>
		<comments>http://blog.thai2info.com/index.php/archives/98#comments</comments>
		<pubDate>Thu, 15 Oct 2009 03:38:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[cdr mysql]]></category>

		<guid isPermaLink="false">http://blog.thai2info.com/?p=98</guid>
		<description><![CDATA[Trigger คือการแทรกการกระทำ (Method/Function) ลงไว้ใน Database โดยสามารถใส่เงื่อนไขต่างๆได้เหมือนกับภาษาโปรแกรมทั่วไปครับ โดยเมื่อเกิด Query ใน Mysql แล้วตัว Database จะทำการไล่ Check ว่ามี Trigger ไหนตรงตามเงื่อนไขบ้าง และเรียกใช้งาน

การใช้ Trigger เป็นเหมือนดาบสองคม มีทั้งข้อดีแล้วข้อเสียครับ จะแจกแจงคร่าวๆเท่าที่พอนึกออกไว้ให้ครับ
+ ดูดีมีชาติตระกูล เร็ว (เร็วกว่าที่ส่งข้อมูลไปๆมาๆระหว่าง Mysql กับ Php/Server-side script อื่นๆ)
+ ทำบางอย่างที่ทำด้วยโค้ด Server-side script มาตราฐานไม่ได้ หรือไม่สะดวกนัก โดยการ Hook เข้าไปในระบบของ DB เลย
- Debug ยาก ยิ่งมีภาษาเพิ่มเข้ามาอีก ยิ่งเพิ่มความปวดหัว
- ยึดติดกับ Platform เนื่องจาก Trigger ไม่มีมาตราฐานชัดเจน ทำให้เมื่อย้ายไปใช้ตัวอื่นจะต้องศึกษาใหม่
Replacement
จริงๆ ในหลายๆกรณีก็ไม่จำเป็นต้องใช้ Trigger เช่นการ Update Table [...]]]></description>
			<content:encoded><![CDATA[<p>Trigger คือการแทรกการกระทำ (Method/Function) ลงไว้ใน Database โดยสามารถใส่เงื่อนไขต่างๆได้เหมือนกับภาษาโปรแกรมทั่วไปครับ โดยเมื่อเกิด Query ใน Mysql แล้วตัว Database จะทำการไล่ Check ว่ามี Trigger ไหนตรงตามเงื่อนไขบ้าง และเรียกใช้งาน</p>
<div>
<p>การใช้ Trigger เป็นเหมือนดาบสองคม มีทั้งข้อดีแล้วข้อเสียครับ จะแจกแจงคร่าวๆเท่าที่พอนึกออกไว้ให้ครับ</p>
<p>+ ดูดีมีชาติตระกูล เร็ว (เร็วกว่าที่ส่งข้อมูลไปๆมาๆระหว่าง Mysql กับ Php/Server-side script อื่นๆ)</p>
<p>+ ทำบางอย่างที่ทำด้วยโค้ด Server-side script มาตราฐานไม่ได้ หรือไม่สะดวกนัก โดยการ Hook เข้าไปในระบบของ DB เลย</p>
<p>- Debug ยาก ยิ่งมีภาษาเพิ่มเข้ามาอีก ยิ่งเพิ่มความปวดหัว</p>
<p>- ยึดติดกับ Platform เนื่องจาก Trigger ไม่มีมาตราฐานชัดเจน ทำให้เมื่อย้ายไปใช้ตัวอื่นจะต้องศึกษาใหม่</p>
<h2>Replacement</h2>
<p>จริงๆ ในหลายๆกรณีก็ไม่จำเป็นต้องใช้ Trigger เช่นการ Update Table ที่เป็น Foreign key โดยสามารถใช้คำสั่ง Cascade ช่วยได้</p>
<p><a href="http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html">http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html</a></p>
<h2>Mysql Trigger พื้นฐาน</h2>
<p><strong>หน้าตาตัวอย่าง Trigger</strong><code>CREATE TRIGGER trigger_name BEFORE UPDATE ON table_name FOR EACH ROW BEGIN IF NEW.dirty=0 OR NEW.dirty=1 THEN SET NEW.dirty=1; ELSE SET NEW.dirty=0; END IF; END;</code></p>
<ul>
<li><strong>CREATE TRIGGER trigger_name</strong> คำสั่งสร้าง Trigger</li>
<li><strong>BEFORE UPDATE </strong>Event หลักๆที่เราสามารถ Hook trigger ของเราเข้าไปได้ ได้แก่ INSERT, UPDATE, DELETE โดยสามารถเลือกว่าจะทำการ Hook ก่อนหรือหลัง (BEFORE / AFTER) Query เหล่านั้นได้</li>
<li><strong>ON table_name</strong> เลือก Table ที่ต้องการให้ Trigger ทำงาน</li>
<li><strong></strong></li>
<li><strong></strong>หมายถึงข้อมูลเก่าก่อนที่จะเกิดการรัน Query นั้นๆ</li>
<li><strong></strong></li>
<li>นอกจากนี้ยังสามารถแทรก Query มาตราฐาน (INSERT,UPDATE,DELETE และอื่นๆ) ลงใน Trigger ได้เลยอีกด้วย ซึ่งเราสามารถนำตัวแปร ROW,OLD,NEW มาใช้งานได้เช่นกัน</li>
</ul>
<h2>สร้าง Trigger บน phpMyAdmin</h2>
<p>ถ้าได้ลองเอาโค้ดตัวอย่างไปลอง Run ใน phpMyAdmin จะพบว่า<strong>ไม่สามารถทำงานได้</strong> ด้วย Error ที่อ่านไม่ค่อยจะเข้าใจนัก</p>
<p>เหตุผลphpMyAdmin ไม่สามารถ Run คำสั่งนี้ได้ เนื่องจากเกิดการสับสนเรื่อง Delimiter ของ Mysql กับ คำสั่งใน Trigger</p>
<p>วิธีการแก้ไข แก้ได้ด้วยการ เปลี่ยน Delimiter เป็นตัวอักษรอื่นแทน semicolon “;” ตามรูป</p>
<p><img class="aligncenter size-full wp-image-65" title="เปลี่ยน Delimiter ใน phpMyAdmin" src="http://blog.levelup.in.th/wp-content/uploads/2009/06/picture-9.png" alt="เปลี่ยน Delimiter ใน phpMyAdmin" width="462" height="380" /></p>
<p>ในตัวอย่างเปลี่ยนเป็น ;; แทนครับ โดยถ้าหากเราต้องการสั่งให้ phpMyAdmin ทำงานหลายๆ Query พร้อมกันก็ให้ใส่ ;; แทน ;</p>
<p>credit:<a href="http://blog.levelup.in.th/2009/06/29/mysql-trigger-basicmysql-trigger-basic/">http://blog.levelup.in.th/2009/06/29/mysql-trigger-basicmysql-trigger-basic/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.thai2info.com/index.php/archives/98/feed</wfw:commentRss>
		</item>
		<item>
		<title>ติดตั้ง Vdo Web conference</title>
		<link>http://blog.thai2info.com/index.php/archives/97</link>
		<comments>http://blog.thai2info.com/index.php/archives/97#comments</comments>
		<pubDate>Thu, 08 Oct 2009 10:37:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Asterisk]]></category>

		<category><![CDATA[web conference]]></category>

		<guid isPermaLink="false">http://blog.thai2info.com/?p=97</guid>
		<description><![CDATA[InstallingBigBlueButton
How to install BigBlueButton like a real developer.  

These instructions will walk through how to install BigBlueButton from source onto Ubuntu. If you are using CentOS, seeInstallingBigBlueButtonCentOS. In most cases, you&#8217;ll want to install from packages, but if you want to really understand how BigBlueButton is setup, the following steps will show you how to install each [...]]]></description>
			<content:encoded><![CDATA[<div id="wikiheader"><span>InstallingBigBlueButton</span></p>
<div>How to install BigBlueButton like a real developer. <img src='http://blog.thai2info.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </div>
</div>
<p>These instructions will walk through how to install <a href="http://code.google.com/p/bigbluebutton/wiki/BigBlueButton">BigBlueButton</a> from source onto Ubuntu. If you are using CentOS, see<a href="http://code.google.com/p/bigbluebutton/wiki/InstallingBigBlueButtonCentOS">InstallingBigBlueButtonCentOS</a>. In most cases, you&#8217;ll want to install from <a rel="nofollow" href="http://code.google.com/p/bigbluebutton/wiki/InstallationUbuntu">packages</a>, but if you want to really understand how <a href="http://code.google.com/p/bigbluebutton/wiki/BigBlueButton">BigBlueButton</a> is setup, the following steps will show you how to install each component.</p>
<p>To start, you&#8217;ll need a computer running Ubuntu &#8212; either a physical machine or a virtual machine (VM). The easiest way to start with a VM images is to download a Ubuntu VM image from <a rel="nofollow" href="http://www.vmware.com/appliances/directory/va/147323/download">http://www.vmware.com/appliances/directory/va/147323/download</a> and start it in VMWare Player</p>
<p>The only prerequisite is that your Ubuntu machine has a network connection.</p>
<ul>
<li>To start, check if you have a network connection</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> ping www</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">google</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">com

</span></span><span class="typ"><span class="typ">If</span></span><span class="pln"><span class="pln"> you </span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> an error saying yout eth0 </span></span><span class="kwd"><span class="kwd">is</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">not</span></span><span class="pln"><span class="pln"> connected</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">then</span></span><span class="pln"><span class="pln"> fix it </span></span><span class="kwd"><span class="kwd">by</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">

  </span></span><span class="typ"><span class="typ">Check</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">if</span></span><span class="pln"><span class="pln"> it </span></span><span class="kwd"><span class="kwd">is</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">using</span></span><span class="pln"><span class="pln"> eth1 

root@ubuntu904server</span></span><span class="pun"><span class="pun">:</span></span><span class="str"><span class="str">/usr/</span></span><span class="kwd"><span class="kwd">local</span></span><span class="com"><span class="com"># ifconfig -a</span></span><span class="pln"><span class="pln">
eth1      </span></span><span class="typ"><span class="typ">Link</span></span><span class="pln"><span class="pln"> encap</span></span><span class="pun"><span class="pun">:</span></span><span class="typ"><span class="typ">Ethernet</span></span><span class="pln"><span class="pln">  </span></span><span class="typ"><span class="typ">HWaddr</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">00</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0c</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">29</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">dd</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">b4</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">51</span></span><span class="pln"><span class="pln">
          inet addr</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">192.168</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0.154</span></span><span class="pln"><span class="pln">  </span></span><span class="typ"><span class="typ">Bcast</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">192.168</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0.255</span></span><span class="pln"><span class="pln">  </span></span><span class="typ"><span class="typ">Mask</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">255.255</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">255.0</span></span><span class="pln"><span class="pln">
          inet6 addr</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln"> fe80</span></span><span class="pun"><span class="pun">::</span></span><span class="lit"><span class="lit">20c</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">29ff</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">fedd</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">b451</span></span><span class="pun"><span class="pun">/</span></span><span class="lit"><span class="lit">64</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Scope</span></span><span class="pun"><span class="pun">:</span></span><span class="typ"><span class="typ">Link</span></span><span class="pln"><span class="pln">
          UP BROADCAST RUNNING MULTICAST  MTU</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">1500</span></span><span class="pln"><span class="pln">  </span></span><span class="typ"><span class="typ">Metric</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">1</span></span><span class="pln"><span class="pln">
          RX packets</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">4080349</span></span><span class="pln"><span class="pln"> errors</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> dropped</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> overruns</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> frame</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln">
          TX packets</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">3932137</span></span><span class="pln"><span class="pln"> errors</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> dropped</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> overruns</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> carrier</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln">
          collisions</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> txqueuelen</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">1000</span></span><span class="pln"><span class="pln">
          RX bytes</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">1216680270</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">(</span></span><span class="lit"><span class="lit">1.2</span></span><span class="pln"><span class="pln"> GB</span></span><span class="pun"><span class="pun">)</span></span><span class="pln"><span class="pln">  TX bytes</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">822963271</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">(</span></span><span class="lit"><span class="lit">822.9</span></span><span class="pln"><span class="pln"> MB</span></span><span class="pun"><span class="pun">)</span></span><span class="pln"><span class="pln">
          </span></span><span class="typ"><span class="typ">Interrupt</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">19</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Base</span></span><span class="pln"><span class="pln"> address</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0&#215;2000</span></span><span class="pln"><span class="pln">

lo        </span></span><span class="typ"><span class="typ">Link</span></span><span class="pln"><span class="pln"> encap</span></span><span class="pun"><span class="pun">:</span></span><span class="typ"><span class="typ">Local</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Loopback</span></span><span class="pln"><span class="pln">
          inet addr</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">127.0</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0.1</span></span><span class="pln"><span class="pln">  </span></span><span class="typ"><span class="typ">Mask</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">255.0</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0.0</span></span><span class="pln"><span class="pln">
          inet6 addr</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">::</span></span><span class="lit"><span class="lit">1</span></span><span class="pun"><span class="pun">/</span></span><span class="lit"><span class="lit">128</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Scope</span></span><span class="pun"><span class="pun">:</span></span><span class="typ"><span class="typ">Host</span></span><span class="pln"><span class="pln">
          UP LOOPBACK RUNNING  MTU</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">16436</span></span><span class="pln"><span class="pln">  </span></span><span class="typ"><span class="typ">Metric</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">1</span></span><span class="pln"><span class="pln">
          RX packets</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">12938</span></span><span class="pln"><span class="pln"> errors</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> dropped</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> overruns</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> frame</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln">
          TX packets</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">12938</span></span><span class="pln"><span class="pln"> errors</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> dropped</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> overruns</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> carrier</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln">
          collisions</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> txqueuelen</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln">
          RX bytes</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">40299608</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">(</span></span><span class="lit"><span class="lit">40.2</span></span><span class="pln"><span class="pln"> MB</span></span><span class="pun"><span class="pun">)</span></span><span class="pln"><span class="pln">  TX bytes</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">40299608</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">(</span></span><span class="lit"><span class="lit">40.2</span></span><span class="pln"><span class="pln"> MB</span></span><span class="pun"><span class="pun">)</span></span><span class="pln"><span class="pln">

root@ubuntu904server</span></span><span class="pun"><span class="pun">:</span></span><span class="str"><span class="str">/usr/</span></span><span class="kwd"><span class="kwd">local</span></span><span class="com"><span class="com"># vi /etc/udev/rules.d/70-persistent-net.rules</span></span><span class="pln"><span class="pln">
</span></span><span class="typ"><span class="typ">Swap</span></span><span class="pln"><span class="pln"> the two entries </span></span><span class="kwd"><span class="kwd">by</span></span><span class="pln"><span class="pln"> eidting </span></span><span class="str"><span class="str">&#8220;NAME=eth1&#8243;</span></span><span class="pln"><span class="pln"> to </span></span><span class="str"><span class="str">&#8220;NAME=eth0&#8243;</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">and</span></span><span class="pln"><span class="pln"> vice versa</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">

</span></span><span class="typ"><span class="typ">Reboot</span></span><span class="pln"><span class="pln"> your machine</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln"> </span></span></pre>
<pre class="prettyprint"><span class="pln"></span><span class="typ"><span class="typ">Check</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">if</span></span><span class="pln"><span class="pln"> you manage to connect to the internet</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln"> </span></span></pre>
<pre class="prettyprint"><span class="pln"></span><span class="typ"><span class="typ">If</span></span><span class="pln"><span class="pln"> you are running on a </span></span><span class="typ"><span class="typ">Virtual</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Machine</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln"> make sure the VM</span></span><span class="str"><span class="str">&#8217;s network adapter is using a Bridged connection instead of NAT. </span></span></pre>
<pre class="prettyprint"><span class="str"><span class="str">On the VMWare player this is enabled in the Devices menu at the top.

More info can be found here http://ubuntuforums.org/showthread.php?t=221768</span></span></pre>
</ul>
<ul>
<li>Once you have interner connection, update and upgrade.</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> sudo apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> update
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> sudo apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> upgrade</span></span></pre>
</ul>
<ul>
<li>Install Java 6</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install openjdk</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">6</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">jre</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">headless</span></span></pre>
</ul>
<ul>
<li>Install MySQL</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install mysql</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">server</span></span></pre>
</ul>
<ul>
<li>Install Tomcat</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">cache search tomcat

  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install tomcat6</span></span></pre>
</ul>
<ul>
<li>Confirm that tomcat is running</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//&lt;YOUR IP&gt;:8080/</span></span></pre>
</ul>
<ul>
<li>Install swftools</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install swftools</span></span></pre>
</ul>
<ul>
<li>Install ImageMagick</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install imagemagick</span></span></pre>
</ul>
<ul>
<li>Install Nginx</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install nginx</span></span></pre>
</ul>
<ul>
<li>Install ActiveMQ</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd opt
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//apache.mirror.rafal.ca/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-bin.tar.gz</span></span><span class="pln"><span class="pln">
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> tar zxvf apache</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">activemq</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">5.2</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">bin</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz

  </span></span><span class="typ"><span class="typ">Start</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">ActiveMQ</span></span><span class="pln"><span class="pln">
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">/opt/</span></span><span class="pln"><span class="pln">apache</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">activemq</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">5.2</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bin</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">activemq</span></span></pre>
</ul>
<ul>
<li>Modify tomcat6 account</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> vi </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">etc</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">passwd

 </span></span><span class="typ"><span class="typ">Modify</span></span><span class="pln"><span class="pln"> tomcat6 entry to </span></span><span class="kwd"><span class="kwd">this</span></span><span class="pln"><span class="pln">
  tomcat6</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">x</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">106</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">113</span></span><span class="pun"><span class="pun">::</span></span><span class="str"><span class="str">/usr/</span></span><span class="pln"><span class="pln">share</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">tomcat6</span></span><span class="pun"><span class="pun">:</span></span><span class="str"><span class="str">/bin/</span></span><span class="pln"><span class="pln">bash</span></span></pre>
</ul>
<ul>
<li>Install red5</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd opt
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//build.xuggle.com/job/red5_jdk6_stable/131/artifact/workingcopy/red5-0.8.RC3-build-hudson-red5_jdk6_stable-131.tar.gz</span></span><span class="pln"><span class="pln">
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> tar zxvf red5</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.8</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">RC3</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">build</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">hudson</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">red5_jdk6_stable</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">131.tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> mv red5</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.8</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">RC3</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">build</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">hudson</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">red5_jdk6_stable</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">131</span></span><span class="pln"><span class="pln"> red5</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.8</span></span><span class="pln"><span class="pln">

  </span></span><span class="typ"><span class="typ">Start</span></span><span class="pln"><span class="pln"> red5 </span></span><span class="kwd"><span class="kwd">as</span></span><span class="pln"><span class="pln"> tomcat6 user
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> sudo su </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">l tomcat6
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> red5</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">sh</span></span></pre>
</ul>
<ul>
<li>Install oflaDemo</li>
<pre class="prettyprint"><span class="pln"><span class="pln">http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//192.168.0.154:5080/</span></span><span class="pln"><span class="pln">

</span></span><span class="typ"><span class="typ">Click</span></span><span class="pln"><span class="pln"> on </span></span><span class="str"><span class="str">&#8220;Click here to install demos&#8221;</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">and</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">then</span></span><span class="pln"><span class="pln"> choose oflaDemo java </span></span><span class="lit"><span class="lit">6.</span></span><span class="pln"><span class="pln">

http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//192.168.0.154:5080/demos/</span></span><span class="pln"><span class="pln">

http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//192.168.0.154:5080/demos/ofla_demo.html</span></span><span class="pln"><span class="pln">

</span></span><span class="typ"><span class="typ">Edit</span></span><span class="pln"><span class="pln"> rtmp</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//192.168.0.154/oflaDemo and click connect</span></span><span class="pln"><span class="pln">

</span></span><span class="typ"><span class="typ">You</span></span><span class="pln"><span class="pln"> would see a list of available videos</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Select</span></span><span class="pln"><span class="pln"> one to play</span></span><span class="pun"><span class="pun">.</span></span></pre>
</ul>
<ul>
<li>Prepare to install Asterisk</li>
<pre class="prettyprint"><span class="typ"><span class="typ">Some</span></span><span class="pln"><span class="pln"> info found here http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//godson.in/how-to-install-asterisk-on-ubuntu</span></span><span class="pln"><span class="pln">

 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install build</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">essential
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install linux</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">headers</span></span><span class="pun"><span class="pun">-</span></span><span class="str"><span class="str">`uname -r`</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install libssl</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">dev
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install ncurses</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">dev
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install libnewt</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">dev
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install zlib1g</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">dev
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install bison</span></span></pre>
</ul>
<ul>
<li>Install Dahdi</li>
</ul>
<p>You may have to find out what the newest version is. Go <a rel="nofollow" href="http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/">here</a></p>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">usr</span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">local</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">src
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.2.0.2+2.2.0.tar.gz</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> tar zxvf dahdi</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">linux</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">complete</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">2.2</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0.1</span></span><span class="pun"><span class="pun">+</span></span><span class="lit"><span class="lit">2.2</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0.tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd dahdi</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">linux</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">complete</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">2.2</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0.1</span></span><span class="pun"><span class="pun">+</span></span><span class="lit"><span class="lit">2.2</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> make all
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> make install
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> make config</span></span></pre>
<ul>
<li>Install Asterisk</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">usr</span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">local</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">src
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.4.25.tar.gz</span></span><span class="pln"><span class="pln">
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> tar zxvf asterisk</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">1.4</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">25.tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd asterisk</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">1.4</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">25</span></span><span class="pln"><span class="pln">
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> more README
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">./</span></span><span class="pln"><span class="pln">configure
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> make
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> make install
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> make samples
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> make config</span></span></pre>
</ul>
<ul>
<li>Modify Extensions</li>
<pre class="prettyprint"><span class="pln"><span class="pln">cd </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">tmp</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">
wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//bigbluebutton.googlecode.com/files/asterisk-extensions.conf</span></span><span class="pln"><span class="pln">
cat asterisk</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">extensions</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">conf </span></span><span class="pun"><span class="pun">&gt;&gt;</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">/etc/</span></span><span class="pln"><span class="pln">asterisk</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">extensions</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">conf </span></span></pre>
</ul>
<ul>
<li>Create SIP account</li>
<pre class="prettyprint"><span class="pln"><span class="pln">wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//bigbluebutton.googlecode.com/files/asterisk-sip.conf</span></span><span class="pln"><span class="pln">
cat asterisk</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">sip</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">conf </span></span><span class="pun"><span class="pun">&gt;&gt;</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">/etc/</span></span><span class="pln"><span class="pln">asterisk</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">sip</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">conf</span></span></pre>
</ul>
<ul>
<li>Create SIP Accounts to be used by <a href="http://code.google.com/p/bigbluebutton/wiki/Red5Phone">Red5Phone</a></li>
<pre class="prettyprint"><span class="pln"><span class="pln">wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//bigbluebutton.googlecode.com/files/asterisk-create-sip-accounts.sh</span></span><span class="pln"><span class="pln">
chmod a</span></span><span class="pun"><span class="pun">+</span></span><span class="pln"><span class="pln">x asterisk</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">create</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">sip</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">accounts</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">sh
</span></span><span class="pun"><span class="pun">./</span></span><span class="pln"><span class="pln">asterisk</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">create</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">sip</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">accounts</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">sh</span></span></pre>
</ul>
<ul>
<li>Test your SIP account</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Download</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Zoiper</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">from</span></span><span class="pln"><span class="pln"> here http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//www.zoiper.com/zwin.php</span></span><span class="pln"><span class="pln">

 </span></span><span class="typ"><span class="typ">After</span></span><span class="pln"><span class="pln"> installing </span></span><span class="typ"><span class="typ">Zoiper</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln"> start it </span></span><span class="kwd"><span class="kwd">and</span></span><span class="pln"><span class="pln"> create a SIP account </span></span><span class="kwd"><span class="kwd">using</span></span><span class="pln"><span class="pln"> the echotest user above</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">

 </span></span><span class="typ"><span class="typ">Then</span></span><span class="pln"><span class="pln"> dial </span></span><span class="lit"><span class="lit">600.</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">You</span></span><span class="pln"><span class="pln"> should be connected to the </span></span><span class="str"><span class="str">&#8220;Echo&#8221;</span></span><span class="pln"><span class="pln"> application</span></span><span class="pun"><span class="pun">.</span></span></pre>
</ul>
<ul>
<li>Create AMI account</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> vi </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">etc</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">asterisk</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">manager</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">conf

 </span></span><span class="typ"><span class="typ">Modify</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">&#8220;enabled&#8221;</span></span><span class="pln"><span class="pln"> to yes

</span></span><span class="pun"><span class="pun">[</span></span><span class="pln"><span class="pln">general</span></span><span class="pun"><span class="pun">]</span></span><span class="pln"><span class="pln">

enabled </span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln"> yes

  </span></span><span class="typ"><span class="typ">Add</span></span><span class="pln"><span class="pln"> the following at the bottom of the file

</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">BigBlueButton</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Enable</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Red5</span></span><span class="pln"><span class="pln"> to connect
</span></span><span class="pun"><span class="pun">[</span></span><span class="pln"><span class="pln">bbb</span></span><span class="pun"><span class="pun">]</span></span><span class="pln"><span class="pln">
secret </span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln"> secret
permit </span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">0.0</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0.0</span></span><span class="pun"><span class="pun">/</span></span><span class="lit"><span class="lit">0.0</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0.0</span></span><span class="pln"><span class="pln">
read </span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln"> system</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln">call</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln">log</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln">verbose</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln">command</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln">agent</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln">user
write </span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln"> system</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln">call</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln">log</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln">verbose</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln">command</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln">agent</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln">user</span></span></pre>
</ul>
<ul>
<li>Configure Nginx</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> vi </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">etc</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">nginx</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">sites</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">available</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton

 </span></span><span class="typ"><span class="typ">Paste</span></span><span class="pln"><span class="pln"> the following </span></span><span class="kwd"><span class="kwd">into</span></span><span class="pln"><span class="pln"> the file </span></span><span class="kwd"><span class="kwd">and</span></span><span class="pln"><span class="pln"> edit server_name </span></span><span class="kwd"><span class="kwd">with</span></span><span class="pln"><span class="pln"> you IP</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">

server </span></span><span class="pun"><span class="pun">{</span></span><span class="pln"><span class="pln">
     listen   </span></span><span class="lit"><span class="lit">80</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
     server_name  </span></span><span class="lit"><span class="lit">192.168</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0.136</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">

     access_log  </span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">var</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">log</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">nginx</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">access</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">log</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">

      location </span></span><span class="pun"><span class="pun">~</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">(</span></span><span class="str"><span class="str">/open/</span></span><span class="pun"><span class="pun">|</span></span><span class="str"><span class="str">/close/</span></span><span class="pun"><span class="pun">|</span></span><span class="str"><span class="str">/idle/</span></span><span class="pun"><span class="pun">|</span></span><span class="str"><span class="str">/send/</span></span><span class="pun"><span class="pun">)</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">{</span></span><span class="pln"><span class="pln">
          proxy_pass         http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//127.0.0.1:8088;</span></span><span class="pln"><span class="pln">
          proxy_redirect     off</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
          proxy_set_header   X</span></span><span class="pun"><span class="pun">-</span></span><span class="typ"><span class="typ">Forwarded</span></span><span class="pun"><span class="pun">-</span></span><span class="typ"><span class="typ">For</span></span><span class="pln"><span class="pln">   $proxy_add_x_forwarded_for</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">

          client_max_body_size       </span></span><span class="lit"><span class="lit">10m</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
          client_body_buffer_size    </span></span><span class="lit"><span class="lit">128k</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">

          proxy_connect_timeout      </span></span><span class="lit"><span class="lit">90</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
          proxy_send_timeout         </span></span><span class="lit"><span class="lit">90</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
          proxy_read_timeout         </span></span><span class="lit"><span class="lit">90</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">

          proxy_buffering            off</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
      </span></span><span class="pun"><span class="pun">}</span></span><span class="pln"><span class="pln">

       location </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">deskshare </span></span><span class="pun"><span class="pun">{</span></span><span class="pln"><span class="pln">
           proxy_pass         http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//127.0.0.1:5080;</span></span><span class="pln"><span class="pln">
           proxy_redirect     </span></span><span class="kwd"><span class="kwd">default</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_set_header   X</span></span><span class="pun"><span class="pun">-</span></span><span class="typ"><span class="typ">Forwarded</span></span><span class="pun"><span class="pun">-</span></span><span class="typ"><span class="typ">For</span></span><span class="pln"><span class="pln">   $proxy_add_x_forwarded_for</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           client_max_body_size       </span></span><span class="lit"><span class="lit">10m</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           client_body_buffer_size    </span></span><span class="lit"><span class="lit">128k</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_connect_timeout      </span></span><span class="lit"><span class="lit">90</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_send_timeout         </span></span><span class="lit"><span class="lit">90</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_read_timeout         </span></span><span class="lit"><span class="lit">90</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_buffer_size          </span></span><span class="lit"><span class="lit">4k</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_buffers              </span></span><span class="lit"><span class="lit">4</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">32k</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_busy_buffers_size    </span></span><span class="lit"><span class="lit">64k</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_temp_file_write_size </span></span><span class="lit"><span class="lit">64k</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           include    fastcgi_params</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
       </span></span><span class="pun"><span class="pun">}</span></span><span class="pln"><span class="pln">

       location </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton </span></span><span class="pun"><span class="pun">{</span></span><span class="pln"><span class="pln">
           proxy_pass         http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//127.0.0.1:8080;</span></span><span class="pln"><span class="pln">
           proxy_redirect     </span></span><span class="kwd"><span class="kwd">default</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_set_header   X</span></span><span class="pun"><span class="pun">-</span></span><span class="typ"><span class="typ">Forwarded</span></span><span class="pun"><span class="pun">-</span></span><span class="typ"><span class="typ">For</span></span><span class="pln"><span class="pln">   $proxy_add_x_forwarded_for</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">

           client_max_body_size       </span></span><span class="lit"><span class="lit">10m</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           client_body_buffer_size    </span></span><span class="lit"><span class="lit">128k</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">

           proxy_connect_timeout      </span></span><span class="lit"><span class="lit">90</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_send_timeout         </span></span><span class="lit"><span class="lit">90</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_read_timeout         </span></span><span class="lit"><span class="lit">90</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">

           proxy_buffer_size          </span></span><span class="lit"><span class="lit">4k</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_buffers              </span></span><span class="lit"><span class="lit">4</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">32k</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_busy_buffers_size    </span></span><span class="lit"><span class="lit">64k</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
           proxy_temp_file_write_size </span></span><span class="lit"><span class="lit">64k</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">

           include    fastcgi_params</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
       </span></span><span class="pun"><span class="pun">}</span></span><span class="pln"><span class="pln">

        location </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">{</span></span><span class="pln"><span class="pln">
          root   </span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">var</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">www</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">default</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
          index  index</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">html index</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">htm</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
        </span></span><span class="pun"><span class="pun">}</span></span><span class="pln"><span class="pln">

        location </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">client </span></span><span class="pun"><span class="pun">{</span></span><span class="pln"><span class="pln">
                root    </span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">var</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">www</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
                index  index</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">html index</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">htm</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
        </span></span><span class="pun"><span class="pun">}</span></span><span class="pln"><span class="pln">

        </span></span><span class="com"><span class="com">#error_page  404  /404.html;</span></span><span class="pln"><span class="pln">

        </span></span><span class="com"><span class="com"># redirect server error pages to the static page /50x.html</span></span><span class="pln"><span class="pln">
        </span></span><span class="com"><span class="com">#</span></span><span class="pln"><span class="pln">
        error_page   </span></span><span class="lit"><span class="lit">500</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">502</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">503</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">504</span></span><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">/</span></span><span class="lit"><span class="lit">50x</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">html</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
        location </span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">/50x.html {
                root   /</span></span><span class="kwd"><span class="kwd">var</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">www</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">nginx</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">default</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
        </span></span><span class="pun"><span class="pun">}</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">}</span></span></pre>
</ul>
<ul>
<li>Enable the bigbluebutton nginx config</li>
<pre class="prettyprint"><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> ln </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">s </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">etc</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">nginx</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">sites</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">available</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">etc</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">nginx</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">sites</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">enabled</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span></pre>
</ul>
<ul>
<li>Download <a href="http://code.google.com/p/bigbluebutton/wiki/BigBlueButton">BigBlueButton</a></li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> mkdir </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">home</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">user</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">temp
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">home</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">user</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">temp
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//www.bigbluebutton.org/hudson/job/BBB-Trunk-Apps/ws/dist/bigbluebutton-apps-0.5.tar.gz</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//www.bigbluebutton.org/hudson/job/BBB-Trunk-Apps-Deskshare/ws/dist/webapps/deskshare.tar.gz</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//www.bigbluebutton.org/hudson/job/BBB-Trunk-Client/ws/client.tar.gz</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//www.bigbluebutton.org/hudson/job/BBB-Trunk-Web/ws/bigbluebutton-0.1.war</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//www.bigbluebutton.org/hudson/job/BBB-Trunk-Config/ws/web//*zip*/web.zip</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//www.bigbluebutton.org/hudson/job/bbb-trunk-apps-sip/ws/dist/webapps/sip.tar.gz</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//www.bigbluebutton.org/hudson/job/bbb-trunk-apps-video/ws/dist/webapps/video.tar.gz</span></span></pre>
</ul>
<ul>
<li>Disable Security settings for TOMCAT6</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> vi </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">etc</span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">default</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">tomcat6

  </span></span><span class="typ"><span class="typ">Edit</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">and</span></span><span class="pln"><span class="pln"> uncomment </span></span><span class="com"><span class="com">#TOMCAT6_SECURITY=yes to</span></span><span class="pln"><span class="pln">

  TOMCAT6_SECURITY</span></span><span class="pun"><span class="pun">=</span></span><span class="kwd"><span class="kwd">no</span></span></pre>
</ul>
<ul>
<li>setup the database</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> mysql </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">u root </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">p
</span></span><span class="typ"><span class="typ">Enter</span></span><span class="pln"><span class="pln"> password</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">
</span></span><span class="typ"><span class="typ">Welcome</span></span><span class="pln"><span class="pln"> to the </span></span><span class="typ"><span class="typ">MySQL</span></span><span class="pln"><span class="pln"> monitor</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">  </span></span><span class="typ"><span class="typ">Commands</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">end</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">with</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">or</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">\</span></span><span class="pln"><span class="pln">g</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">
</span></span><span class="typ"><span class="typ">Your</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">MySQL</span></span><span class="pln"><span class="pln"> connection id </span></span><span class="kwd"><span class="kwd">is</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">33</span></span><span class="pln"><span class="pln">
</span></span><span class="typ"><span class="typ">Server</span></span><span class="pln"><span class="pln"> version</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">5.0</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">75</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0ubuntu10.2</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">(</span></span><span class="typ"><span class="typ">Ubuntu</span></span><span class="pun"><span class="pun">)</span></span><span class="pln"><span class="pln">

</span></span><span class="typ"><span class="typ">Type</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">&#8216;help;&#8217;</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">or</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">&#8216;\h&#8217;</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">for</span></span><span class="pln"><span class="pln"> help</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Type</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">&#8216;\c&#8217;</span></span><span class="pln"><span class="pln"> to clear the buffer</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">

mysql</span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> create database bigbluebutton_dev</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
</span></span><span class="typ"><span class="typ">Query</span></span><span class="pln"><span class="pln"> OK</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">1</span></span><span class="pln"><span class="pln"> row affected </span></span><span class="pun"><span class="pun">(</span></span><span class="lit"><span class="lit">0.05</span></span><span class="pln"><span class="pln"> sec</span></span><span class="pun"><span class="pun">)</span></span><span class="pln"><span class="pln">

mysql</span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> grant all on bigbluebutton_dev</span></span><span class="pun"><span class="pun">.*</span></span><span class="pln"><span class="pln"> to </span></span><span class="str"><span class="str">&#8216;bbb&#8217;</span></span><span class="lit"><span class="lit">@</span></span><span class="str"><span class="str">&#8216;localhost&#8217;</span></span><span class="pln"><span class="pln"> identified </span></span><span class="kwd"><span class="kwd">by</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">&#8217;secret&#8217;</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
</span></span><span class="typ"><span class="typ">Query</span></span><span class="pln"><span class="pln"> OK</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> rows affected </span></span><span class="pun"><span class="pun">(</span></span><span class="lit"><span class="lit">0.04</span></span><span class="pln"><span class="pln"> sec</span></span><span class="pun"><span class="pun">)</span></span><span class="pln"><span class="pln">

mysql</span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> commit</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
</span></span><span class="typ"><span class="typ">Query</span></span><span class="pln"><span class="pln"> OK</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> rows affected </span></span><span class="pun"><span class="pun">(</span></span><span class="lit"><span class="lit">0.00</span></span><span class="pln"><span class="pln"> sec</span></span><span class="pun"><span class="pun">)</span></span><span class="pln"><span class="pln">

mysql</span></span><span class="pun"><span class="pun">&gt;</span></span></pre>
</ul>
<ul>
<li>Install <a href="http://code.google.com/p/bigbluebutton/wiki/BigBlueButton">BigBlueButton</a> Web</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd </span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">var</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">lib</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">tomcat6</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">webapps
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cp </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">home</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">user</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">temp</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.1</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">war </span></span><span class="pun"><span class="pun">./</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">war</span></span></pre>
</ul>
<ul>
<li>Determine PDF2SWF, CONVERT and GS applications</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="typ"><span class="typ">Make</span></span><span class="pln"><span class="pln"> a note of </span></span><span class="kwd"><span class="kwd">where</span></span><span class="pln"><span class="pln"> pdf2swf </span></span><span class="kwd"><span class="kwd">is</span></span><span class="pln"><span class="pln"> installed
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> which pdf2swf

  </span></span><span class="typ"><span class="typ">You</span></span><span class="pln"><span class="pln"> should see something like
  </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">usr</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bin</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">pdf2swf

  </span></span><span class="typ"><span class="typ">Make</span></span><span class="pln"><span class="pln"> a note of </span></span><span class="kwd"><span class="kwd">where</span></span><span class="pln"><span class="pln"> the convert application </span></span><span class="kwd"><span class="kwd">is</span></span><span class="pln"><span class="pln"> installed
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> which convert

  </span></span><span class="typ"><span class="typ">You</span></span><span class="pln"><span class="pln"> shoud see something like</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">
  </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">usr</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bin</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">convert

  </span></span><span class="typ"><span class="typ">Note</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">where</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">GhostScript</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">is</span></span><span class="pln"><span class="pln"> installed
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> which gs

  </span></span><span class="typ"><span class="typ">You</span></span><span class="pln"><span class="pln"> shoud see something like</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">
  </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">usr</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bin</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">gs</span></span></pre>
</ul>
<ul>
<li>Edit bbb-web properties</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> vi </span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">var</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">lib</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">tomcat6</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">webapps</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">WEB</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">INF</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">classes</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">properties

</span></span><span class="typ"><span class="typ">Change</span></span><span class="pln"><span class="pln"> the following</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln"> swfToolsDir to the directory </span></span><span class="kwd"><span class="kwd">where</span></span><span class="pln"><span class="pln"> pdf2swf </span></span><span class="kwd"><span class="kwd">is</span></span><span class="pln"><span class="pln"> located
 </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln"> imageMagickDir to the directory </span></span><span class="kwd"><span class="kwd">where</span></span><span class="pln"><span class="pln"> convert </span></span><span class="kwd"><span class="kwd">is</span></span><span class="pln"><span class="pln"> located
 </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln"> ghostScriptExec to point to the gs application
 </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln"> change bigbluebutton</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">web</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">serverURL</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//&lt;YOUR IP&gt;</span></span><span class="pln"><span class="pln">

</span></span><span class="typ"><span class="typ">Your</span></span><span class="pln"><span class="pln"> bigbluebutton</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">properties should resemble something like </span></span><span class="kwd"><span class="kwd">this</span></span><span class="pln"><span class="pln">

</span></span><span class="com"><span class="com">#</span></span><span class="pln"><span class="pln">
</span></span><span class="com"><span class="com"># These are the default properites for BigBlueButton Web application</span></span><span class="pln"><span class="pln">

dataSource</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">url</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">jdbc</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">mysql</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//localhost/bigbluebutton_dev</span></span><span class="pln"><span class="pln">
dataSource</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">username</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">bbb
dataSource</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">password</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">secret

swfToolsDir</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">/usr/</span></span><span class="pln"><span class="pln">bin
imageMagickDir</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">/usr/</span></span><span class="pln"><span class="pln">bin
presentationDir</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">/var/</span></span><span class="pln"><span class="pln">bigbluebutton
ghostScriptExec</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">/usr/</span></span><span class="pln"><span class="pln">bin</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">gs

beans</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">presentationService</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">swfToolsDir</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">$</span></span><span class="pun"><span class="pun">{</span></span><span class="pln"><span class="pln">swfToolsDir</span></span><span class="pun"><span class="pun">}</span></span><span class="pln"><span class="pln">
beans</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">presentationService</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">imageMagickDir</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">$</span></span><span class="pun"><span class="pun">{</span></span><span class="pln"><span class="pln">imageMagickDir</span></span><span class="pun"><span class="pun">}</span></span><span class="pln"><span class="pln">
beans</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">presentationService</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">presentationDir</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">$</span></span><span class="pun"><span class="pun">{</span></span><span class="pln"><span class="pln">presentationDir</span></span><span class="pun"><span class="pun">}</span></span><span class="pln"><span class="pln">

</span></span><span class="com"><span class="com"># Use fullpath to ghostscript executable since the exec names are different</span></span><span class="pln"><span class="pln">
</span></span><span class="com"><span class="com"># for each platform.</span></span><span class="pln"><span class="pln">
beans</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">presentationService</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">ghostScriptExec</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">$</span></span><span class="pun"><span class="pun">{</span></span><span class="pln"><span class="pln">ghostScriptExec</span></span><span class="pun"><span class="pun">}</span></span><span class="pln"><span class="pln">

</span></span><span class="com"><span class="com">#</span></span><span class="pln"><span class="pln">
</span></span><span class="com"><span class="com"># This URL needs to reference the host running the tomcat server</span></span><span class="pln"><span class="pln">
bigbluebutton</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">web</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">serverURL</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//192.168.0.154</span></span><span class="pln"><span class="pln">

</span></span><span class="com"><span class="com"># This is a workaround for a problem converting PDF files, referenced at</span></span><span class="pln"><span class="pln">
</span></span><span class="com"><span class="com"># http://groups.google.com/group/comp.lang.postscript/browse_thread/thread/c2e264ca76534ce0?pli=1</span></span><span class="pln"><span class="pln">
noPdfMarkWorkaround</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">/etc/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">nopdfmark</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">ps
beans</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">presentationService</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">noPdfMarkWorkaround</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">$</span></span><span class="pun"><span class="pun">{</span></span><span class="pln"><span class="pln">noPdfMarkWorkaround</span></span><span class="pun"><span class="pun">}</span></span></pre>
</ul>
<ul>
<li>Restart Tomcat6</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">/etc/</span></span><span class="pln"><span class="pln">init</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">d</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">tomcat6 restart</span></span></pre>
</ul>
<ul>
<li>Check if database tables were created</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> mysql </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">u root </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">p
</span></span><span class="typ"><span class="typ">Enter</span></span><span class="pln"><span class="pln"> password</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">
</span></span><span class="typ"><span class="typ">Welcome</span></span><span class="pln"><span class="pln"> to the </span></span><span class="typ"><span class="typ">MySQL</span></span><span class="pln"><span class="pln"> monitor</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">  </span></span><span class="typ"><span class="typ">Commands</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">end</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">with</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">or</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">\</span></span><span class="pln"><span class="pln">g</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">
</span></span><span class="typ"><span class="typ">Your</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">MySQL</span></span><span class="pln"><span class="pln"> connection id </span></span><span class="kwd"><span class="kwd">is</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">56</span></span><span class="pln"><span class="pln">
</span></span><span class="typ"><span class="typ">Server</span></span><span class="pln"><span class="pln"> version</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">5.0</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">75</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0ubuntu10.2</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">(</span></span><span class="typ"><span class="typ">Ubuntu</span></span><span class="pun"><span class="pun">)</span></span><span class="pln"><span class="pln">

</span></span><span class="typ"><span class="typ">Type</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">&#8216;help;&#8217;</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">or</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">&#8216;\h&#8217;</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">for</span></span><span class="pln"><span class="pln"> help</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Type</span></span><span class="pln"><span class="pln"> </span></span><span class="str"><span class="str">&#8216;\c&#8217;</span></span><span class="pln"><span class="pln"> to clear the buffer</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">

mysql</span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">use</span></span><span class="pln"><span class="pln"> bigbluebutton_dev</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
</span></span><span class="typ"><span class="typ">Reading</span></span><span class="pln"><span class="pln"> table information </span></span><span class="kwd"><span class="kwd">for</span></span><span class="pln"><span class="pln"> completion of table </span></span><span class="kwd"><span class="kwd">and</span></span><span class="pln"><span class="pln"> column names
</span></span><span class="typ"><span class="typ">You</span></span><span class="pln"><span class="pln"> can turn off </span></span><span class="kwd"><span class="kwd">this</span></span><span class="pln"><span class="pln"> feature to </span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> a quicker startup </span></span><span class="kwd"><span class="kwd">with</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">A

</span></span><span class="typ"><span class="typ">Database</span></span><span class="pln"><span class="pln"> changed
mysql</span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> show tables</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Tables_in_bigbluebutton_dev</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> account                     </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> account_conference          </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> account_user                </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> conference                  </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> permission                  </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> role                        </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> role_permission_rel         </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> scheduled_session           </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> user                        </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> user_permission_rel         </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> user_role_rel               </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> voice_conference_bridge     </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</span></span><span class="pln"><span class="pln">
</span></span><span class="lit"><span class="lit">12</span></span><span class="pln"><span class="pln"> rows </span></span><span class="kwd"><span class="kwd">in</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">set</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">(</span></span><span class="lit"><span class="lit">0.00</span></span><span class="pln"><span class="pln"> sec</span></span><span class="pun"><span class="pun">)</span></span><span class="pln"><span class="pln">

mysql</span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">select</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">*</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">from</span></span><span class="pln"><span class="pln"> user</span></span><span class="pun"><span class="pun">;</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">+&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;-+</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> id </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> version </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> date_created        </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> full_name </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> last_updated        </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> password_hash                            </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> username       </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">+&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;-+</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">  </span></span><span class="lit"><span class="lit">1</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">       </span></span><span class="lit"><span class="lit">0</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">2009</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">06</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">29</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">09</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">51</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">17</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Admin</span></span><span class="pln"><span class="pln">     </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">2009</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">06</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">29</span></span><span class="pln"><span class="pln"> </span></span><span class="lit"><span class="lit">09</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">51</span></span><span class="pun"><span class="pun">:</span></span><span class="lit"><span class="lit">17</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> d033e22ae348aeb5660fc2140aec35850c4da997 </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln"> admin@test</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">com </span></span><span class="pun"><span class="pun">|</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">+&#8212;-+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;-+</span></span><span class="pln"><span class="pln">
</span></span><span class="lit"><span class="lit">1</span></span><span class="pln"><span class="pln"> row </span></span><span class="kwd"><span class="kwd">in</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">set</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">(</span></span><span class="lit"><span class="lit">0.02</span></span><span class="pln"><span class="pln"> sec</span></span><span class="pun"><span class="pun">)</span></span><span class="pln"><span class="pln">

mysql</span></span><span class="pun"><span class="pun">&gt;</span></span></pre>
</ul>
<ul>
<li>Create the Presentation Upload directory</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> mkdir </span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">var</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> chown </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">R tomcat6</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">adm </span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">var</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> chmod </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">R </span></span><span class="lit"><span class="lit">777</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">var</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span></pre>
</ul>
<ul>
<li>Install bbb-apps</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">opt</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">red5</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.8</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">webapps
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cp </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">home</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">user</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">temp</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">apps</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.5</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz </span></span><span class="pun"><span class="pun">./</span></span><span class="pln"><span class="pln">

 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> tar zxvf bigbluebutton</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">apps</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.5</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln">  mv webapps</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton </span></span><span class="pun"><span class="pun">./</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> rm </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">rf bigbluebutton</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">apps</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.5</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz webapps</span></span><span class="pun"><span class="pun">/</span></span></pre>
</ul>
<ul>
<li>Edit <a href="http://code.google.com/p/bigbluebutton/wiki/BigBlueButton">BigBlueButton</a> Apps properties</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> vi </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">opt</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">red5</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.8</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">webapps</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">WEB</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">INF</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">properties

</span></span><span class="com"><span class="com"># Location for recordings</span></span><span class="pln"><span class="pln">
recordingsDirectory</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">/var/</span></span><span class="pln"><span class="pln">bigbluebutton

</span></span><span class="com"><span class="com"># These properties are for Asterisk Management Interface (AMI)</span></span><span class="pln"><span class="pln">
ami</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">host</span></span><span class="pun"><span class="pun">=</span></span><span class="lit"><span class="lit">127.0</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0.1</span></span><span class="pln"><span class="pln">
ami</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">port</span></span><span class="pun"><span class="pun">=</span></span><span class="lit"><span class="lit">5038</span></span><span class="pln"><span class="pln">
ami</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">username</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">bbb
ami</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">password</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">secret</span></span></pre>
</ul>
<ul>
<li>Uncommet RTMPT section of /opt/red5-0.8/conf/red5-core.xml</li>
</ul>
<ul>
<li>Install Xuggler</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Goto</span></span><span class="pln"><span class="pln"> http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//www.xuggle.com/xuggler/downloads/</span></span><span class="pln"><span class="pln">

  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">usr</span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">local</span></span><span class="pln"><span class="pln">
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln">  wget http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//com.xuggle.s3.amazonaws.com/xuggler/xuggler-3.1.FINAL/xuggle-xuggler.3.1.818-i686-pc-linux-gnu.sh</span></span><span class="pln"><span class="pln">

  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> chmod a</span></span><span class="pun"><span class="pun">+</span></span><span class="pln"><span class="pln">x xuggle</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">xuggler</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">3.1</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">818</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">i686</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">pc</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">linux</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">gnu</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">sh
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">./</span></span><span class="pln"><span class="pln">xuggle</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">xuggler</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">3.1</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">818</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">i686</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">pc</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">linux</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">gnu</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">sh</span></span></pre>
</ul>
<ul>
<li>Put Xuggler into PATH</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln">  vi </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">etc</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">profile

 </span></span><span class="typ"><span class="typ">Add</span></span><span class="pln"><span class="pln"> the following at the bottom of the file

</span></span><span class="kwd"><span class="kwd">export</span></span><span class="pln"><span class="pln"> XUGGLE_HOME</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">/usr/</span></span><span class="kwd"><span class="kwd">local</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">xuggler
</span></span><span class="kwd"><span class="kwd">export</span></span><span class="pln"><span class="pln"> LD_LIBRARY_PATH</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">$XUGGLE_HOME</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">lib</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">$LD_LIBRARY_PATH
</span></span><span class="kwd"><span class="kwd">export</span></span><span class="pln"><span class="pln"> PATH</span></span><span class="pun"><span class="pun">=</span></span><span class="pln"><span class="pln">$XUGGLE_HOME</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bin</span></span><span class="pun"><span class="pun">:</span></span><span class="pln"><span class="pln">$PATH</span></span></pre>
</ul>
<ul>
<li>Install Desk Share App</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">opt</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">red5</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.8</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">webapps
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cp </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">home</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">user</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">temp</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">deskshare</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz </span></span><span class="pun"><span class="pun">./</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> tar zxvf deskshare</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln">  rm deskshare</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz</span></span></pre>
</ul>
<ul>
<li>Install Video App</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">opt</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">red5</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.8</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">webapps
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cp </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">home</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">user</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">temp</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">video</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz </span></span><span class="pun"><span class="pun">./</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> tar zxvf video</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln">  rm video</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz</span></span></pre>
</ul>
<ul>
<li>Install Voice App</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">opt</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">red5</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.8</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">webapps
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cp </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">home</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">user</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">temp</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">sip</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz </span></span><span class="pun"><span class="pun">./</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> tar zxvf sip</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz
 </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln">  rm sip</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz

 </span></span><span class="typ"><span class="typ">Edit</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">opt</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">red5</span></span><span class="pun"><span class="pun">-</span></span><span class="lit"><span class="lit">0.8</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">webapps</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">sip</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">WEB</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">INF</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">sip</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">properties

 </span></span><span class="typ"><span class="typ">Point</span></span><span class="pln"><span class="pln"> sip</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">server</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">host to the IP of your </span></span><span class="typ"><span class="typ">Asterisk</span></span><span class="pln"><span class="pln"> installation

 sip</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">server</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">host</span></span><span class="pun"><span class="pun">=</span></span><span class="lit"><span class="lit">192.168</span></span><span class="pun"><span class="pun">.</span></span><span class="lit"><span class="lit">0.177</span></span></pre>
</ul>
<ul>
<li>Install <a href="http://code.google.com/p/bigbluebutton/wiki/BigBlueButton">BigBlueButton</a> Client</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd </span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">var</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">www
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> mkdir bigbluebutton
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd bigbluebutton
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cp </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">home</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">user</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">temp</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">client</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz </span></span><span class="pun"><span class="pun">./</span></span><span class="pln"><span class="pln">
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> tar zxvf client</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> rm client</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">tar</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">gz</span></span></pre>
</ul>
<ul>
<li>Modify BBB client config in /var/www/bigbluebutton/client/conf/config.xml</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Change</span></span><span class="pln"><span class="pln"> the uri to your IP address
 </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Change</span></span><span class="pln"><span class="pln"> host</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;conf/join-mock.xml&#8221;</span></span><span class="pln"><span class="pln"> to host</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;http://&lt;YOUR IP:PORT&gt;/bigbluebutton/conference-session/enter&#8221;</span></span><span class="pln"><span class="pln">

</span></span><span class="pun"><span class="pun">&lt;?</span></span><span class="pln"><span class="pln">xml version</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;1.0&#8243;</span></span><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">?&gt;</span></span><span class="pln"><span class="pln">
</span></span><span class="pun"><span class="pun">&lt;</span></span><span class="pln"><span class="pln">config</span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln">
    </span></span><span class="pun"><span class="pun">&lt;</span></span><span class="pln"><span class="pln">version</span></span><span class="pun"><span class="pun">&gt;</span></span><span class="lit"><span class="lit">0.4</span></span><span class="pun"><span class="pun">&lt;</span></span><span class="str"><span class="str">/version&gt;
    &lt;porttest host=&#8221;192.168.0.136&#8243; application=&#8221;video&#8221;/</span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln">
        </span></span><span class="pun"><span class="pun">&lt;</span></span><span class="pln"><span class="pln">modules</span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln">

                </span></span><span class="pun"><span class="pun">&lt;</span></span><span class="kwd"><span class="kwd">module</span></span><span class="pln"><span class="pln"> name</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;VideoModule&#8221;</span></span><span class="pln"><span class="pln"> url</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;VideoModule.swf&#8221;</span></span><span class="pln"><span class="pln">
                        uri</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;rtmp://192.168.0.136/video&#8221;</span></span><span class="pln"><span class="pln">
                        onUserJoinedEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;START&#8221;</span></span><span class="pln"><span class="pln">
                        onUserLogoutEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;STOP&#8221;</span></span><span class="pln"><span class="pln">
                </span></span><span class="pun"><span class="pun">/&gt;</span></span><span class="pln"><span class="pln">
                </span></span><span class="pun"><span class="pun">&lt;</span></span><span class="kwd"><span class="kwd">module</span></span><span class="pln"><span class="pln"> name</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;ChatModule&#8221;</span></span><span class="pln"><span class="pln"> url</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;ChatModule.swf&#8221;</span></span><span class="pln"><span class="pln">
                        uri</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;rtmp://192.168.0.136/bigbluebutton&#8221;</span></span><span class="pln"><span class="pln">
                        loadNextModule</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;PresentationModule&#8221;</span></span><span class="pln"><span class="pln">
                        onUserJoinedEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;START&#8221;</span></span><span class="pln"><span class="pln">
                        onUserLogoutEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;STOP&#8221;</span></span><span class="pln"><span class="pln">
                </span></span><span class="pun"><span class="pun">/&gt;</span></span><span class="pln"><span class="pln">
                </span></span><span class="pun"><span class="pun">&lt;</span></span><span class="kwd"><span class="kwd">module</span></span><span class="pln"><span class="pln"> name</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;ViewersModule&#8221;</span></span><span class="pln"><span class="pln"> url</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;ViewersModule.swf&#8221;</span></span><span class="pln"><span class="pln">
                        uri</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;rtmp://192.168.0.136/bigbluebutton&#8221;</span></span><span class="pln"><span class="pln">
                        host</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;conf/join-mock.xml&#8221;</span></span><span class="pln"><span class="pln">
                        onAppInitEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;LOAD&#8221;</span></span><span class="pln"><span class="pln"> loadNextModule</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;ChatModule&#8221;</span></span><span class="pln"><span class="pln">
                        onAppStartEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;START&#8221;</span></span><span class="pln"><span class="pln">
                        onUserLogoutEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;STOP&#8221;</span></span><span class="pln"><span class="pln">
                </span></span><span class="pun"><span class="pun">/&gt;</span></span><span class="pln"><span class="pln">
                </span></span><span class="pun"><span class="pun">&lt;</span></span><span class="kwd"><span class="kwd">module</span></span><span class="pln"><span class="pln"> name</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;ListenersModule&#8221;</span></span><span class="pln"><span class="pln"> url</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;ListenersModule.swf&#8221;</span></span><span class="pln"><span class="pln">
                        uri</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;rtmp://192.168.0.136/bigbluebutton&#8221;</span></span><span class="pln"><span class="pln">
                        recordingHost</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;http://192.168.0.136&#8243;</span></span><span class="pln"><span class="pln">
                        loadNextModule</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;DeskShareModule&#8221;</span></span><span class="pln"><span class="pln">
                        onUserJoinedEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;START&#8221;</span></span><span class="pln"><span class="pln">
                        onUserLogoutEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;STOP&#8221;</span></span><span class="pln"><span class="pln">
                </span></span><span class="pun"><span class="pun">/&gt;</span></span><span class="pln"><span class="pln">
                </span></span><span class="pun"><span class="pun">&lt;</span></span><span class="kwd"><span class="kwd">module</span></span><span class="pln"><span class="pln"> name</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;PresentationModule&#8221;</span></span><span class="pln"><span class="pln"> url</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;PresentationModule.swf&#8221;</span></span><span class="pln"><span class="pln">
                        uri</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;rtmp://192.168.0.136/bigbluebutton&#8221;</span></span><span class="pln"><span class="pln">
                        host</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;http://192.168.0.136&#8243;</span></span><span class="pln"><span class="pln">
                        loadNextModule</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;ListenersModule&#8221;</span></span><span class="pln"><span class="pln">
                        onUserJoinedEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;START&#8221;</span></span><span class="pln"><span class="pln">
                        onUserLogoutEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;STOP&#8221;</span></span><span class="pln"><span class="pln">
                </span></span><span class="pun"><span class="pun">/&gt;</span></span><span class="pln"><span class="pln">

                </span></span><span class="pun"><span class="pun">&lt;</span></span><span class="kwd"><span class="kwd">module</span></span><span class="pln"><span class="pln"> name</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;DeskShareModule&#8221;</span></span><span class="pln"><span class="pln"> url</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;DeskShareModule.swf&#8221;</span></span><span class="pln"><span class="pln">
                        uri</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;rtmp://192.168.0.136/deskShare&#8221;</span></span><span class="pln"><span class="pln">
                        onUserJoinedEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;START&#8221;</span></span><span class="pln"><span class="pln">
                        onUserLogoutEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;STOP&#8221;</span></span><span class="pln"><span class="pln">
                        loadNextModule</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;PhoneModule&#8221;</span></span><span class="pln"><span class="pln">
                </span></span><span class="pun"><span class="pun">/&gt;</span></span><span class="pln"><span class="pln">

                </span></span><span class="pun"><span class="pun">&lt;</span></span><span class="kwd"><span class="kwd">module</span></span><span class="pln"><span class="pln"> name</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;PhoneModule&#8221;</span></span><span class="pln"><span class="pln"> url</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;PhoneModule.swf&#8221;</span></span><span class="pln"><span class="pln">
                        uri</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;rtmp://192.168.0.136/sip&#8221;</span></span><span class="pln"><span class="pln">
                        onUserJoinedEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;START&#8221;</span></span><span class="pln"><span class="pln">
                        onUserLogoutEvent</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;STOP&#8221;</span></span><span class="pln"><span class="pln">
                        loadNextModule</span></span><span class="pun"><span class="pun">=</span></span><span class="str"><span class="str">&#8220;VideoModule&#8221;</span></span><span class="pln"><span class="pln">
                </span></span><span class="pun"><span class="pun">/&gt;</span></span><span class="pln"><span class="pln">
        </span></span><span class="pun"><span class="pun">&lt;</span></span><span class="str"><span class="str">/modules&gt;
&lt;/</span></span><span class="pln"><span class="pln">config</span></span><span class="pun"><span class="pun">&gt;</span></span></pre>
</ul>
<ul>
<li>Install bbb-default pages</li>
<pre class="prettyprint"><span class="pln"><span class="pln">  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cd </span></span><span class="pun"><span class="pun">/</span></span><span class="kwd"><span class="kwd">var</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">www</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> cp </span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">home</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">user</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">temp</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">web</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">zip </span></span><span class="pun"><span class="pun">./</span></span><span class="pln"><span class="pln">
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> apt</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">get</span></span><span class="pln"><span class="pln"> install unzip
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> unzip </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">dc web</span></span><span class="pun"><span class="pun">.</span></span><span class="pln"><span class="pln">zip
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> mv c</span></span><span class="pun"><span class="pun">/</span></span><span class="pln"><span class="pln">web </span></span><span class="pun"><span class="pun">./</span></span><span class="pln"><span class="pln">bigbluebutton</span></span><span class="pun"><span class="pun">-</span></span><span class="kwd"><span class="kwd">default</span></span><span class="pln"><span class="pln">
  </span></span><span class="pun"><span class="pun">&gt;</span></span><span class="pln"><span class="pln"> rm </span></span><span class="pun"><span class="pun">-</span></span><span class="pln"><span class="pln">rf c</span></span></pre>
</ul>
<ul>
<li>Restart server apps</li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="pun"><span class="pun">*</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Start</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">ActiveMQ</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">*</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Start</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Red5</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">as</span></span><span class="pln"><span class="pln"> tomcat6 user
 </span></span><span class="pun"><span class="pun">*</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Restart</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Tomcat</span></span><span class="pln"><span class="pln">
 </span></span><span class="pun"><span class="pun">*</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Restart</span></span><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Asterisk</span></span><span class="pln"><span class="pln"> </span></span></pre>
</ul>
<ul>
<li>Try out <a href="http://code.google.com/p/bigbluebutton/wiki/BigBlueButton">BigBlueButton</a></li>
<pre class="prettyprint"><span class="pln"><span class="pln"> </span></span><span class="typ"><span class="typ">Go</span></span><span class="pln"><span class="pln"> to http</span></span><span class="pun"><span class="pun">:</span></span><span class="com"><span class="com">//&lt;YOUR-IP&gt; which should display the bbb web page.</span></span><span class="pln"><span class="pln">

 </span></span><span class="typ"><span class="typ">To</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">use</span></span><span class="pln"><span class="pln"> voice conference</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln"> </span></span><span class="kwd"><span class="kwd">using</span></span><span class="pln"><span class="pln"> your zoiper</span></span><span class="pun"><span class="pun">,</span></span><span class="pln"><span class="pln"> dial </span></span><span class="lit"><span class="lit">1500</span></span><span class="pln"><span class="pln"> which will prompt you </span></span><span class="kwd"><span class="kwd">for</span></span><span class="pln"><span class="pln"> the conference number</span></span><span class="pun"><span class="pun">.</span></span></pre>
</ul>
<h2><a name="When_things_go_wrong"></a></h2>
<p><a name="When_things_go_wrong"></a></p>
<p><a name="When_things_go_wrong"></a></p>
<h2><a name="If_you_make_it_successfully_through_the_installation"></a></h2>
<p><a name="If_you_make_it_successfully_through_the_installation"></a><a name="If_you_make_it_successfully_through_the_installation"></a><a href="http://code.google.com/p/bigbluebutton/wiki/BigBlueButton">BigBlueButton</a>-dev letting everyone know that you are a real developer and you have installed <a href="http://code.google.com/p/bigbluebutton/wiki/BigBlueButton">BigBlueButton</a> from source. <img src='http://blog.thai2info.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thai2info.com/index.php/archives/97/feed</wfw:commentRss>
		</item>
		<item>
		<title>MRTG on Ubuntu Server</title>
		<link>http://blog.thai2info.com/index.php/archives/96</link>
		<comments>http://blog.thai2info.com/index.php/archives/96#comments</comments>
		<pubDate>Fri, 11 Sep 2009 10:28:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[mrtg]]></category>

		<guid isPermaLink="false">http://blog.thai2info.com/?p=96</guid>
		<description><![CDATA[Lets start by installing the goods. Then we will get into the meat of things.
apt-get install snmpd mrtg apache2
When installing MRTG it will ask if you want to only make /etc/mrtg.cfg readable by the MRTG user. In my case, this will be an internal server only, and I do not need to worry about security, [...]]]></description>
			<content:encoded><![CDATA[<p>Lets start by installing the goods. Then we will get into the meat of things.</p>
<p>apt-get install snmpd mrtg apache2</p>
<p>When installing MRTG it will ask if you want to only make /etc/mrtg.cfg readable by the MRTG user. In my case, this will be an internal server only, and I do not need to worry about security, so I am going to select NO. If you choose YES, the steps in this tutorial may not work. I have not tested this. However, keep in mind if security is a concern, you may want to go this route and keep MRTG contained in a non-root user environment.</p>
<div id="u41u" style="padding: 1em 0pt; text-align: left;"><img style="width: 474px; height: 210px;" src="http://docs.google.com/a/linuxbasement.com/File?id=dhxs2zt_194dq8p49hd_b" alt="" /></div>
<p>Assuming that you want to monitor your networking equipment with MRTG, you need to set up the snmp community on the piece of equipment. Usually its just a matter of enabling snmp, and the default community will be public. If you change the default community to another name, make sure you remember the name for later.</p>
<p>Now lets set up MRTG to read the data.<br />
With Ubuntu server, MRTG will automatically set up /var/www/mrtg. In other distrobutions, it will set it up in a different area, so you will need to change the &#8216;WorkDir:&#8217; variable in the following scenario to the directory where MRTG is installed.</p>
<p>I&#8217;m going to create an /etc/mrtg directory rather then move the mrtg.cfg file within /etc/ This will make it less confusing in the future.</p>
<p>mkdir /etc/mrtg</p>
<p>mv /etc/mrtg.cfg /etc/mrtg/</p>
<p>Now we run the cfgmaker command to get things up and running:</p>
<p>cfgmaker &#8211;global &#8216;WorkDir:/var/www/mrtg&#8217; &#8211;global &#8216;Options[_]: bits,growright&#8217; &#8211;output /etc/mrtg/mrtg.cfg public@&lt;yourrouterip&gt;</p>
<p>We need to make sure the following lines are correct in /etc/mrtg/mrtg.cfg If they are not there, add them.</p>
<p>EnableIPv6: no<br />
RunAsDaemon: Yes<br />
Interval: 5<br />
Logdir: /var/log/mrtg</p>
<p>Now run:</p>
<p>indexmaker &#8211;output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg</p>
<p>Which will build the index so you can view the output.</p>
<p>Then I run this command to set an environmental variable</p>
<p>env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg</p>
<p>and open <a title="http://localhost/mrtg/index.html" href="http://localhost/mrtg/index.html">http://localhost/mrtg/index.html</a></p>
<p>You should now see an output graph.</p>
<p>crontab -e<br />
<strong>0,5,10,15,20,25,30,35,40,45,50,55 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg &#8211;logging /var/log/mrtg.log</strong></p>
<p>Let cron pick up stats for an hour or so. After a while, you will see that your graphs are picking up data about your bandwidth.</p>
<p>Here is mine with several cisco 2811 routers configured to show bandwidth.<br />
<img style="width: 757px; height: 520px;" src="http://docs.google.com/a/linuxbasement.com/File?id=dhxs2zt_196dvcz5n8s_b" alt="" /></p>
<p>SNMP and MRTG can monitor much more then bandwidth. For instance you can monitor disk usage, processing use, and more on your servers. There is plenty of documenation on the subject, which leans towards going in and adding snmpd to the servers you want to monitor, setting it up, and then going back and executing the cfgmaker and indexmaker command again so that the new hardware will show up on the page. Because the output of these files is an html page, you can also skin the page and make it look nicer, or embed it into your favorite CMS.</p>
<p>I encourage you to play around with MRTG, because it is the foundation program for a lot of software suites that monitor traffic. One of those, we will talk about next time. Until then, keep hackin.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thai2info.com/index.php/archives/96/feed</wfw:commentRss>
		</item>
		<item>
		<title>A fax server with IAXmodem and Hylafax</title>
		<link>http://blog.thai2info.com/index.php/archives/95</link>
		<comments>http://blog.thai2info.com/index.php/archives/95#comments</comments>
		<pubDate>Thu, 27 Aug 2009 10:54:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[linux]]></category>

		<category><![CDATA[hylafax]]></category>

		<guid isPermaLink="false">http://blog.thai2info.com/?p=95</guid>
		<description><![CDATA[The IAXmodem application emulates a faxmodem, which may be operated by a fax application of the administrator&#8217;s choosing. We&#8217;ll use the popular Hylafax. For simplicity and consistency, the installation platform will be the same Debian Linux and Asterisk 1.4 we have used for the other examples (see the section called “Installing Asterisk 1.4.x on Debian [...]]]></description>
			<content:encoded><![CDATA[<p>The IAXmodem application emulates a faxmodem, which may be operated by a fax application of the administrator&#8217;s choosing. We&#8217;ll use the popular Hylafax. For simplicity and consistency, the installation platform will be the same Debian Linux and Asterisk 1.4 we have used for the other examples (see the section called “Installing Asterisk 1.4.x on Debian Linux 4.0 (Etch)”).<br />
Installing IAXmodem</p>
<p>IAXmodem simulates a faxmodem and makes it available to Asterisk via IAX2. All the steps in this chapter must be performed as the root user.</p>
<p>To install IAXmodem, we need some additional Debian packages, which may be installed with the command apt-get -y install g++ libtiff-tools libtiff4 libtiff4-dev.</p>
<p>debian:~# apt-get -y install g++ libtiff-tools libtiff4 libtiff4-dev<br />
Paketlisten werden gelesen&#8230; Fertig<br />
Abhängigkeitsbaum wird aufgebaut&#8230; Fertig<br />
Die folgenden zusätzlichen Pakete werden installiert:<br />
  g++ libjpeg62 libjpeg62-dev libtiffxx0 zlib1g-dev</p>
<p>[...]</p>
<p>Richte zlib1g-dev ein (1.2.2-4.sarge.2) &#8230;<br />
Richte libtiff4-dev ein (3.7.2-7) &#8230;</p>
<p>debian:~# </p>
<p>We switch into the appropriate directory with cd /usr/src to install the IAXmodem source code:</p>
<p>debian:~# cd /usr/src<br />
debian:/usr/src# </p>
<p>The sources for IAXmodem can be downloaded with any typical web browser from http://iaxmodem.sourceforge.net (the version used in this example is 0.3.0). After downloading the archive, copy it to /usr/src and unpack it with tar -xvzf iaxmodem-0.3.0.tar.gz.</p>
<p>debian:/usr/src# tar -xvzf iaxmodem-0.3.0.tar.gz<br />
iaxmodem-0.3.0/<br />
iaxmodem-0.3.0/iaxmodem.c<br />
iaxmodem-0.3.0/iaxmodem.init.debian<br />
iaxmodem-0.3.0/Makefile.in<br />
iaxmodem-0.3.0/CHANGES<br />
iaxmodem-0.3.0/lib/<br />
iaxmodem-0.3.0/lib/spandsp/<br />
iaxmodem-0.3.0/lib/spandsp/Makefile.am</p>
<p>[...]</p>
<p>iaxmodem-0.3.0/TODO<br />
iaxmodem-0.3.0/FAQ<br />
iaxmodem-0.3.0/build<br />
iaxmodem-0.3.0/iaxmodem.init.fedora<br />
debian:/usr/src#</p>
<p>Change into the unpacked directory with cd iaxmodem-0.3.0:</p>
<p>debian:/usr/src# cd iaxmodem-0.3.0<br />
debian:/usr/src/iaxmodem-0.3.0#</p>
<p>Now compile the sources with ./configure &#038;&#038; make:</p>
<p>debian:/usr/src/iaxmodem-0.3.0# ./configure &#038;&#038; make<br />
checking for a BSD-compatible install&#8230; /usr/bin/install -c<br />
checking whether build environment is sane&#8230; yes<br />
checking for gawk&#8230; no<br />
checking for mawk&#8230; mawk<br />
checking whether make sets $(MAKE)&#8230; yes<br />
checking for gcc&#8230; gcc</p>
<p>[...]</p>
<p>cc -DMODEMVER=\&#8221;0.3.0\&#8221; -DDSPVER=\&#8221;spandsp-0.0.3-snapshot-20070223+\&#8221; -D<br />
IAXVER=\&#8221;libiax2-0.2.3-CVS-20060222+\&#8221; -Wall -g -DSTATICLIBS -DUSE_UNIX9<br />
8_PTY -std=c99 -Ilib/libiax2/src -Ilib/spandsp/src  -c iaxmodem.c<br />
cc -DMODEMVER=\&#8221;0.3.0\&#8221; -DDSPVER=\&#8221;spandsp-0.0.3-snapshot-20070223+\&#8221; -D<br />
IAXVER=\&#8221;libiax2-0.2.3-CVS-20060222+\&#8221; -Wall -g -DSTATICLIBS -DUSE_UNIX9<br />
8_PTY -std=c99 -Ilib/libiax2/src -Ilib/spandsp/src  iaxmodem.o lib/spand<br />
sp/src/.libs/libspandsp.a lib/libiax2/src/.libs/libiax.a -o iaxmodem -lm<br />
 -lutil -ltiff</p>
<p>[...]</p>
<p>debian:/usr/src/iaxmodem-0.3.0# </p>
<p>Copy the resulting binary into /usr/bin with cp iaxmodem /usr/bin/:</p>
<p>debian:/usr/src/iaxmodem-0.3.0# cp iaxmodem /usr/bin/<br />
debian:/usr/src/iaxmodem-0.3.0# </p>
<p>Now we can configure the modem. IAXmodem expects to find configuration files in /etc/iaxmodem. Create it with mkdir /etc/iaxmodem:</p>
<p>debian:/usr/src/iaxmodem-0.3.0# mkdir /etc/iaxmodem<br />
debian:/usr/src/iaxmodem-0.3.0# </p>
<p>Create the configuration file with touch /etc/iaxmodem/ttyIAX0:</p>
<p>debian:/usr/src/iaxmodem-0.3.0# touch /etc/iaxmodem/ttyIAX0<br />
debian:/usr/src/iaxmodem-0.3.0# </p>
<p>This file must contain the following parameters:</p>
<p>device<br />
    The device node to be created in /dev. This is the device Hylafax uses to connect to IAXmodem. You can choose any name you like, but we prefer to adhere to the convention and so choose a device name appropriate for a serial interface, ttyIAX0.<br />
owner<br />
    This is the owner of the device (in the form user:group). It is best to use the same user and group under which Hylafax runs.<br />
port<br />
    The port that IAXmodem listens on. Asterisk uses 4569 to listen for IAX2 connections, so you must choose something else, e.g. 4570.<br />
refresh<br />
    This sets how long IAXmodem waits between registrations with Asterisk. If this number is 0, the modem does not register at all.<br />
server<br />
    IP address of the server running Asterisk. If this is on the same machine as IAXmodem, use the localhost address 127.0.0.1.<br />
peername<br />
    The name under which IAXmodem registers with Asterisk.<br />
secret<br />
    The password used for Asterisk registration.<br />
codec<br />
    The codec used by IAXmodem. Allowed codecs are alaw, ulaw and slinear. Compressed codecs are not appropriate for faxing; fax transmissions are themselves compressed and don&#8217;t tolerate further compression; moreover, most compressed codecs are lossy and a fax transmission will not tolerate losses. This is one of the major reasons why faxing over VoIP remains problematic.</p>
<p>Using an appropriate editor (e.g. vi) we write the following configuration in the file /etc/iaxmodem/ttyIAX0:</p>
<p>device          /dev/ttyIAX0<br />
owner           uucp:uucp<br />
mode            660<br />
port            4570<br />
refresh         50<br />
server          127.0.0.1<br />
peername        iaxmodem<br />
secret          password<br />
codec           alaw</p>
<p>IAXmodem is now configured and can be started. The best way to do this is with init. Add a line to start IAXmodem to /etc/inittab with echo &#8220;IA00:23:respawn:/usr/bin/iaxmodem ttyIAX0&#8243; >> /etc/inittab:</p>
<p>debian:/usr/src/iaxmodem-0.3.0# echo &#8220;IA00:23:respawn:/usr/bin/iaxmodem<br />
ttyIAX0&#8243; >> /etc/inittab<br />
debian:/usr/src/iaxmodem-0.3.0#</p>
<p>The device name ttyIAX0 is the same device name as specified in /etc/iaxmodem.</p>
<p>To receive faxes, we need a getty that listens for connections on the IAXmodem. This is accomplished through an additional entry in /etc/inittab. Add it with echo &#8220;mo00:23:respawn:/usr/sbin/faxgetty ttyIAX0&#8243; >> /etc/inittab.</p>
<p>mo00:23:respawn:/usr/local/sbin/faxgetty ttyIAX0</p>
<p>Create a log directory for IAXmodem with mkdir /var/log/iaxmodem/ and the log files with touch /var/log/iaxmodem/ttyIAX0 and touch /var/log/iaxmodem/iaxmodem.</p>
<p>debian:/usr/src/iaxmodem-0.3.0# mkdir /var/log/iaxmodem/<br />
debian:/usr/src/iaxmodem-0.3.0# touch /var/log/iaxmodem/ttyIAX0<br />
debian:/usr/src/iaxmodem-0.3.0# touch /var/log/iaxmodem/iaxmodem<br />
debian:/usr/src/iaxmodem-0.3.0#</p>
<p>To make sure everything will start as expected at boot time, reboot the system with shutdown -r now.</p>
<p>debian:/usr/src/iaxmodem-0.3.0# shutdown -r now</p>
<p>Broadcast message from root@debian (pts/1) (Sat May  5 00:15:49 2007):</p>
<p>The system is going down for reboot NOW!<br />
debian:/usr/src/iaxmodem-0.3.0# </p>
<p>Installing Hylafax</p>
<p>We&#8217;ll install Hylafax from the Debian Repository to simplify installation. Do this with apt-get -y install hylafax-server . Dependencies are automatically resolved:</p>
<p>debian:~# apt-get install -y hylafax-server<br />
Paketlisten werden gelesen&#8230; Fertig<br />
Abhängigkeitsbaum wird aufgebaut&#8230; Fertig<br />
Die folgenden zusätzlichen Pakete werden installiert:<br />
  enscript gs-common gs-esp hylafax-client libcupsimage2 libcupsys2 mail<br />
x metamail psmisc<br />
Vorgeschlagene Pakete:<br />
  gv postscript-viewer lpr gs-pdfencrypt gs-cjk-resource mgetty-viewfax<br />
hylafax-doc mgetty cupsys-common<br />
Empfohlene Pakete:<br />
  psfontmgr netpbm transfig<br />
Die folgenden NEUEN Pakete werden installiert:<br />
  enscript gs-common gs-esp hylafax-client hylafax-server libcupsimage2<br />
libcupsys2 mailx metamail psmisc</p>
<p>[...]</p>
<p>Update /var/spool/hylafax/status/any.info.</p>
<p>        HylaFAX configuration parameters are:</p>
<p>        [1] Init script starts faxq:            yes<br />
        [2] Init script starts hfaxd            yes<br />
        [3] Start old protocol:                 no<br />
        [4] Start paging protocol:              no<br />
Are these ok [yes]?<br />
Modem support functions written to /var/spool/hylafax/etc/setup.modem.<br />
Configuration parameters written to /var/spool/hylafax/etc/setup.cache.</p>
<p>Restarting HylaFAX server processes.</p>
<p>Should I restart the HylaFAX server processes [yes]?<br />
You do not appear to have any modems configured for use.  Modems are<br />
configured for use with HylaFAX with the faxaddmodem(8) command.<br />
Do you want to run faxaddmodem to configure a modem [yes]?<br />
Done verifying system setup.<br />
Updating /etc/hylafax/setup.cache from /var/spool/hylafax/etc/setup.cach<br />
e.<br />
Updating /etc/hylafax/setup.modem from /var/spool/hylafax/etc/setup.mode<br />
m.apt-get -y install hylafax-server<br />
/var/spool/hylafax<br />
Starting HylaFAX: faxq hfaxd faxgetty.</p>
<p>debian:~#</p>
<p>The next step is the configuration of the fax server. Do this with faxsetup:</p>
<p>debian:/usr/src/hylafax-4.3.4# faxsetup</p>
<p>[...]</p>
<p>Update /var/spool/hylafax/status/any.info.</p>
<p>        HylaFAX configuration parameters are:</p>
<p>        [1] Init script starts faxq:            yes<br />
        [2] Init script starts hfaxd            yes<br />
        [3] Start old protocol:                 no<br />
        [4] Start paging protocol:              no</p>
<p>Are these ok [yes]?</p>
<p>Simply press Enter after the following 2-3 questions.</p>
<p>You have a HylaFAX scheduler process running.  faxq will be<br />
restarted shortly, as soon as some other work has been completed.<br />
Can I terminate this faxq process (4048) [yes]?<br />
Should I restart the HylaFAX server processes [yes]?</p>
<p>/etc/init.d/hylafax start<br />
Not starting HylaFAX daemons since they are already running.</p>
<p>[...]</p>
<p>Modems are configured for use with HylaFAX with the faxaddmodem(8) comma<br />
nd.<br />
Do you want to run faxaddmodem to configure a modem [yes]? </p>
<p>We confirm restart of the server processes with yes and are asked if we want to install a modem. Our IAXmodem is already set up so we can proceed and confirm again with yes.</p>
<p>Specify the modem and confirm with Enter.</p>
<p>Serial port that modem is connected to [ttyS0]? ttyIAX0</p>
<p>Ok, time to setup a configuration file for the modem.  The manual<br />
page config(5) may be useful during this process.  Also be aware<br />
that at any time you can safely interrupt this procedure.</p>
<p>Reading scheduler config file /var/spool/hylafax/etc/config.</p>
<p>Many questions follow, but only a few of them are really important.[44]This is where you set international dialing codes, the fax number, country and area code, and the CSID (Call Subscriber ID) which is printed on the top line of the fax page on the receiver&#8217;s end. Confirm with yes.</p>
<p>No existing configuration, let&#8217;s do this from scratch.</p>
<p>Country code [1]? 1<br />
Area code []? 403<br />
Phone number of fax modem [+1.999.555.1212]? +1 888 555 4091<br />
Local identification string (for TSI/CIG) ["NothingSetup"]?<br />
Long distance dialing prefix [1]? 1<br />
International dialing prefix [011]? 011<br />
Dial string rules file (relative to /var/spool/hylafax) [etc/dialrules]?</p>
<p>Tracing during normal server operation [1]?<br />
Tracing during send and receive sessions [11]?<br />
Protection mode for received facsimile [0600]?<br />
Protection mode for session logs [0600]?<br />
Protection mode for ttyIAX0 [0600]?<br />
Rings to wait before answering [1]?<br />
Modem speaker volume [off]?<br />
Command line arguments to getty program ["-h %l dx_%s"]?<br />
Pathname of TSI access control list file (relative to /var/spool/hylafax<br />
) [""]?<br />
Pathname of Caller-ID access control list file (relative to /var/spool/h<br />
ylafax) [""]?<br />
Tag line font file (relative to /var/spool/hylafax) [etc/lutRS18.pcf]?<br />
Tag line format string ["From %%l|%c|Page %%P of %%T"]?<br />
Time before purging a stale UUCP lock file (secs) [30]?<br />
Hold UUCP lockfile during inbound data calls [Yes]?<br />
Hold UUCP lockfile during inbound voice calls [Yes]?<br />
Percent good lines to accept during copy quality checking [95]?<br />
Max consecutive bad lines to accept during copy quality checking [5]?<br />
Max number of pages to accept in a received facsimile [25]?<br />
Syslog facility name for ServerTracing messages [daemon]?<br />
Set UID to 0 to manipulate CLOCAL [""]?<br />
Use available priority job scheduling mechanism [""]?</p>
<p>A confirmation page follows where you can double-check your entries:</p>
<p>The non-default server configuration parameters are:</p>
<p>CountryCode:            1<br />
AreaCode:               403<br />
FAXNumber:              +1 888 555 4091<br />
LongDistancePrefix:     0<br />
InternationalPrefix:    00<br />
DialStringRules:        etc/dialrules<br />
SessionTracing:         11<br />
RingsBeforeAnswer:      1<br />
SpeakerVolume:          off<br />
GettyArgs:              &#8220;-h %l dx_%s&#8221;<br />
LocalIdentifier:        &#8220;NothingSetup&#8221;<br />
TagLineFont:            etc/lutRS18.pcf<br />
TagLineFormat:          &#8220;From %%l|%c|Page %%P of %%T&#8221;<br />
MaxRecvPages:           25</p>
<p>Are these ok [yes]?</p>
<p>Answering yes brings us to modem detection:</p>
<p>Now we are going to probe the tty port to figure out the type<br />
of modem that is attached.  This takes a few seconds, so be patient.<br />
Note that if you do not have the modem cabled to the port, or the<br />
modem is turned off, this may hang (just go and cable up the modem<br />
or turn it on, or whatever).</p>
<p>Probing for best speed to talk to modem: 38400 OK.</p>
<p>About fax classes:</p>
<p>The difference between fax classes has to do with how HylaFAX interacts<br />
with the modem and the fax protocol features that are used when sending<br />
or receiving faxes.  One class isn&#8217;t inherently better than another;<br />
however, one probably will suit a user&#8217;s needs better than others.</p>
<p>Class 1 relies on HylaFAX to perform the bulk of the fax protocol.<br />
Class 2 relies on the modem to perform the bulk of the fax protocol.<br />
Class 2.0 is similar to Class 2 but may include more features.<br />
Class 1.0 is similar to Class 1 but may add V.34-fax capability.<br />
Class 2.1 is similar to Class 2.0 but adds V.34-fax capability.</p>
<p>HylaFAX generally will have more features when using Class 1/1.0 than<br />
when using most modems&#8217; Class 2 or Class 2.0 implementations.  Generally<br />
any problems encountered in Class 1/1.0 can be resolved by modifications<br />
to HylaFAX, but usually any problems encountered in Class 2/2.0/2.1 will<br />
require the modem manufacturer to resolve it.</p>
<p>If you&#8217;re unsure and your modem supports it, use Class 1.</p>
<p>This modem looks to have support for Class 1 and 1.0.<br />
How should it be configured [1]? </p>
<p>Hmm, this looks like a Class 1 modem.<br />
Product code (ATI0) is &#8220;spandsp&#8221;.<br />
Other information (ATI3) is &#8220;www.soft-switch.org&#8221;.<br />
DTE-DCE flow control scheme [default]?<br />
Modem manufacturer is &#8220;spandsp&#8221;.<br />
Modem model is &#8220;IAXmodem&#8221;.</p>
<p>Using prototype configuration file iaxmodem&#8230;</p>
<p>The modem configuration parameters are:</p>
<p>ModemResetCmds:         &#8220;ATH1\nAT+VCID=1&#8243;</p>
<p>Are these ok [yes]?</p>
<p>The modem was detected and we are asked if it is a Class 1 modem, and we confirm this because it is exactly what we want. The default reset commands are also acceptable. Confirm with yes.</p>
<p>Answer the first question In the next dialog with no, since we don&#8217;t need to configure any further modems. The second question is confirmed with by pressing Enter, which starts the fax server.</p>
<p>Creating new configuration file /var/spool/hylafax/etc/config.ttyIAX0&#8230;<br />
Creating fifo /var/spool/hylafax/FIFO.ttyIAX0 for faxgetty&#8230; done.<br />
Done setting up the modem configuration.</p>
<p>[...]</p>
<p>Do you want to run faxaddmodem to configure another modem [yes]? no</p>
<p>[...]</p>
<p>Should I run faxmodem for each configured modem [yes]?<br />
/usr/sbin/faxmodem ttyIAX0</p>
<p>Done verifying system setup.<br />
/var/spool/hylafax</p>
<p>debian:~#</p>
<p>Hylfax is now configured for sending faxes.<br />
Receiving faxes</p>
<p>Our fax solution still has to be integrated into Asterisk. To do this, we configure the IAXmodem as an IAX2 peer by adding a section to /etc/asterisk/iax.conf (see also ???):</p>
<p>[general]<br />
bindport = 4569<br />
bindaddr = 0.0.0.0<br />
disallow=all<br />
allow=ulaw<br />
allow=alaw</p>
<p>[iaxmodem]<br />
type=friend<br />
secret=password<br />
port=4570<br />
host=dynamic<br />
context=fax-out<br />
disallow=all<br />
allow=alaw</p>
<p>Global settings are defined in the general section. In this example we are binding the standard IAX2 port of 4569. The bindaddr defines the IP address (and thereby the interface) on which the IAX2 channel driver listens for connections; in this case, it is set to listen on all interfaces.</p>
<p>The IAXmodem is set to type friend, which allows both incoming and outgoing connections. The secret and port parameters match those in the IAXmodem configuration we did above, and context defines the entry context for outgoing connections.</p>
<p>Enter iax2 show peers in the Asterisk console to see our new IAXmodem:</p>
<p>*CLI> iax2 show peers<br />
Name/Username    Host                 Mask             Port          Sta<br />
tus<br />
iaxmodem         127.0.0.1       (D)  255.255.255.255  4570          Unm<br />
onitored<br />
1 iax2 peers [0 online, 0 offline, 1 unmonitored]<br />
*CLI></p>
<p>We are, of course, not done yet. Asterisk still needs an extension so that it knows what to do with an incoming fax. Our objective is to ensure that any incoming faxes are passed on to Hylafax. In this example, we assume that all faxes come in through a SIP provider. A real configuration will have to reflect the installation and account settings of the SIP provider you use; for the sake of example, a configuration in sip.conf might look like this:</p>
<p>[...]</p>
<p>[123456]<br />
type=friend<br />
insecure=very;<br />
nat=yes<br />
username=123456<br />
fromuser=12345<br />
fromdomain=my-voip-provider.com<br />
secret=secret<br />
host=my-voip-provider.com<br />
qualify=yes<br />
context=fax-in</p>
<p>[...]</p>
<p>The corresponding context in extensions.conf would look like this:</p>
<p>[fax-in]<br />
exten => _X.,1,Dial(IAX2/iaxmodem)</p>
<p>Any faxes coming in will now be routed to Hylafax via IAXmodem and ultimately e-mailed to the user address defined in the faxmaster alias.<br />
Sending faxes</p>
<p>The next obvious step is configuring our system to send faxes. Here, too, we need a context (this time it is [fax-out]) in extensions.conf. If IAXmodem wants to send a fax, it will automatically land in this context. If the faxes are to go out our hypothetical SIP connection 123456, the entry in extensions.conf will look like this:</p>
<p>[fax-out]<br />
exten => _X.,1,Dial(SIP/123456/${EXTEN})</p>
<p>We can test sending of faxes with sendfax -n -d <faxnumber> <file.txt>:</p>
<p>debian:~# sendfax -n -d 6045557977 /etc/issue.net</p>
<p>We should see this in the CLI:</p>
<p> &#8212; Accepting AUTHENTICATED call from 127.0.0.1:<br />
       > requested format = alaw,<br />
       > requested prefs = (),<br />
       > actual format = alaw,<br />
       > host prefs = (alaw),<br />
       > priority = mine<br />
    &#8212; Executing Answer(&#8221;IAX2/iaxmodem-3&#8243;, &#8220;&#8221;) in new stack<br />
    &#8212; Executing Dial(&#8221;IAX2/iaxmodem-3&#8243;, &#8220;SIP/123456/6045557977&#8243;) in new<br />
 stack<br />
    &#8212; Called 123456/6045557977<br />
    &#8212; SIP/123456-0818f630 is making progress passing it to IAX2/iaxmode<br />
m-3<br />
    &#8212; SIP/123456-0818f630 answered IAX2/iaxmodem-3<br />
    &#8212; parse_srv: SRV mapped to host my-voip-provider.com, port 5060<br />
  == Spawn extension (fax-out, 6045557977, 2) exited non-zero on &#8216;IAX2/i<br />
axmodem-3&#8242;<br />
    &#8212; Executing Hangup(&#8221;IAX2/iaxmodem-3&#8243;, &#8220;&#8221;) in new stack<br />
  == Spawn extension (fax-out, h, 1) exited non-zero on &#8216;IAX2/iaxmodem-3<br />
&#8216;<br />
    &#8212; Hungup &#8216;IAX2/iaxmodem-3&#8242;</p>
<p>If we issue the command faxstat -s during the transmission, we will see:</p>
<p>debian:~# faxstat -s<br />
HylaFAX scheduler on w077.example.com: Running<br />
Modem ttyIAX0 (123456): Sending job 7</p>
<p>JID  Pri S  Owner Number       Pages Dials     TTS Status<br />
7    127 R   root 06912345678  0:1   0:12<br />
debian:~# </p>
<p>Done! Now you can send and receive faxes via Asterisk using Hylafax.</p>
<p>The Hylafax website http://www.hylafax.org has numerous examples and how-tos that will help you integrate your Hylafax installation with your existing office intrastructure effectively.<br />
Sending received faxes as e-mail</p>
<p>The following steps illustrate how we can configure Hylafax to transmit incoming faxes to a pre-defined e-mail address.[45]The recipient will receive the fax as an e-mail attachment.</p>
<p>To do this, the configuration file /var/spool/hylafax/etc/FaxDispatch must contain the following parameters:</p>
<p>SENDTO<br />
    The destination e-mail address for incoming faxes.<br />
FILETYPE<br />
    The format of the attachment. In addition to pdf, tiff (Tagged Image File Format) and ps (Postscript™) are also acceptable options.</p>
<p>SENDTO=fax-incoming@company.com<br />
FILETYPE=pdf</p>
<p>After the file has been saved, you must restart the fax server with /etc/init.d/hylafax restart.</p>
<p>debian:~# /etc/ini.d/hylafax restart<br />
Starting HylaFAX: faxq hfaxd.<br />
debian:~# </p>
<p>We can test e-mail transmission by sending ourselves a fax with sendfax -n -d <faxnumber> <file.txt></p>
<p>debian:~# sendfax -n -d 6045557977 /etc/issue.net</p>
<p>After a short time your target e-mail address should receive an e-mail in the following format:</p>
<p> recvq/fax000000016.tif (ftp://debian:4559/recvq/fax000000016.tif):     </p>
<p>          Sender: IAXmodem<br />
           Pages: 4<br />
         Quality: Normal<br />
            Size: North American Letter<br />
        Received: 2007:06:02 02:49:45<br />
 Time To Receive: 1:58<br />
     Signal Rate: 9600 bit/s<br />
     Data Format: 2-D MMR<br />
   Error Correct: Yes<br />
         CallID1: 2007<br />
         CallID2: IAXmodem 1<br />
     Received On: ttyIAX0<br />
          CommID: 000000033 (ftp://debian:4559/log/c000000033)</p>
<p>[...]</p>
<p>Jun 02 02:51:46.99: [ 3320]: RECV FAX: bin/faxrcvd &#8220;recvq/fax000000016.t<br />
if&#8221; &#8220;ttyIAX0&#8243; &#8220;000000033&#8243; &#8220;COMREC received DCN&#8221; &#8220;2007&#8243; &#8220;IAXmodem 1&#8243; &#8220;<NO<br />
NE>&#8221; &#8220;s&#8221;<br />
Jun 02 02:51:47.00: [ 3320]: RECV FAX: end<br />
Jun 02 02:51:47.00: [ 3320]: SESSION END<br />
Jun 02 02:51:47.01: [ 3320]: RECV FAX (000000033): recvq/fax000000016.ti<br />
f from IAXmodem, route to <unspecified>, 4 pages in 2:08</p>
<p>The attachment will be a PDF file. In this example, the PDF is named fax000000016.pdf.</p>
<p>Now you can not only send and receive faxes, but received faxes are also received as e-mail attachments.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thai2info.com/index.php/archives/95/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
