利用 Apache 服务器搭建 Python 网站 (一),apachepython


自己一直对 Python 有兴趣,对于它所宣称的高效的开发非常的向往,公司内部恰好有需要做一个网站,于是就想试着用 Python 来做一个网站,刚好作为一个实践。顺便把整个过程记录下来,是非常有意义的事情,一是以后如果某些东西忘了,回头一看就能很容易想起来,二是也可以给别人以参考。由于每个工具或技术都有相应的教程和说明,所以我主要打算记录下自己的思路和遇到的问题如何解决的。
根据项目情况,初步估计可能涉及到的东西有:
  • 服务器系统:Ubuntu 12.04 LTS
  • 网站服务器:Apache 2.4.4
  • 数据库:Mysql
  • 服务器端技术:Python3
  • 客户端技术:HTML5+CSS3+Javascript(很可能会用Jquery)

技术背景:本人以前做过几年网站开发,当时主要用的是 .net 技术,使用 IIS 做服务器,对于网站的整体结构还是比较清楚的,对于客户端技术也是非常熟悉,虽然当时还是用的 HTML4,但是看了下 HTML5 的文档以后发现其实 HTML5 功能更强大,更人性化,使用应该更容易。所以如果要完成上面的任务,难点就在于:
  • 学习使用 Apache 服务器
  • 学习使用 Python3 以及相关的 framework,主要是实践

所以要做的第一件事就是搭建 Apache 服务器。
搭建 Apache 服务器 要用肯定就用最新的,当前的最新版本是 Apache 2.4.4。下载源码,然后根据 INSTALL 文件里面的提示,进行安装,中间遇到的问题也不多,还算比较顺利:
问题一:根据提示需要安装 pcre,但是安装好 pcre-8.33 以后,提示找不到 libpcre.so.1 解决方案:网上搜了一下,有个类似的案例,需要的 lib 其实已经有了,只是 apache 找的位置不对。那么做一个 link 就可以了。在 /usr/local/lib/ 下面找到了 libpcre.so.1,它本身就是个 link, 直接复制到 /usr/lib/ 下面,然后就可以了。
问题二:启动的时候提示无法绑定监听端口,提示无权限 解决方案:用 sudo 来执行启动命名,赋予 admin 权限。
启动过后,访问 localhost,看到“It works!”,表示已经搭建成功。
Python 相关选择 虽然看起来很简单,但是其实也是花了我不少时间在网上查阅文档,对比资料,最终选择了如下的内容:
Python3 这是 Python 的最新版本,虽然 Python2 拥有更多的库的支持,但是毕竟我还算是个新手,所以,从新的 Python3 开始是个不错的选择。
mod_wsgi 虽然 CGI 足以运行 Python,但是由于其效率问题,选择一个合适的 apache 模块来提高效率还是很有必要的,而 mod_wsgi 这个官方推荐的模块是我认为目前的最佳选择。它的最大优势就是适用各种开发网站的 Python framework,具体请参考官方文档。 install mod_wsgi:根据说明来就好。有一点要注意的是他需要 python 的开发包,我希望使用 python3,那么就安装 python3 的开发包 $sudo apt-get install python3-dev,安装好后就能顺利安装 mod_wsgi 了。
Django 一个好的 framework 不仅可以极大的提升开发效率,而且它还可以考虑到很多你没有考虑到的问题,提升开发的质量。根据官方文档的推荐,我选择了 Django 这个 framework。 install Django:下载过后,也是按照提示安装,从 django 1.5 开始就可以支持 Python3 了。但在安装的时候注意到他的 lib 全放在 python2.7 下面的,所以,需要在适当的地方设置一下路径,以免运行时找不到相应的库。
Hello World! 先根据 Django 的这篇教程来创建第一个的项目,里面会用一个临时的开发服务器来运行你的新建的 python 网站,但是我们的目标是用 apache 来做 host。那么上面的实验成功以后,再来根据这篇教程来使用 apache 真正 host 你的第一个网站!
接下来的问题 虽然我已经搭建好了我的“Hello World!”,但是离真正的一个网站还差的比较远。根据目前我所了解的知识,我能想到不少的问题:
  • Apache 的网站配置需要熟练使用。
  • wsgi 提到了一个 application 的概念,那么这个 application 和多个网页是如何一个对应关系呢?或者,其实根本就不是一种简单的对应关系。
  • Django 的推荐是静态的文件和媒体文件都使用另外的服务器,也就是说逻辑和静态文件使用不同的服务器。还需要深入的了解和实践。
  • 目前所知的 apache 通过 mod_wsgi 运行 python 脚本的方式主要有两种,需要加深了解。
  • 虽然已经建立了“Hello World”,但对 Python 在服务器端的执行流程已经该干什么还不是特别的清楚,需要进一步了解。
  • 数据库的交流是如何完成的。
当然这些不是全部的问题,暂时想到这些,也算是有了一个前进的方向。希望接下来有更多的收获。

相关内容

    暂无相关文章