python+nginx+uwsgi的服務(wù)器搭建
搭建一個(gè)python的服務(wù)器鳞芙,用來(lái)接收API的開(kāi)發(fā)积蜻,以及進(jìn)行數(shù)據(jù)爬蟲(chóng)相關(guān)分析
阿里云的云服務(wù)器(ECS)可以選擇多種操作系統(tǒng)彻消,打算用它運(yùn)行 Drupal 或者 WordPress ,你最好選擇 Linux 系統(tǒng)宾尚,這篇文章的演示是基于阿里云的 CentOS 操作系統(tǒng)的服務(wù)器煌贴。我們?cè)谏厦娲罱ㄒ粋€(gè) nginx + ots + oss + uwsgi,我們不過(guò)多解釋什么是什么,而是著重講流程與方法牛郑,想了解具體的細(xì)節(jié)淹朋,去搜索下吧:)這個(gè)手冊(cè)是在阿里云上測(cè)試的,不過(guò)應(yīng)該也適用于其它使用 CentOS 系統(tǒng)的服務(wù)器础芍。
購(gòu)買(mǎi)服務(wù)器
在阿里云網(wǎng)站進(jìn)行購(gòu)買(mǎi)服務(wù)器仑性,選擇對(duì)應(yīng)的操作系統(tǒng)如下圖所示
遠(yuǎn)程控制你的服務(wù)器
遠(yuǎn)程控制 Linux 類(lèi)型的系統(tǒng)的服務(wù)器,比如 CentOS 系統(tǒng)的服務(wù)器歼捐,一般不像 Windows 服務(wù)器那樣,使用圖形界面的遠(yuǎn)程控制窥岩。我們需要使用命令行工具,遠(yuǎn)程連接到服務(wù)器晃洒,然后使用命令去控制服務(wù)器朦乏。Windows 用戶(hù)可以使用 Putty ,Mac 用戶(hù)可以使用系統(tǒng)自帶的終端工具或者一些第三方的工具eg: SSH Shell吃引。然后用 ssh 命令刽锤,連接到你的服務(wù)器。像這樣:
ssh:root@你的服務(wù)器地址
倉(cāng)庫(kù)
為了可以使用 CentOS 系統(tǒng)的包管理工具去安裝更多的東西庐氮,我們需要單獨(dú)安裝一些額外的軟件倉(cāng)庫(kù)宋彼。
EPEL
sudo yum install epel-release -y
IUS
sudo yum install https://centos7.iuscommunity.org/ius-release.rpm -y
IUS 倉(cāng)庫(kù)里面有我們需要的一些新的軟件包,比如 PHP 7音婶。注意我們安裝的是為 CentOS 7 這個(gè)系統(tǒng)準(zhǔn)備的 IUS 倉(cāng)庫(kù)莱坎,如果你的系統(tǒng)是 CentOS 6,你需要到 IUS 網(wǎng)站上去查找適合的倉(cāng)庫(kù)的下載地址瞳收。
安裝NGINX
NGINX 這個(gè)軟件包已經(jīng)包裝在 EPEL 倉(cāng)庫(kù)里了厢汹,之前我們已經(jīng)安裝了這個(gè)倉(cāng)庫(kù),所以可以直接使用包管理工具去安裝 NGINX界弧。
sudo yum install nginx -y
啟動(dòng)
sudo systemctl start nginx
開(kāi)啟自啟動(dòng)
sudo systemctl enable nginx
服務(wù)啟動(dòng)以后,你就可以在瀏覽器上使用服務(wù)器的 IP 地址划栓,或者指向這個(gè)地址的域名訪(fǎng)問(wèn)服務(wù)器指定的目錄了条获。你會(huì)看到類(lèi)似下面的圖片,就說(shuō)明可以了
配置 nginx 虛擬主機(jī)
- 配置nginx的配置文件
- 重新啟動(dòng)nginx {sudo systemctl reload nginx}
配置文件如下圖所示
nginx的默認(rèn)配置
nginx的配置
安裝uwsgi
通過(guò)pip進(jìn)行安裝,如果安裝權(quán)限不夠,用sudo進(jìn)行安裝
sudo pip install uwsgi
uwsgi啟動(dòng)
sudo uwsgi --ini /etc/uwsgi.ini
uwsgi 的相關(guān)配置
這樣就能訪(fǎng)問(wèn)相關(guān)網(wǎng)頁(yè)了
配置出現(xiàn)錯(cuò)誤的信息
*** Starting uWSGI 2.0.15 (64bit) on [Wed Dec 13 14:47:37 2017] ***
compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-16) on 13 December 2017 14:46:26
os: Linux-3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017
nodename: moshimol
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 1
current working directory: /home/moshimol
writing pidfile to /var/run/uwsgi.pid
detected binary path: /usr/bin/uwsgi
setgid() to 995
setuid() to 997
your processes number limit is 7283
your memory page size is 4096 bytes
***
detected max file descriptor number: 65535
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
Listen queue size is greater than the system max net.core.somaxconn (128).
說(shuō)明listen 監(jiān)聽(tīng)的過(guò)多,設(shè)置uwsgi的配置文件到相關(guān)100
2017/12/13 15:00:00 [error] 6569#0: *307 connect() failed (111: Connection refused) while connecting to upstream, client: 115.236.171.18, server: 106.14.207.197, request: "GET /fitness/env HTTP/1.1", upstream: "uwsgi://127.0.0.1:6000", host: "106.14.207.197"
2017/12/13 15:00:02 [error] 6569#0: *307 connect() failed (111: Connection refused) while connecting to upstream, client: 115.236.171.18, server: 106.14.207.197, request: "GET /fitness/env HTTP/1.1", upstream: "uwsgi://127.0.0.1:6000", host: "106.14.207.197"
2017/12/13 15:00:02 [error] 6569#0: *307 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 115.236.171.18, server: 106.14.207.197, request: "GET /favicon.ico HTTP/1.1", host: "106.14.207.197", referrer: "http://106.14.207.197/fitness/env"
一個(gè)API就寫(xiě)成功了
http://106.14.207.197/fitness/env