博客 / 詳情

返回

tornado 4.2.1 移植指南(openEuler 20.03 LTS SP1)

介紹

簡要介紹

Tornado是一個Python Web框架和異步網絡庫,最初由FriendFeed開發。 通過使用非阻塞網絡I / O,Tornado可以擴展到成千上萬的開放連接,非常適合長時間輪詢,WebSocket和需要與每個用户建立長期連接的其他應用程序。
本案例使用x86_64架構虛擬機,通過評估工具x2openEuler評估tornado 4.2.1軟件移植到openEuler操作系統的兼容性,並根據評估結果完成軟件移植。

語言:C++/Python

一句話描述:一個Python Web框架和異步網絡庫

開源協議:Apache

建議的版本

建議使用版本為tornado 4.2.1。

説明:
本文檔適用於tornado 4.2.1,其他版本的tornado移植步驟也可參考本文檔。

環境要求

操作系統要求

操作系統 版本
openEuler 20.03 LTS SP1
CentOS 7.6

安裝操作系統

如果是全新安裝操作系統,安裝方式建議不要使用最小化安裝,否則很多軟件包需要手動安裝,可選擇“Server with GUI”安裝方式。
安裝openEuler操作系統請參考:https://openeuler.org/zh/docs/20.03_LTS_SP1/docs/Installation/installation.html。

兼容性評估

獲取tornado的RPM包

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-tornado-4.2.1-5.el7.x86_64.rpm
下載x2openEuler工具
下載指引:https://www.openeuler.org/zh/other/migration/
部署工具
rpm -ivh x2openEuler-2.0.0-1.x86_64.rpm
注意:安裝rpm時需要使用root用户,且目前需要網絡(用於下載安裝依賴)
注意:根據提示安裝依賴包如bzip2-devel等
su x2openEuler
x2openEuler redis-db -init
依次錄入redis數據庫的ip:127.0.0.1
端口:6379
數據庫索引號(0-16):0
密碼(工具會對密碼加密處理):如果redis密碼沒有設置或者為空時,直接回車即可
x2openEuler init source_centos7.6-openEuler20.03-LTS-SP1.tar.gz
備註:x2openEuler使用rpm安裝完成後會在/opt/x2openEuler目錄下帶有source_centos7.6-openEuler20.03-LTS-SP1.tar.gz這個默認資源包
需要支持centos8.2到openEuler20.03-LTS-SP1的評估,則需獲取對應的靜態資源包導入,如對應的資源包為source_centos8.2-openEuler20.03-LTS-SP1.tar.gz,導入此包命令:x2openEuler init source_centos8.2-openEuler20.03-LTS-SP1.tar.gz,請示情況選擇對應的資源包
掃描軟件
x2openEuler scan python-tornado-4.2.1-5.el7.x86_64.rpm
注意要分析的移植文件需要有能夠讓x2openEuler用户可以讀取的權限
掃描完成後會在/opt/x2openEuler/output目錄生成html格式的報告

查看評估結果

軟件兼容性評估報告分三塊內容展示軟件兼容性,分別是依賴包兼容性、C/C++接口兼容性、java接口兼容性,依賴包兼容性反映了軟件包安裝過程中的直接依賴,非100%表明無法正確安裝;接口兼容性反映的是單個軟件運行過程中對其他軟件包、動態庫或系統接口的調用變化,非100%表明在某個功能調用時可能會觸發異常,未調用到時可能表現正常;部分結果建議人工複核,最終軟件包使用建優先級建議 openEuler已移植包>openEuler上人工重編譯包>centos軟件包。

結果:通過報告可知外部接口兼容性100%,依賴包兼容性人工複核後通過,經評估tornado4.2.1軟件包在openEuler 20.03 LTS SP1系統上兼容,可安裝此軟件包至openEuler 20.03 LTS SP1系統進行驗證。

安裝tornado

rpm安裝

由於兼容性報告顯示兼容,嘗試直接用下載的rpm包安裝。

[root@localhost ~]# yum install python-tornado-4.2.1-5.el7.x86_64.rpm -y
Last metadata expiration check: 0:11:53 ago on Mon 22 Mar 2021 01:25:06 PM CST.
Dependencies resolved.
================================================================================
 Package                              Arch   Version         Repository    Size
================================================================================
Installing:
 python-tornado                       x86_64 4.2.1-5.el7     @commandline 641 k
Installing dependencies:
 python2-backports                    x86_64 1.0-17.oe1      everything   9.2 k
 python2-backports-ssl_match_hostname noarch 3.7.0.1-2.oe1   everything    16 k
 python2-ipaddress                    noarch 1.0.23-1.oe1    everything    41 k
 python3-pycurl                       x86_64 7.43.0.3-1.oe1  OS            65 k

Transaction Summary
================================================================================
Install  5 Packages

Total size: 772 k
Total download size: 131 k
Installed size: 4.1 M
Downloading Packages:
(1/4): python2-backports-1.0-17.oe1.x86_64.rpm   53 kB/s | 9.2 kB     00:00
(2/4): python2-backports-ssl_match_hostname-3.7  63 kB/s |  16 kB     00:00
(3/4): python2-ipaddress-1.0.23-1.oe1.noarch.rp 126 kB/s |  41 kB     00:00
(4/4): python3-pycurl-7.43.0.3-1.oe1.x86_64.rpm 113 kB/s |  65 kB     00:00
--------------------------------------------------------------------------------
Total                                           226 kB/s | 131 kB     00:00
warning: /var/cache/dnf/OS-fcb43ce6e8cef091/packages/python3-pycurl-7.43.0.3-1.oe1.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID b25e7f66: NOKEY
OS                                               14 kB/s | 2.1 kB     00:00
Importing GPG key 0xB25E7F66:
 Userid     : "private OBS (key without passphrase) <defaultkey@localobs>"
 Fingerprint: 12EA 74AC 9DF4 8D46 C69C A0BE D557 065E B25E 7F66
 From       : http://repo.openeuler.org/openEuler-20.03-LTS-SP1/OS/x86_64/RPM-GPG-KEY-openEuler
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : python2-ipaddress-1.0.23-1.oe1.noarch                  1/5
  Installing       : python2-backports-1.0-17.oe1.x86_64                    2/5
  Installing       : python2-backports-ssl_match_hostname-3.7.0.1-2.oe1.n   3/5
  Installing       : python3-pycurl-7.43.0.3-1.oe1.x86_64                   4/5
  Installing       : python-tornado-4.2.1-5.el7.x86_64                      5/5
  Running scriptlet: python-tornado-4.2.1-5.el7.x86_64                      5/5
  Verifying        : python3-pycurl-7.43.0.3-1.oe1.x86_64                   1/5
  Verifying        : python2-backports-1.0-17.oe1.x86_64                    2/5
  Verifying        : python2-backports-ssl_match_hostname-3.7.0.1-2.oe1.n   3/5
  Verifying        : python2-ipaddress-1.0.23-1.oe1.noarch                  4/5
  Verifying        : python-tornado-4.2.1-5.el7.x86_64                      5/5
Installed:
  python-tornado-4.2.1-5.el7.x86_64
  python2-backports-1.0-17.oe1.x86_64
  python2-backports-ssl_match_hostname-3.7.0.1-2.oe1.noarch
  python2-ipaddress-1.0.23-1.oe1.noarch
  python3-pycurl-7.43.0.3-1.oe1.x86_64

Complete!

安裝成功。

運行和驗證

檢查版本

[root@localhost ~]# python
Python 2.7.18 (default, Dec  8 2020, 03:37:36)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tornado
>>> tornado.version
'4.2.1'

使用tornado

編寫一個handlers來響應一個標準的http請求。(代碼來自tornado官網https://www.tornadoweb.org/en/stable/)

vim hello.py

編輯內容如下:

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

編輯後保存退出,在終端輸入如下命令:

python hello.py

打開另外一個終端,輸入如下命令。

curl http://localhost:8888

系統回顯如下,則表示安裝成功。

Hello, world

相關鏈接:

  1. openEuler官網:www.openeuler.org/
  2. OS遷移專區: https://www.openeuler.org/zh/...
  3. openEuler兼容性列表:https://www.openeuler.org/zh/...
  4. openEuler遷移指南:https://www.openeuler.org/zh/...
user avatar guhejiahongdoumianbao 頭像 embeddedarm 頭像 lenomirei 頭像 u_16213673 頭像 Athenavi 頭像 liucx 頭像
6 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.