Python 网站开发
我需要创建一个简单的网站,服务器会在亚马逊的EC2云服务上运行。但是我之前没有做过网页开发。看起来我需要学习很多东西,比如JavaScript、HTML、CSS、网页框架、WSGI、Apache网页服务器等等。而且有些东西看起来很相似,让我有点困惑。
所以第一个问题,有人能告诉我到底需要什么才能搭建这个网站吗?网页框架是我在服务器端唯一需要的吗?
第二个问题,我打算在服务器端使用Python,Python有很多网页框架。Apache HTTP服务器和这些网页框架内置的WSGI或HTTP服务器之间有什么区别呢?
第三个问题,WSGI是最好的选择吗?大多数网页框架都支持WSGI,这是否意味着WSGI已经内置在这些网页框架里?还是说我需要额外安装mod_wsgi或者类似的东西?
另外,根据这个关于Python WSGI服务器的基准测试,gevent和mod_wsgi在性能和内存占用上表现都很好。它们并不自称为网页框架,那它们和像cherrypy、web2py这样的网页框架有什么区别呢?
谢谢!
4 个回答
WSGI 是一个接口。它需要一个容器(比如 mod_wsgi)、一个应用程序(比如 Django),还有可选的中间件。应用程序可以直接基于 WSGI 来构建,或者可以在像 Django 这样的框架上构建,这些框架会帮你处理 WSGI 的部分。
不要使用框架内置的网络服务器。它们通常不是为了性能而设计的,而且通常和你服务器中非 WSGI 的部分整合得不好。
这要看你的网站需求。如果你的网站只需要展示一些静态内容,可以使用静态网站生成器,比如用Python写的Blogofile和Hyde等。如果你的网站需要动态内容,那就得用一些框架,比如Flask、Django等。使用静态网站生成器时,服务器上只需要一个能提供内容的网页服务器;而动态网站可能还需要额外的库来支持数据库、缓存等功能。
内置的网页服务器通常是为了本地开发而设计的,一般不适合用于生产环境。如果要在生产环境中使用,建议用专门的应用,比如Apache的mod_wsgi或Nginx的uwsgi。不过,尽量避免使用mod_python!
WSGI是“网页服务器网关接口”的缩写,是网页服务器和网页应用(或框架)之间的标准协议。目前WSGI似乎是唯一的标准选择,所以可以放心使用。
另外,根据对Python WSGI服务器的基准测试,gevent和mod_wsgi在性能上表现出色,同时内存占用也很低。它们并不自称为网页框架,那它们和像CherryPy、web2py这样的网页框架有什么区别呢?
如前所述,WSGI只是网页服务器与网页应用之间沟通的一种方式。CherryPy和web2py负责处理模板、请求和会话,并通过WSGI将这些信息传递给网页服务器。
如果你担心速度问题,其实不用太过担心.. :)