1. 程式人生 > >騰訊雲CentOS伺服器上配置nginx+python3

騰訊雲CentOS伺服器上配置nginx+python3

之前寫過一篇騰訊雲Ubuntu伺服器上配置apache+python的部落格,實際上由於一些莫名其妙的原因,這個伺服器最終被我用成了一個php伺服器……
最近估計是被搞事的盯上了,伺服器瘋狂被ddos,以至於後臺直接限制了訪問……重灌系統以後想著一不做二不休,正好藉此機會改一下伺服器的架構,拋棄了apache+php,徹底轉投nginx+python3。正巧小猴後端最近也想重構,看上了nginx+tornado非阻塞呼叫方式對高併發量的優秀表現,所以也順手配了tornado做一些小測試

0x01 升級CentOS 7自帶的Python

CentOS 7自帶的python是2.7,而且系統自帶的一些元件(如yum)也是基於python 2工作的。所以第一步就是先升級一下系統自帶的python版本
這裡由於不能直接通過yum升級python,所以需要採用原始碼安裝

1. 下載原始碼
先從官網上下載python3的二進位制原始碼
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz
下載下來以後,解壓
xz -d Python-3.6.1.tar.xz
tar xvf Python-3.6.1.tar

2. 編譯並安裝
進入解壓後的資料夾,配置-編譯-安裝三連
./configure
sudo make
sudo make install
這裡需要注意,如果是一臺裸機,那麼你還需要先安裝gcc,畢竟make可全是靠gcc的……圖省事可以像我一樣直接裝一個開發工具包
yum groupinstall "Development Tools"


如果還沒有安裝openssl,在安裝python前也需要先裝上openssl,不然後面make install的時候會報錯說ssl模組缺失
yum install openssl-devel
安裝過程中還碰到一個問題,make install時提示缺少zlib模組。話說zlib模組不應該是Linux自帶的麼……
這裡先remove掉原始的zlib模組:yum remove zlib
再重灌一遍zlib的所有元件:yum install zlib*
重新make&install~

3. 讓系統預設使用python3
不加配置的話,python3會被安裝到/usr/local/bin目錄下
安裝以後,由於沒有修改連結,所以此時我們直接在shell下執行python開啟的還是python2
linux下,系統預裝的可執行程式連結在/usr/bin目錄下,cd進去可以發現這裡有python,python2,python2.7三個連結,ls -al可以看到三個連結都指向原始的python2.7
(個人感覺/usr/bin目錄下的連結有點類似於環境變數,shell會在這裡尋找要執行的程式。換句話說,在shell裡輸入python,python2,python2.7,shell都會到/usr/bin下找到對應連結,開啟執行python)
(當然linux下的環境變數是在/etc/profile檔案裡設定的,我這個只是一個不太恰當的比方)
我們的目標是,shell下輸入python,會直接執行新安裝的python3。所以我們只需要建立一個新的連結替換掉原始的連結
ln -s /usr/local/bin/python3.6 /usr/bin/python


注意要先rm掉原始的python連結

記得我之前提過,CentOS一些元件是基於python2執行的。在我們更改了python的預設連結以後,這些原本基於python2的程式就瓦特了,典型代表就是yum。所以我們需要把這些系統元件的配置檔案做下更改,使得他們能夠正確呼叫python2
以yum為例,vim /usr/bin/yum
把第一行的#!/usr/bin/python改成指向python2的連結名即可(如#!/usr/bin/python2
已知的依賴python2的系統元件還有 /usr/libexec/urlgrabber-ext-down

4. 配置一些python庫
python 3.6已經自帶了pip,所以我們就不需要再get-pip了,直接呼叫即可
eg. python -m pip install tornado

0x02 安裝配置nginx

……安裝部分沒什麼要說的,如果沒有特殊要求,直接yum install就行……
講道理nginx的配置比起apache來說,那是真的簡單易懂啊……
nginx配置檔案主要分成四部分:main(全域性設定)、server(主機設定)、upstream(上游伺服器設定,主要為反向代理、負載均衡相關配置)和 location(URL匹配特定位置後的設定)
這裡給出一個常用配置,具體每部分的設定可以參見 nginx伺服器安裝與配置檔案詳解

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  localhost;
        root         /var/www/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            index index.html;
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Scheme $scheme;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

修改完配置檔案後,重啟nginx,通過ip訪問彈出歡迎介面說明配置成功

0x03 安裝配置mariaDB

mariaDB是MySQL團隊被Oracle收購以後又開發的一個開源版,用起來和MySQL差不太多,yum預設安裝的也是mariaDB
配置和MySQL相差無幾,安裝以後,修改配置檔案my.cnf(在/etc目錄下)
新增一行設定字符集
character-set-server = utf8
儲存退出後重啟mariadb服務,shell輸入
mysql_secure_installation
進行初始化設定,例如root密碼,是否禁用遠端訪問等
由於伺服器是python環境,還需要python -m pip install mysql-python
然後這裡就會出問題了,報錯找不到ConfigParser模組
其實呢,你沒有缺少這個模組……只是在python3裡,這個模組改名叫configparser了
所以呢,我們去把這個模組重新命名一下就好啦
cp configparser.py ConfigParser.py(在/usr/local/lib/python3.6下)

順便提一個萌新可能經常犯的錯誤,安裝時只做了yum install mariadb,然後啟動服務死活啟動不起來,報錯說Unit not found……
那當然找不到啊……你得先安裝mariadb-server他才有服務可以跑啊……

0x04 測試

下面使用《Introduction to Tornado》第一章中的例子作為測試demo

# -*- coding:utf-8 -*-
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options

#定義一個配置選項port。default表示預設值,help表示在幫助中顯示的資訊,type表示該配置引數的資料型別,如果型別匹配錯誤會報錯。
define("port", default=8000, help="run on the given port", type=int)

#繼承了web的RequestHandler
class IndexHandler(tornado.web.RequestHandler):
    #對應http的get請求
    def get(self):
        #get_argument方法獲取http頁面請求引數,如果沒有傳入引數則顯示為預設值
        greeting = self.get_argument('greeting', 'Hello')
        #將響應的內容寫到頁面中
        self.write(greeting + ', tornado!')

if __name__ == "__main__":
    tornado.options.parse_command_line()
    #建立一個tornado應用。handlers是一個元組列表,其中每個元組的第一個元素是一個正則表示式,表示網址路由。第二個元素是所使用的RequestHandler類用來響應操作。
    app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
    #建立一個http伺服器
    http_server = tornado.httpserver.HTTPServer(app)
    #設定監聽埠
    http_server.listen(options.port)
    #啟動伺服器
    tornado.ioloop.IOLoop.instance().start()

在shell中輸入
nohup python demo.py
後臺執行測試指令碼,瀏覽器中訪問伺服器的8000埠,根據不同的get引數,可以看到相對應的輸出。

相關推薦

CentOS伺服器配置nginx+python3

之前寫過一篇騰訊雲Ubuntu伺服器上配置apache+python的部落格,實際上由於一些莫名其妙的原因,這個伺服器最終被我用成了一個php伺服器…… 最近估計是被搞事的盯上了,伺服器瘋狂被ddos,以至於後臺直接限制了訪問……重灌系統以後想著一不做二不休,

CentOS 7 安裝Nginx

lease 安裝nginx sta add ref roo AD 傳輸 als 以下安裝步驟需要root權限。 添加CentOS 7 EPEL 倉庫 sudo yum install epel-release 安裝Nginx sudo yum install nginx

cos伺服器傳圖片

1、首先去騰訊雲cos官網註冊賬號,選擇【物件儲存】; 2、接下來建立【儲存桶】,【儲存桶】的意思類似於單獨的伺服器空間,只有建立了儲存桶才能儲存資源; 3、系統會根據儲存桶的名稱 自動生成一個獨有的域名; 4、儲存空間搞定了,接下來就是從本地上傳圖片到雲伺服器了;同時

CentOS伺服器操作mysql的一些常用命令

mysql -uroot -p 進入mysql  systemctl status mysqld.service 檢視mysql狀態  systemctl stop mysqld.service 關閉mysql  systemctl start mysqld.service開

使用Navicat連線阿里ECS伺服器的MySQL資料庫

首先,這個連線方法,有個缺點,就是特別慢,暫時沒有找到解決方法,找到咯在補上。哪位猿友知道的,麻煩給我留個連線哈~一、首先要mysql授權 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY

Ubuntu伺服器搭建Apache2+MySQL+Python

去年底閒來無事搞到了騰訊雲的學生優惠,想著搞個伺服器玩玩,花了不少時間搭建環境,在此簡單記錄一下以便不時之需 首先,配置域名DNS,給域名新增一個解析,指向自己伺服器的公網IP…… 1. 安裝Ap

centos伺服器初體驗

前言最近有活動,挺便宜的,買了6年半的騰訊雲伺服器,打算有空的時候呢,跟朋友做點什麼,部署點什麼上去正文1、伺服器資訊伺服器買下來之後呢,就會拿到伺服器的關鍵資訊,先記下公網ip、賬號和初始密碼2、連線工具putty其他連結工具還有xshell等等ssh工具,這裡只是個人習慣

CentOS Apache伺服器配置https

參考:https://www.cnblogs.com/bincoding/p/5952411.html 環境 CentOS 7.2 Apache 1.申請SSL證書 https://console.qcloud.com/s

CentOS 7.5 安裝Nginx

以下安裝步驟需要root許可權。 1. 新增CentOS 7 EPEL 倉庫 sudo yum install epel-release 2. 安裝Nginx sudo yum install nginx 3. 啟動Nginx sudo systemctl start ngi

Centos 7.0 伺服器執行Java指令碼和jar檔案

1.執行java指令碼 編輯java原始檔 vim HelloWorld.java 建立並開啟HelloWorld.java檔案,編輯內容如下: public class HelloWor

pureftpd在的VPS安裝配置

pureftpd在騰訊雲的VPS上安裝配一、環境介紹: vps系統是CentOS Linux release 7.3.1611 (Core) 第一塊網卡是內網卡 二、pureftpd采用源碼編譯安裝: 下載安裝包以及編譯安裝過程 yum -y install make gcc gcc-c++ gcc-g77

從0開始在服務器搭建python3+flask+uwsgi+nginx服務器

我們 mac make ssl 騰訊雲 sgi 配置文件 wsgi div 以ssh方式連接騰訊雲,以mac為例 一、安裝Python3、flask、uwsgi和nginx (一)安裝基礎包 1、因為缺少gcc,沒法make,所以安裝gcc yum -y install

centos nginx安裝

安裝步驟 gcc:nginx編譯依賴gcc環境 yum install gcc-c++ pcre:(Perl Compatible Regular Expressions)是一個Perl庫,包括perl相容的正則表示式庫。nginx的http模組使用p

學生伺服器搭建個人網站(01)——配置web開發環境

最近突然想整個伺服器玩玩,百度了一下發現騰訊雲學生伺服器,完成學生認證之後一個月最低只要十塊錢就能玩起來,於是就買了一個,折騰了一天,算是在伺服器上搭建好了基本web開發環境(tomcat和jdk),並且也在伺服器上跑出了自己的第一個靜態網頁。下面詳細介紹環境的搭建過程。 首先需要說明的是,

CentOS系統配置tomcat

1.登入CentOS伺服器 在此,我運用的工具是LeapFTP .0.1 注意:1.ftp訪問雲服務的埠號為22            2.地址記得調成SFTP/SSH,因為你不選的話,會預設為FTP,這樣的話會引起連線超時的問題 2.通過ftp將tomc

centos7 伺服器搭建(Java、MySQL、Tomcat環境配置

最近由於需要上線一個網站,所以學習這麼搭建騰訊雲伺服器,對於linux之前真的很少接觸,最近慢慢學習如何慢慢linux。本部落格純屬個人筆記,供本人複習回顧。 搭建過程要感謝我的師弟,小亮亮,給了我騰訊雲伺服器的搭建部落格文章,參考了他的文章,自己照葫蘆畫瓢也開

Centos 安裝nginx

新增CentOS 7 EPEL 倉庫sudo yum instal lepel-release安裝Nginxsudo yum install nginx啟動Nginxsudo systemctl start nginx啟動防火牆sudo systemctl start fir

Ubuntu伺服器JDK+Tomcat+Mysql配置

1.前言 最近在騰訊雲買了個學生優惠1元主機,裝的是Ubuntu系統,感覺還不錯,接下來講講看如何給伺服器配置JDK+Tomcat+Mysql。 2.工具 3.步驟 1. java安裝 先去下載對應的jdk版本,下載地址在開頭,因為小編

Linux伺服器搭建(九) LinuxDB2的客戶端實現資料的備份和恢復

問題:DB2伺服器裝在AIX上,不允許直接利用伺服器做資料的匯出匯入。但是由於專案需要,需要頻繁的對一些表進行資料的備份和恢復。所以只能在一個其他伺服器上安裝DB2客戶端,通過客戶端來實現資料的備份和恢復。 思路:先從IBM官網下載客戶端;然後安裝到一個應用伺服器上(Cen

的Ubuntu安裝並啟動nginx

注:為ubuntu新手寫作,高手繞路 這裡是騰訊雲的雲伺服器新手安裝使用說明 雲伺服器配置部署 但是值得注意的是這裡是以CentOS為例進行說明的,對於使用ubuntu的新手使用者來說,還是有些不同。 安裝nginx 安裝之前我們先獲取