.. include:: ../LINKS.rst 使用apache进行发布 ============================= 该发布自己的应用了! 要实现真正的“云”,就要把自己的应用发布到因特网上! 正值小白打算建立自己的个人网站,就买了一个VPS 以下介绍在独立主机上debian系统配置的服务器上跑bottle apache ---------------------------- 但是,如何使用服务器呢? 一般情况下,linux服务器都安装了apache,可以通过apache来发布网站 配置 ------------------------------ 小白打算把自己的应用保存在/var/www/myapp 于是,把整个mala.web拷贝到以上目录。然后把main.py改名为app.wsgi 在程序一开始添加:: #-*- coding:utf-8 -*- import os,bottle,sys os.chdir(os.path.dirname(__file__)) # 改变工作目录,以便在相对路径(和模板查找)中继续工作 sys.path.append(os.path.dirname(__file__)) 不加这一段好像会让TextDB模块(也就是没安装的模块)无法使用的。 然后把bottle.run函数去掉,添加:: application = bottle.default_app() 配置apache ----------------------------------- 小白的apache是安装在etc/apache2/里。 于是设置/etc/apache2/httpd.conf里的内容:: ServerName example.com #自己的域名,没有的话以localhost发布 WSGIDaemonProcess myapp user=www-data group=www-data processes=1 threads=5 WSGIScriptAlias / /var/www/myapp/app.wsgi WSGIProcessGroup myapp WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all 哈哈,发布! :: sudo /etc/init.d/apache2 restart 但是…… 安装wsgi ---------------------------------------- 小白尝试一下,出现错误: .. image:: ../_static/snap/TryApache.png 小白研究了好久,甚至就要跳槽到使用nginx去的时候……突然发现配置文件中,没有导入mod_wsgi的语句! 于是,再修改,在开头加上一句:: LoadModule wsgi_module modules/mod_wsgi.so 再次尝试发布,仍然没有结果,那么就是mod_wsgi没有爱装,于是安装之:: sudo apt-get install libapache2-mod-wsgi 安装完毕之后,发布,哈哈,看到结果了。 .. image:: ../_static/snap/apache_site.png 权限问题 ---------------------------------------- 执行添加操作以后,显示没有权限: .. image:: ../_static/snap/apache_error.png 怎么搞的? 改权限! 代码里面怎么搞都不对阿…… 看来是权限问题 把data.tdb的所有者改为www-data .. image:: ../_static/snap/www_data.png 再把data.tdb的权限改为755. OK啦! 小结 ---------------------------------------------- 小白终于可以通过浏览器在异地看到自己的网站了!发布成功!