很早很早的時候,computer這個東西習慣于被稱之為計算機,因為它的主要功能是完成一些科學計算的東西,我記得自己鼓搗它的時候,就是計算,根本就沒有想到它有早一日還可以用來做別的。后來另外一個名字“電腦”逐漸被人們接收了,特別是網絡發展起來之后,computer這個東西,如果要不上網,簡直就不知道干什么。而且,現在似乎還有一個趨勢,越來越強化網絡的作用,而本機的功能雖然硬件在提升,可以做的事情感覺不多了。
不管怎么,網絡是離不開了。上網,連上網之后干什么呢?就是要登錄某某網站。不是聯網之后自動的網上內容就涌進自己的計算機,而是要操作一下那個瀏覽器,輸入網址,打開某個網站的頁面,才能得到我們要看的內容。所以,網絡上,必須有網站,才能讓別人來看。上網——看網頁,這是發生頻率非常高的動作。
那么這里就涉及到網站。網站是誰做的呢?這是廢話,人做的。只不過這里的人可能是給某個公司打工的,也可能是類似個體戶的。
網站怎么做呢?做法很多啦。有直接用html網頁寫的,有用別的什么開源系統做的,等等。
從本講開始,我和列位看官就來看看,用python怎么做一個網站。
[維基百科對網站有如下描述:](http://zh.wikipedia.org/wiki/%E7%B6%B2%E7%AB%99)
> 網站(英文:Website)是指在互聯網上,根據一定的規則,使用HTML等工具制作的用于展示特定內容的相關網頁的集合。簡單地說,網站是一種通信工具,就像布告欄一樣,人們可以通過網站來發布自己想要公開的信息,或者利用網站來提供相關的網絡服務。人們可以通過網頁瀏覽器來訪問網站,獲取自己需要的信息或者享受網絡服務。世界上第一個網站由蒂姆·伯納斯-李創建于1991年8月6日。
## 網站組成
網站是由兩大部分組成,一是服務器,二是程序。
服務器,是硬件部分。如果看官有條件,可以自己購買服務器,然后自己建立機房或者托管到什么信的機房等等,這樣擁有了自己的服務器啦。當然,要不少銀兩的。如果銀兩不足,就可以用省錢的方法,購買某公司所提供的服務器空間,因為市場經濟帶來的好處,總有人會想到不是人人都自己買得起服務器的,也不是人人都有必要自己買服務器的。但是,如果還要做網站,自己又不擁有服務器怎么辦?所以,有人就做這個生意,出租他自己的服務器的一部分空間給我們這些窮人,這樣就雙贏了,窮人只要有技術,就可以很低的代價在網上擁有自己的網站,富人(出租服務器的)也能夠通過出租收租金啦。就好比租房子的人和房東的關系一樣。當然,這樣做的結果就是必須要跟別人共同租用一個服務器,如果自己單獨租一個,價格就又貴了。
如果,我是說如果,如果你做的網站不打算放到網上讓別人隨時看(有這樣的嗎?那不是白做了嗎?有!而且很多,比如我的網站還沒有做好,我就不讓別人看),這時候還可以將自己的電腦當做一個服務器,在自己的電腦上發布自己的網站,自我欣賞,必要時把把旁邊人拉到顯示器前面看看吧。很自戀啦。(在自己的電腦發布的網站,其實也能夠通過互聯網被人看到,就是需要一點小小的技術來發布了,這個不是重點,本教程不講,需要者可以google或者聯系我。)
看官和我在后續的學習中,用的服務器就是自己的電腦啦。我們都是喜歡自戀的。
另外一部分就是服務器里面裝的軟件部分,通常所說的網站,更多的是指這個部分。一般來講,這個部分是比較復雜的,因為網站不同,而有很多不同的程序。但是,不管什么網站,都得有一個讓別人看的界面,這就是一個網頁,或者說,只要有一個網頁了,它就可以做為一個網站發布出去。
那么就出現了一種比較簡單的網站,就是由一些網頁組成,而且,這些網頁僅僅是用html代碼寫成的(或者用html網頁編輯工具,有圖文形式的,就可以編輯網頁),回想我最早做的那個網頁,就是純粹用html代碼寫的。這樣寫出來的網頁,用行話說是“靜態的”。意思就是指它不允許用戶和網站有什么交互,只是讓別人看。比如看客手欠,非要搜索什么東西,對不起,網站不提供此功能。這種網站現在比較少了。
如果要增加交互功能,怎么辦?那就要有處理用戶向網站提交的信息的程序了。這樣,網站就多了一部分,行話常說是“后端”,對應前面說的那個直接展示給看客的叫做“前端”。“后端”所做的事情就是處理“前端”用戶提交的信息,然后給用戶一個反饋。這樣就交互起來了。
此外,為了將網站上的數據保存起來,通常會用到一個叫做“數據庫”的東西(這個不是必須的,有的網站就沒有數據庫,有的網站用別的方式存儲數據,比如文本等),數據庫主要是存儲某些數據,讓網站的后端和前端從這里將某些數據讀出來,顯示給看官,或者將看官提交的某些數據存進去,以便以后使用。
數據庫是計算機行業中的一個專業門來,看官有興趣,可以在這個行業中深入,公司里面有個職位:DBA,就是干這個的。
> 數據庫,簡單來說是本身可視為電子化的文件柜——存儲電子文件的處所,使用者可以對文件中的數據運行新增、截取、更新、刪除等操作。
>
> 數據庫管理員 (英語:Database administrator,簡稱DBA),是負責管理數據庫的人。數據庫管理員負責在系統上運行數據庫,執行備份,執行安全策略和保持數據庫的完整性。因為管理數據庫是個很龐大的職務,每個公司或組織的數據庫管理員的需要也是很不同。一個大公司可能有很多數據庫管理員,但是一個小公司可能也沒有數據庫管理員,而讓系統管理員管理數據庫。
綜合以下,一般來講,網站應該是這樣的:
[](https://github.com/qiwsir/ITArticles/blob/master/Pictures/30101.png)
為了寫一個漂亮的前端,一般都要用CSS和JavaScript,但是,本教程中,因為不是專門講授這些,所以,涉及到前端的時候,就不用CSS和JavaScript了,這樣的一個惡果就是界面相當丑陋。請看官忍受吧。
在控制端,就是前面說的后端,僅適用一種語言:Python。這是本教程的終極目的,如何用Python做網站。
數據庫,我選用MySQL,關于這個數據庫有很多傳說。例如[維基百科上這么說:](http://zh.wikipedia.org/wiki/MySQL)
> MySQL(官方發音為英語發音:/ma? ??skju???l/ "My S-Q-L",[1],但也經常讀作英語發音:/ma? ?si?kw?l/ "My Sequel")原本是一個開放源代碼的關系數據庫管理系統,原開發者為瑞典的MySQL AB公司,該公司于2008年被升陽微系統(Sun Microsystems)收購。2009年,甲骨文公司(Oracle)收購升陽微系統公司,MySQL成為Oracle旗下產品。
>
> MySQL在過去由于性能高、成本低、可靠性好,已經成為最流行的開源數據庫,因此被廣泛地應用在Internet上的中小型網站中。隨著MySQL的不斷成熟,它也逐漸用于更多大規模網站和應用,比如維基百科、Google和Facebook等網站。非常流行的開源軟件組合LAMP中的“M”指的就是MySQL。
>
> 但被甲骨文公司收購后,Oracle大幅調漲MySQL商業版的售價,且甲骨文公司不再支持另一個自由軟件項目OpenSolaris的發展,因此導致自由軟件社區們對于Oracle是否還會持續支持MySQL社區版(MySQL之中唯一的免費版本)有所隱憂,因此原先一些使用MySQL的開源軟件逐漸轉向其它的數據庫。例如維基百科已于2013年正式宣布將從MySQL遷移到MariaDB數據庫。
不管怎么著,MySQL依然是一個不錯的數據庫選擇,足夠支持看官完成一個相當不小的網站。
至于服務器空間,就放在自己的電腦上吧。
## 從數據庫開始
數據庫是我們要做的網站的一個基礎,我在這里不演示不用數據庫的情況,因為那種玩具網站,雖然講授簡單,但是看官總是有點暈乎,距離真實的環境差距太大了,既然學,就學點真的。
從現在開始,就進入網站建設的進程。
### 安裝MySQL
你的電腦不會天生就有MySQL,它本質上也是一個程序,需要安裝到電腦中。
如果看官跟我一樣,用的是ubuntu操作系統,可以用下面的方法(我相信,用ubuntu的一定很少,不過,如果看官要成為一個優秀的程序員,我還是推薦使用這個操作系統,或者別的LINUX發行版。哈哈)。
第一步,在shell端運行如下命令:
~~~
sudo apt-get install mysql-server
~~~
這樣,看官的電腦上就已經安裝好了這個數據庫。當然,當然,還要進行配置。
第二步,配置MySQL
安裝之后,運行:
~~~
service mysqld start
~~~
啟動mysql數據庫。然后進行下面的操作,對其進行配置。(啟動數據庫這步是后來補充的,網友[王孝先](http://weibo.com/274644556?from=feed&loc=nickname)告訴我,這個不能丟掉。謝謝王先生。)
默認的MySQL安裝之后根用戶是沒有密碼的,看官注意,這里有一個名詞“根用戶”,其用戶名是:root。運行:
~~~
$mysql -u root
~~~
在這里之所以用-u root是因為我現在是一般用戶(firehare),如果不加-u root的話,mysql會以為是firehare在登錄。注意,我在這里沒有進入根用戶模式,因為沒必要。一般來說,對mysql中的數據庫進行操作,根本沒必要進入根用戶模式,只有在設置時才有這種可能。
進入mysql之后,會看到>符號開頭,這就是mysql的命令操作界面了。
下面設置Mysql中的root用戶密碼了,否則,Mysql服務無安全可言了。
~~~
mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY "123456";
~~~
注意,我這兒用的是123456做為root用戶的密碼,但是該密碼是不安全的,請大家最好使用大小寫字母與數字混合的密碼,且不少于8位。
以后如果在登錄數據庫,就可以用剛才設置的密碼了。
除了上面的安裝過程,看官如果用的是別的操作系統,可以在google上搜索相應的安裝方法,恕我不在這里演示,因為我只能演示在ubuntu上的安裝流程。不過,google會幫你解決安裝遇到的問題。
### 運行mysql
安裝之后,就要運行它,并操作這個數據庫,建立一個做網站的基礎。我這樣來運行數據庫:
~~~
qw@qw-Latitude-E4300:~$ mysql -u root -p
Enter password:
~~~
輸入數據庫的密碼,之后出現:
~~~
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 373
Server version: 5.5.38-0ubuntu0.14.04.1 (Ubuntu)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
~~~
看到這個界面內容,就說明你已經進入到數據里面了。接下來就可以對這個數據進行操作。例如:
~~~
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| carstore |
| cutvideo |
| itdiffer |
| mysql |
| performance_schema |
| phpcms |
| phpcms2 |
| pushsystem |
| sipras |
| test |
+--------------------+
~~~
用這個命令,就列出了當前mysql已經有的數據庫。
除了這種用命令行形式對數據庫進行操作之外,還有不少可視化方式操作數據庫的工具。這里也不作介紹,有興趣的請google。不過,我喜歡命令行。
- 第零部分 獨上高樓,望盡天涯路
- 嘮叨一些關于Python的事情
- 為什么要開設本欄目
- 第一部分 積小流,至江海
- Python環境安裝
- 集成開發環境(IDE)
- 數的類型和四則運算
- 啰嗦的除法
- 開始真正編程
- 初識永遠強大的函數
- 玩轉字符串(1):基本概念、字符轉義、字符串連接、變量與字符串關系
- 玩轉字符串(2)
- 玩轉字符串(3)
- 眼花繚亂的運算符
- 從if開始語句的征程
- 一個免費的實驗室
- 有容乃大的list(1)
- 有容乃大的list(2)
- 有容乃大的list(3)
- 有容乃大的list(4)
- list和str比較
- 畫圈還不簡單嗎
- 再深點,更懂list
- 字典,你還記得嗎?
- 字典的操作方法
- 有點簡約的元組
- 一二三,集合了
- 集合的關系
- Python數據類型總結
- 深入變量和引用對象
- 賦值,簡單也不簡單
- 坑爹的字符編碼
- 做一個小游戲
- 不要紅頭文件(1): open, write, close
- 不要紅頭文件(2): os.stat, closed, mode, read, readlines, readline
- 第二部分 窮千里目,上一層樓
- 正規地說一句話
- print能干的事情
- 從格式化表達式到方法
- 復習if語句
- 用while來循環
- 難以想象的for
- 關于循環的小伎倆
- 讓人歡喜讓人憂的迭代
- 大話題小函數(1)
- 大話題小函數(2)
- python文檔
- 重回函數
- 變量和參數
- 總結參數的傳遞
- 傳說中的函數條規
- 關于類的基本認識
- 編寫類之一創建實例
- 編寫類之二方法
- 編寫類之三子類
- 編寫類之四再論繼承
- 命名空間
- 類的細節
- Import 模塊
- 模塊的加載
- 私有和專有
- 折騰一下目錄: os.path.<attribute>
- 第三部分 昨夜西風,亭臺誰登
- 網站的結構:網站組成、MySQL數據庫的安裝和配置、MySQL的運行
- 通過Python連接數據庫:安裝python-MySQLdb,連接MySQL
- 用Pyton操作數據庫(1):建立連接和游標,并insert and commit
- 用Python操作數據庫(2)
- 用Python操作數據庫(3)
- python開發框架:框架介紹、Tornado安裝
- Hello,第一個網頁分析:tornado網站的基本結構剖析:improt模塊、RequestHandler, HTTPServer, Application, IOLoop
- 實例分析get和post:get()通過URL得到數據和post()通過get_argument()獲取數據
- 問候世界:利用GAE建立tornado框架網站
- 使用表單和模板:tornado模板self.render和模板變量傳遞
- 模板中的語法:tornado模板中的for,if,set等語法
- 靜態文件以及一個項目框架
- 模板轉義
- 第四部分 暮然回首,燈火闌珊處
- requests庫
- 比較json/dictionary的庫
- defaultdict 模塊和 namedtuple 模塊
- 第五部分 Python備忘錄
- 基本的(字面量)值
- 運算符
- 常用的內建函數
- 擴展閱讀(來自網絡文章)
- 人生苦短,我用Python