一個簡單的Snappy Ubuntu python webserver

來源:互聯網
上載者:User

在前面的文章中,我們已經介紹了如何使用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.



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.