在前面的文章中,我們已經介紹了如何使用golang來建立我們的webserver.在今天的文章中,我們來介紹如何使用python在Snappy Ubuntu上建立一個簡單的webserver.如果大家對我們使用的snapcraft還不是很熟的話,請參考文章"利用snapcraft為我們的Snappy Ubuntu應用打包".如果大家對如何在arm的裝置上打snap包的話,請參考文章"如何為我們的Snappy Ubuntu應用編譯並打包Snap(2)".
1)建立我們的簡單的python webserver
我們可以參考一些比較簡單的python webserver代碼.在網路上有很多的代碼.今天我們就採用其中的一種方案:
server.py
#!/usr/bin/pythonfrom BaseHTTPServer import BaseHTTPRequestHandler,HTTPServerPORT_NUMBER = 8080#This class will handles any incoming request from#the browser class myHandler(BaseHTTPRequestHandler):#Handler for the GET requestsdef do_GET(self):self.send_response(200)self.send_header('Content-type','text/html')self.end_headers()# Send the html messageself.wfile.write("Hello World !")returntry:#Create a web server and define the handler to manage the#incoming requestserver = HTTPServer(('', PORT_NUMBER), myHandler)print 'Started httpserver on port ' , PORT_NUMBER#Wait forever for incoming htto requestsserver.serve_forever()except KeyboardInterrupt:print '^C received, shutting down the web server'server.socket.close()
我們可以直接在我們的terminal中打入如下的命令:
$ python server.py Started httpserver on port 8080
如果在我們的瀏覽器中,我們可以直接存取該地址:
顯然我們的webserver是正在啟動並執行.在接下來的章節中,我們來把該python伺服器來打包成為我們的snap.
2)製作python webserver snap
在這一節中,我們來展示如何製作一個python webserver的snap.首先,我們來仿照在文章" 利用snapcraft為我們的Snappy Ubuntu應用打包"介紹的那樣來建立我們的snapcraft.yaml檔案.我們的檔案如下:
snapcraft.yaml
name: pythonserverversion: 1.0vendor: XiaoGuo, Liu <xiaoguo.liu@canonical.com>summary: a simple python serverdescription: This is the webserver API in python demoicon: icon.pngservices: mywebserver: description: "A webserver in python" start: bin/server caps: - network-client - network-serviceparts: server: plugin: python3 source: . source: plugin: copy files: ./server.py: bin/server
在這裡,我們使用parts來安裝我們所需要的python的運行環境,同時,我們也把我們的server.py考入到我們所需要的位置.我們的python webserver將會以一種service的方式來運行.我們的整個項目的源碼在如下的 地址可以找到:
https://github.com/liu-xiao-guo/pythonserver
我們在termial中打入如下的命令來進行打包:
$ snapcraft
這樣我們就可以生產我們所需要的snap包.
liuxg@liuxg:~/snappy/examples/pythonserver$ ls icon.png parts pythonserver_1.0_amd64.snap server.py snap snapcraft.yaml stage
我們可以把它部署到我們的KVM環境中:
(amd64)ubuntu@localhost:~$ snappy list -vName Date Version Developer ubuntu-core 2015-11-13 10 ubuntu* ubuntu-core 2015-10-23 9 ubuntu config-example 2015-11-30 IGbdLSNDOROd sideload* hello-xiaoguo 2015-11-05 IEeNEfBRVYGe sideload hello-xiaoguo 2015-11-27 IGTcTdAICYOL sideload* pastebinit 2015-11-02 1.4.0.0.2 mvo* pythonserver 2015-12-09 IHQdDRKVUaJc sideload pythonserver 2015-12-09 IHQdJgYaaSYY sideload* restapi 2015-12-07 IHMFUOgUERWG sideload* snappy-debug 2015-12-07 0.7 canonical* webdm 2015-10-23 0.9.2 canonical* generic-amd64 2015-10-23 1.4 canonical* (amd64)ubuntu@localhost:~$ sudo snappy service statusSnapServiceStatepythonservermywebserverenabled; loaded; active (running)webdmsnappydenabled; loaded; active (running)
我們可以使用我們的browser進行測試.可以看見和上面一樣的一個簡單的python webserver.