Blog | Phodal - A Growth Engineerhttp://www.phodal.com/blog/2014-05-14T19:33:21.296814+00:00BlogOpenwrt django,路由器上运行Django,基于DB120与Openwrt2013-01-28T14:12:12+00:002014-05-14T19:33:21.296814+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/openwrt-django-route-run-django-in-db120-openwrt/<h1>So,开始之前你需要什么?</h1>
<h2><a name="t1"></a>关于openwrt</h2>
<div>OpenWrt的被描述为一个嵌入式设备的Linux发行版,而不是试图建立一个单一的,静态的固件,OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序通过使用包。对于开发人员,OpenWrt的是框架来构建应用程序,而无需建立一个完整的固件左右;对于用户来说,这意味着完全定制的能力,从来没有预想的方式使用该设备。</div>
<div><ol>
<li>装有Openwrt的路由器 一个 </li>
<li>使你的路由器能上网</li>
</ol></div>
<p>所以,你需要买上一个路由器,或者用自带的,至于各种教程就网上找吧。如果不知道Openwrt是什么请谷歌,如果你的路由器不能上网,带有无线的话,试着用connectify共享出你的网络。</p>
<p>(Ps:需要有Linux基础才会各种没有压力,power by Phodal.com)</p>
<p>参考这个贴子:<a href="http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=5983">http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=5983</a>,扩展你的系统到U盘上。</p>
<p> </p>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt">opkg update </li>
<li>opkg install kmod-usb-ohci kmod-usb2 kmod-fs-ext3 </li>
<li class="alt">opkg install kmod-usb-storage </li>
<li>reboot </li>
<li class="alt">mount /dev/sda1 /mnt </li>
<li>mkdir /tmp/root </li>
<li class="alt">mount -o bind / /tmp/root </li>
<li>cp /tmp/root/* /mnt -a </li>
<li class="alt">umount /tmp/root </li>
<li>umount /mnt </li>
<li class="alt">echo Booted from internal rom >> /etc/banner </li>
<li>opkg update </li>
<li class="alt">opkg install block-extroot </li>
</ol></div>
<p><br/>#修改etc/config/fstab文件如下:</p>
<p> </p>
<p> </p>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt"> </li>
<li>echo option force_space >> /etc/opkg.conf </li>
<li class="alt">reboot </li>
</ol></div>
<p><br/><br/></p>
<p> </p>
<p>当然了,如果你的路由器带有支持extroot功能的话,直接就能用。如我的</p>
<p><img alt="" src="http://img.my.csdn.net/uploads/201301/20/1358615368_6987.jpg"/></p>
<p>总之是为了保证有足够的空间来安装这些。</p>
<p> </p>
<h1><a name="t2"></a>安装Python以及Django</h1>
<div>需要安装libffi,python-mini,python。libffi以及python-mini需要安装在python之前</div>
<p> </p>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt">wget -c http://downloads.openwrt.org.cn/backfire/10.03.1/brcm63xx/packages/libffi_3.0.9-1_brcm63xx.ipk </li>
<li>wget -c http://downloads.openwrt.org.cn/backfire/10.03.1/brcm63xx/packages/python-mini_2.6.4-3_brcm63xx.ipk </li>
<li class="alt">wget -c http://downloads.openwrt.org.cn/backfire/10.03.1/brcm63xx/packages/python_2.6.4-3_brcm63xx.ipk </li>
</ol></div>
<p>安装这几个包</p>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt">opkg install libffi*.ipk </li>
<li>opkg install python-mini*.ipk </li>
<li class="alt">opkg install python_2*.ipk </li>
</ol></div>
<p> </p>
<p> </p>
<p>下载setuptools</p>
<p><a href="http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086">http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086</a></p>
<p>安装easy_install</p>
<p> </p>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt">sh setuptools-0.6c11-py2.6.egg </li>
</ol></div>
<p><br/>安装Pip</p>
<p> </p>
<p> </p>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt">easy_install pip </li>
</ol></div>
<p><br/>安装django</p>
<p> </p>
<p> </p>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt">pip install django </li>
</ol></div>
<p> </p>
<p> </p>
<p>创建一个django项目,比如Onrt</p>
<p> </p>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt">django-admin.py startproject Onrt </li>
</ol></div>
<p> </p>
<p> </p>
<p> </p>
<h1><a name="t3"></a>让路由器咆哮</h1>
<div>(powered by Phodal.com)</div>
<div>安装sqlite以及lighttpd,如果不能直接安装请使用wget </div>
<div>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt">opkg install lighttpd </li>
<li>opkg install libsqlite2 </li>
<li class="alt">opkg install libsqlite3 </li>
<li>opkg install lighttpd-mod-access </li>
<li class="alt">opkg install lighttpd-mod-alias </li>
<li>opkg install lighttpd-mod-cgi </li>
<li class="alt">opkg install lighttpd-mod-fastcgi </li>
<li>opkg install lighttpd-mod-rewrite </li>
<li class="alt">opkg install lighttpd-mod-redirect </li>
<li>opkg install sqlite2-cli </li>
</ol></div>
<br/>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt">opkg install nginx </li>
<li>opkg install fastcgi </li>
</ol></div>
<br/>测试下nginx</div>
<div>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt">/etc/init.d/nginx start </li>
</ol></div>
<br/>遇到错误,修改端口。</div>
<div>修改nginx.conf。位于/etc/nginx/nginx.conf</div>
<div>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt">user nobody nogroup; </li>
<li>worker_processes 1; </li>
<li class="alt"> </li>
<li>error_log logs/error.log; </li>
<li class="alt">#error_log logs/error.log notice; </li>
<li>#error_log logs/error.log info; </li>
<li class="alt"> </li>
<li>events { </li>
<li class="alt"> worker_connections 1024; </li>
<li>} </li>
<li class="alt"> </li>
<li> </li>
<li class="alt">http { </li>
<li> include mime.types; </li>
<li class="alt"> index index.php index.html index.htm; </li>
<li> default_type text/html; </li>
<li class="alt"> </li>
<li> sendfile on; </li>
<li class="alt"> keepalive_timeout 65; </li>
<li> gzip on; </li>
<li class="alt"> </li>
<li> gzip_min_length 1k; </li>
<li class="alt"> gzip_buffers 4 16k; </li>
<li> gzip_http_version 1.0; </li>
<li class="alt"> gzip_comp_level 2; </li>
<li> gzip_types text/plain application/x-javascript text/css application/xml; </li>
<li class="alt"> gzip_vary on; </li>
<li> server { </li>
<li class="alt"> listen 88; </li>
<li> server_name YOUR_SERVER; </li>
<li class="alt"> </li>
<li> fastcgi_connect_timeout 300; </li>
<li class="alt"> fastcgi_send_timeout 300; </li>
<li> fastcgi_read_timeout 300; </li>
<li class="alt"> fastcgi_buffer_size 32k; </li>
<li> fastcgi_buffers 4 32k; </li>
<li class="alt"> fastcgi_busy_buffers_size 32k; </li>
<li> fastcgi_temp_file_write_size 32k; </li>
<li class="alt"> client_body_timeout 10; </li>
<li> client_header_timeout 10; </li>
<li class="alt"> send_timeout 60; </li>
<li> output_buffers 1 32k; </li>
<li class="alt"> postpone_output 1460; </li>
<li> </li>
<li class="alt"> root /root/Onrt; </li>
<li> </li>
<li class="alt"> location /static/ { # STATIC_URL </li>
<li> alias /root/Onrt; # STATIC_ROOT </li>
<li class="alt"> expires 30d; </li>
<li> } </li>
<li class="alt"> </li>
<li> location /media/ { # MEDIA_URL </li>
<li class="alt"> alias /root/Onrt; # MEDIA_ROOT </li>
<li> expires 30d; </li>
<li class="alt"> } </li>
<li> </li>
<li class="alt"> location / { </li>
<li> include fastcgi_params; </li>
<li class="alt"> fastcgi_pass 127.0.0.1:1259; </li>
<li> } </li>
<li class="alt"> </li>
<li> #location ~ \.php$ { </li>
<li class="alt"> # fastcgi_index index.php; </li>
<li> # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; </li>
<li class="alt"> # include fastcgi_params; </li>
<li> # </li>
<li class="alt"> # if (-f $request_filename) { </li>
<li> # # Only throw it at PHP-FPM if the file exists (prevents some PHP exploits) </li>
<li class="alt"> # fastcgi_pass 127.0.0.1:1026; # The upstream determined above </li>
<li> # } </li>
<li class="alt"> #} </li>
<li> } </li>
<li class="alt">} </li>
</ol></div>
<br/>运行fastcgi</div>
<div>
<div class="dp-highlighter bg_html">
<div class="bar">
<div class="tools"><strong>[html]</strong> <a class="ViewSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="view plain">view plain</a><a class="CopyToClipboard" href="http://blog.csdn.net/gmszone/article/details/8521323" title="copy">copy</a><a class="PrintSource" href="http://blog.csdn.net/gmszone/article/details/8521323" title="print">print</a><a class="About" href="http://blog.csdn.net/gmszone/article/details/8521323" title="?">?</a>
<div> </div>
</div>
</div>
<ol class="dp-xml" start="1">
<li class="alt">python /root/Onrt/manage.py runfcgi host=127.0.0.1 port=1259; </li>
</ol></div>
<br/>记得保持端口一致</div>
<div> </div>
<h1><a name="t4"></a>大功告成:Welcome to Django</h1>
<div><img alt="" src="http://img.my.csdn.net/uploads/201301/20/1358616208_5792.jpg"/></div>