2011-11-04 113 views
2

我需要創建一個簡單的網站,服務器將運行在Amazon EC2 Web服務上。但是我之前沒有做過網絡開發。這似乎是我需要學習很多東西,JavaScript,HTML,CSS,Web框架,WSGI,Apache Web服務器等等。我對一些看起來很相似的東西感到困惑。python網站開發

所以第一個問題,誰能告訴我究竟是什麼,我需要設置的網站了。 Web框架是我在服務器端需要的唯一東西嗎?

二路的問題,我是在服務器端會使用Python,真的有一羣web框架的蟒蛇。在這些web框架中,apache http服務器和內置的wsgi或http web服務器有什麼區別。

3TH問題,是WSGI的最佳選擇?大多數Web框架都支持WSGI,這是否意味着WSGI構建在Web框架中?或者我需要包含mod_wsgi或類似的東西。

另外,根據this benchmark of python WSGI serversgevent和mod_wsgi在內存佔用少的情況下表現出色。他們並沒有聲稱自己是web框架,他們和web框架如cherrypy,web2py有什麼區別。

感謝

回答

2
  1. 取決於你的網站 - 如果你只需要靜態內容,您可以使用靜態網站發生器(BlogofileHyde的名字寫在Python等等),或者,如果你的網站提供動態內容,你應該使用一些框架類型(Flask,Django等)。使用靜態站點生成器,您在服務器上所需的全部內容都是爲您的內容提供服務的Web服務器,但對於動態站點,您可能需要額外的庫來支持數據庫支持,緩存等各種功能。

  2. 內置的Web服務器通常意味着當地的發展,通常不適合生產使用。後者使用特定的應用程序,如mod_wsgi(用於Apache)或uwsgi(用於Nginx)。但是儘量避免mod_python!

  3. WSGI表示Web服務器網關接口和是Web服務器和Web應用程序(或框架)之間使用的標準協議。 WSGI似乎是目前唯一的標準選擇,所以隨它吧。

另外,根據這個基準蟒蛇WSGI服務器,GEVENT和 的mod_wsgi的表現與低內存佔用很大的性能。他們並不是 聲稱自己是web框架,他們之間的區別是什麼 和像cherrypy,web2py這樣的web框架。

如前所述,WSGI只是Web服務器與Web應用程序交談的一種方式。 CherryPy和web2py處理模板,請求和會話處理,並通過WSGI將這些信息輸出到Web服務器。

如果您擔心速度,然後不要擔心太多.. :)

+0

謝謝。該網站需要提供動態內容。如果我做得對,框架用於開發Web應用程序,並且mod_wsgi在服務器中用於在應用程序和服務器之間進行通信,對吧? – Jensen

+0

是的,雖然mod_wsgi只是Apache特定的。 – plaes

0
  1. 您需要的Web服務器,Apache是​​一個流行的選擇。你可能還需要安裝數據庫,MySQL是免費的,容易和流行的。

  2. 最流行的(和最好在我看來)的Python框架Django

  3. 使用mod_wsgi阿帕奇許多運行Django的。框架通常只提供不適合作爲真實服務器的開發服務器。

  4. WSGI服務器可能只提供請求處理和編寫代碼的入口點,但框架提供了更多(用戶處理,管理界面,ORM,模板等)。

+1

沒有人應該用mod_python運行任何東西。它正式被解除。 –

+0

感謝修正,表示mod_wsgi。 – Lycha

+0

@Lycha謝謝。 Django似乎太複雜了,實際上我不需要強大的數據庫支持,服務器只需要維護用戶的信息和當前的鎖表。數據將被存儲在亞馬遜S3中。 – Jensen

1

WSGI是一個接口。它需要一個容器(例如mod_wsgi),一個應用程序(例如Django)和可選的中間件。應用程序可以直接針對WSGI構建,也可以構建在諸如Django之類的框架之上,爲您處理WSGI位。

不要在框架使用內置的Web服務器。它們通常不是爲性能而設計的,它們通常不能很好地與服務器的非WSGI部分集成。

+0

@lgnacio所以我需要在服務器端的Web服務器,數據庫和mod_wsgi。爲了在客戶端開發應用程序,一個框架足以開始。對? – Jensen

+0

數據庫是可選的,除非您正在開發面向數據庫的應用程序。如果框架有一個內置的Web服務器,那麼它可能就足夠了,但您可能需要查看一個單獨的WSGI容器。 –

0

這不完全是一個編程的問題,因爲你真的只是問是如何開始使用網站開發,並沒有明確的答案。

我誠心誠意推薦入門Django的,只是因爲它是非常有據可查,並具有很大的教程。它也使用Python,這意味着更容易理解其他人的代碼。

無論您選擇的Django還是別的什麼,只是選擇一個Web應用程序開發教程,並通過它運行。 Google for one(對於Django,您可以在非常有用的#django IRC頻道上查詢)。這應該爲您提供一個很好的基礎,至少有一個您理解的工作示例,以及一個正在運行的Web應用程序的不同部分以及它們如何一起工作的清晰畫面。

之後,您可以岔開,當你開發自己的實際web應用學到很多各種相關技能和技術,最好由你的需求驅動的(哪怕只是在第一次學習的目的)。

祝你好運!