日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python开发web项目_Django2:Web项目开发入门笔记(20)

發(fā)布時間:2023/12/13 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python开发web项目_Django2:Web项目开发入门笔记(20) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

該樓層疑似違規(guī)已被系統(tǒng)折疊 隱藏此樓查看此樓

這一篇教程,我們一起來了解如何在CentOS系統(tǒng)中將Django2的Web項目部署到Nginx服務(wù)器。

CentOS系統(tǒng)雖然和Ubuntu系統(tǒng)都是Linux系統(tǒng),但是環(huán)境搭建和部署過程還是有一些區(qū)別。

整個流程分為幾個部分:

安裝圖形桌面與遠(yuǎn)程登錄

安裝Python3.6及相關(guān)庫文件

安裝Django2

安裝uWSGI

安裝Nginx

配置Nginx

使用ini文件啟動uWSGI服務(wù)器

使用supervisor管理uWSGI服務(wù)器

接下來,我們就逐一完成這些步驟。

一、安裝圖形界面

在此之前大家應(yīng)該先完成CentOS系統(tǒng)的最小化安裝。

然后,安裝我們需要的圖形界面和遠(yuǎn)程登錄功能。

因為遠(yuǎn)程登錄需要圖形界面支持,所以從順序上先進(jìn)行圖形界面的安裝,再安裝遠(yuǎn)程登錄。

(一)使用Gnome桌面

GNOME桌面比較耗費系統(tǒng)資源,在主機上我們更多是通過命令行進(jìn)行操作,所以,我比較傾向于使用面向低性能硬件的Xfce桌面。

如果選擇使用Xfce桌面,大家可以略過此步驟,直接瀏覽第(二)部分。

1、安裝軟件源

執(zhí)行命令:

yum install epel* -y

2、更新軟件包

執(zhí)行命令:

yum -y upgrade

3、安裝桌面支持

執(zhí)行命令:

yum groupinstall "X Window System" "GNOME Desktop" -y

或者:

yum -y groupinstall "Server with GUI"

4、安裝xrdp和vnc

執(zhí)行命令:

yum install tigervnc-server xrdp -y

5、啟動xrdp服務(wù),并且設(shè)置為開機啟動

執(zhí)行命令:

systemctl start xrdp

(二)使用Xfce桌面

1、安裝軟件源

執(zhí)行命令:

yum install epel* -y

2、更新軟件包

執(zhí)行命令:

yum -y upgrade

3、安裝桌面管理器

執(zhí)行命令:

yum install lightdm -y

4、安裝桌面

執(zhí)行命令:

yum groupinstall xfce -y

5、安裝遠(yuǎn)程服務(wù)

執(zhí)行命令:

yum install tigervnc-server xrdp -y

6、禁用GDM桌面管理器

執(zhí)行命令:

systemctl disable gdm

7、啟用LightDM桌面管理器

執(zhí)行命令:

systemctl enable lightdm

8、配置Xfce為默認(rèn)桌面

執(zhí)行命令:

vim ~/.Xclients

在打開的文件中,寫入以下內(nèi)容:

#!/bin/bash

XFCE="$(which xfce4-session 2>/dev/null)"

exec "$XFCE"

然后,執(zhí)行命令,增加執(zhí)行權(quán)限:

chmod +x ~/.Xclients

9、啟動或重啟遠(yuǎn)程連接服務(wù)

執(zhí)行命令:

systemctl start xrdp

或者:

systemctl restart xrdp

10、設(shè)置遠(yuǎn)程連接為開機啟動

執(zhí)行命令:

systemctl enable xrdp

二、安裝Python3.6

CentOS系統(tǒng)自帶的是Python2.7.5,可以通過輸入“python”命令打開。

我們安裝了Python3.6之后,需要使用命令“python3”啟動Python3.6的Shell。

1、安裝相關(guān)庫文件

執(zhí)行命令:

yum -y install zlib*

yum -y install gcc

yum -y install gcc-c++

yum -y install openssl

yum -y install openssl-devel

yum -y install sqlite

yum -y install sqlite-devel

yum -y install readline readline-devel

2、安裝Python3.6與相關(guān)庫文件

(一)安裝Python3.6

首先,創(chuàng)建一個用于保存下載文件的文件夾,并賦予權(quán)限。

執(zhí)行命令:

mkdir /home/centos/Downloads

cd /home/centos/Downloads

chmod 777 /home/centos/Downloads

然后,下載Python的源碼安裝包。

下載地址:https://www.python.org/downloads/source/

如果是通過Windows遠(yuǎn)程登錄,可以直接復(fù)制系統(tǒng)中下載好的Python源碼安裝包,粘貼到CentOS系統(tǒng)的文件夾中。

當(dāng)然,也可以在CentOS系統(tǒng)中通過“wget”命令進(jìn)行下載。

執(zhí)行命令:

wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz

最后,解壓縮軟件安裝包,進(jìn)入解壓縮后的目錄進(jìn)行安裝。

執(zhí)行命令:

tar xfz Python-3.6.5.tgz

cd Python-3.6.5

./configure --enable-shared --with-ssl=openssl

make && make install

安裝完畢后,啟動Python3.6。

執(zhí)行命令:

python3

此時,可能會出現(xiàn)錯誤。

python3: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory

產(chǎn)生錯誤的原因是:配置文件添加了參數(shù)“ --enable-shared ”,Python3.6運行時沒有加載到文件“l(fā)ibpython3.6m.so.1.0 ”。

實際上我們在執(zhí)行“make”命令時,已經(jīng)編譯了這個文件,解決問題的方法就是把編譯好的文件復(fù)制到特定的目錄中。

執(zhí)行命令:

cd /home/centos/Downloads/Python-3.6.5

cp libpython3.6m.so.1.0 /usr/local/lib64/

cp libpython3.6m.so.1.0 /usr/lib/

cp libpython3.6m.so.1.0 /usr/lib64/

(二)安裝相關(guān)庫

我們需要安裝 “python36-devel”。

這個庫沒有在系統(tǒng)默認(rèn)源中,所以無法直接通過“yum”命令進(jìn)行安裝。

我們需要先添加一個安裝源工具,通過下載rpm文件進(jìn)行安裝。

但是,直接下載rpm文件進(jìn)行安裝有可能會出現(xiàn)錯誤。

Warning: user mockbuild does not exist. using root

所以,我們需要先安裝一個依賴庫。

執(zhí)行命令:

yum install mock -y

useradd -s /sbin/nologin mockbuild

然后,下載“rpmforge”的安裝文件。

可以到“http://repoforge.org/use/”進(jìn)行下載,或者通過“wget”命令進(jìn)行下載。

執(zhí)行命令:

cd /home/centos/Downloads/

wget http://repository.it4i.cz/mirrors/repoforge/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

下載完成后進(jìn)行安裝。

執(zhí)行命令:

rpm -ivh rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

此時,可能會出現(xiàn)“NOKEY”的錯誤,是因為“yum”安裝了舊版本的“GPG keys”造成的,解決辦法是導(dǎo)入“gpg”。

執(zhí)行命令:

rpm --import /etc/pki/rpm-gpg/RPM*

接下來,就可以安裝 “python36-devel”了。

可以先通過命令,搜索python3-devel的可用版本。

執(zhí)行命令:

yum search python3 | grep devel

在搜索結(jié)果中可以看到一些關(guān)于Python3.X的文件名稱,其中有一個為“Python36”。

執(zhí)行命令:

yum -y install python36-devel

這樣就完成了“python36-devel”的安裝。

三、安裝Django2

Python3.6默認(rèn)安裝后,需要使用命令“pip3”安裝第三方庫。

先安裝Django的依賴庫“pytz”。

執(zhí)行命令:

pip3 install pytz

然后,安裝Django。

執(zhí)行命令:

pip3 install django

或者,下載Django的安裝包,放入“Downloads”文件夾后進(jìn)行安裝。

執(zhí)行命令:

cd /home/centos/Downloads/

tar xfz Django-2.0.3.tar.gz

cd Django-2.0.3

python3 setup.py install

最后,測試一下Python3.6、Django以及Sqlite3是否能夠正常使用。

執(zhí)行命令:

python3

>>>import django

>>>import sqlite3

四、安裝uWSGI

注意:不要用“yum install uwsgi”進(jìn)行安裝,這樣裝完會關(guān)聯(lián)系統(tǒng)中的Python2.7,并且系統(tǒng)可能會自帶uwsgi,自帶uwsgi的啟動項在“/usr/sbin/”中,而我們通過“pip3”命令安裝uwsgi的啟動項在“/usr/local/bin/”目錄中。

執(zhí)行命令:

pip3 install uwsgi

如果怕搞混,我們可以卸載系統(tǒng)自帶的uwsgi,然后將啟動項復(fù)制到“/usr/sbin/”目錄中。

執(zhí)行命令:

yum remove uwsgi

cp -f /usr/local/bin/uwsgi /usr/sbin/

或者,我們可以將自己安裝的uwsgi啟動項復(fù)制到“/usr/sbin/”目錄中時,改名為“uwsgi3”。

執(zhí)行命令:

cp -f /usr/local/bin/uwsgi /usr/sbin/uwsgi3

接下來,我們測試一下uwsgi是否能夠正常工作。

創(chuàng)建一個測試文件“mytest.py”。

執(zhí)行命令:

vi /var/www/mytest.py

寫入內(nèi)容:

# !/usr/bin/env python3 # 也可以寫成“#!/usr/bin/python3.6”。

def application(env, start_response):

start_response('200 OK', [('Content-Type', 'text/html')])

return [b'UWSGI Test...']

代碼輸入完畢,按“ESC”鍵并鍵入“:wq”回車,保存測試文件。

然后,系統(tǒng)中如果沒有自帶瀏覽器的話,可以安裝火狐瀏覽器。

執(zhí)行命令:

yum install firefox -y

最后,進(jìn)行測試。

執(zhí)行命令:

cd /var/www/

uwsgi --http :8888 --wsgi-file mytest.py

此時,通過本機瀏覽器訪問“http://127.0.0.1:8888”或者“http://localhost:8888”進(jìn)行測試,如果頁面中顯示“UWSGI Test…”字樣,則說明測試成功,uwsgi可以正常工作了。

五、安裝Nginx

首先,安裝Nginx的依賴庫“pcre”。

執(zhí)行命令:

yum install -y pcre pcre-devel

然后,安裝Nginx。

執(zhí)行命令:

yum install -y nginx*

安裝完成后,就可以通過命令控制Nginx了。

啟動命令:/usr/sbin/nginx

停止命令:/usr/sbin/nginx -s stop

退出命令:/usr/sbin/nginx -s quit

重載命令:/usr/sbin/nginx -s reload

查詢進(jìn)程:ps aux|grep nginx

另外,我們還可以設(shè)置Nginx為開機自啟動。

執(zhí)行命令:

vi /etc/rc.local

在打開的文件中,添加一行內(nèi)容。

/usr/local/nginx/sbin/nginx

六、配置Nginx

創(chuàng)建配置文件,并寫入內(nèi)容。

執(zhí)行命令:

vi /etc/nginx/conf.d/MyWeb.conf

寫入內(nèi)容:

server {

listen 80;

server_name http://www.qqtbb.com;

charset utf-8;

client_max_body_size 5M;

location /media {

alias /var/www/MyWeb/media;

}

location /static {

alias /var/www/MyWeb/static;

}

location / {

uwsgi_pass 127.0.0.1:8888;

include /etc/nginx/uwsgi_params;

}

}

提示:配置內(nèi)容的詳細(xì)說明,可以參考《Django2:Web項目開發(fā)入門筆記(16)》。

內(nèi)容輸入完畢(使用時請先清除注釋),按“ESC”鍵并鍵入“:wq”回車保存,并讓服務(wù)器重載配置。

執(zhí)行命令:

nginx -s reload

此時,可能發(fā)生錯誤。

nginx: [error] open() “/usr/local/var/run/nginx.pid” failed (2: No such file or directory)

解決方法是找到“nginx.conf”的文件夾目錄,然后運行“nginx”命令。

例如,“nginx.conf”文件在“/etc/nginx/”目錄中。

執(zhí)行命令:

nginx -c /etc/nginx/nginx.conf

nginx -s reload

如果發(fā)生80端口被占用的情況,可以先查詢占用端口的進(jìn)程,通過“kill”命令關(guān)閉進(jìn)程。

執(zhí)行命令:

lsof -i :80

kill -9 [進(jìn)程ID]

nginx -c /etc/nginx/nginx.conf

七、使用ini文件啟動uWSGI服務(wù)器

首先,使用ini文件啟動uWSGI服務(wù)器,需要安裝依賴庫。

執(zhí)行命令:

yum install uwsgi-plugin-python3

然后,在項目文件夾中創(chuàng)建ini文件。

例如,在“/var/www/MyWeb”中存放Web項目文件。

執(zhí)行命令:

vi /var/www/MyWeb/uwsgi.ini

在新建的文件中輸入內(nèi)容。

[uwsgi]

socket = 127.0.0.1:8888 # 因為要接收來自Nginx的Socket,此處必須和Nginx的設(shè)置保持一致。

chdir = /var/www/MyWeb/

wsgi-file = MyWeb/wsgi.py # 完整路徑是“/var/www/MyWeb/MyWeb/wsgi.py”

processes = 3 # 注意,此處啟用了多進(jìn)程,之后使用supervisor管理uWSGI時,需要增加配置項。

threads = 5

chmod-socket = 664

chown-socket = www-data

pidfile= /var/www/MyWeb/MyWeb.pid

vacuum = true

提示:配置內(nèi)容的詳細(xì)說明,可以參考《Django2:Web項目開發(fā)入門筆記(16)》。

內(nèi)容輸入完畢(使用時請先清除注釋),按“ESC”鍵并鍵入“:wq”回車保存,然后就可以通過配置文件啟動uWSGI服務(wù)器了。

啟動命令:

uwsgi3 --ini /var/www/MyWeb/uwsgi.ini

停止命令:

uwsgi3 --stop /var/www/MyWeb/MyWeb.pid

重載配置:

uwsgi3 --reload uwsgi.ini

再次強調(diào):啟動時注意Python版本是否Python3.6,并且不要使用系統(tǒng)自帶的uwsgi。

此時,通過域名就能夠訪問我們的Web項目了。

八、使用supervisor管理uWSGI服務(wù)器

supervisor可以在程序意外關(guān)閉時自動重新啟動,使用它管理uWSGI服務(wù)器非常不錯。

不過,supervisor只支持Python2,我們需要通過CentOS自帶的Python2.7進(jìn)行安裝。

首先,安裝“pip”工具。

執(zhí)行命令:

cd /usr/lib/python2.7/site-packages/

easy_install pip

然后,安裝“supervisor”。

pip install supervisor

接下來,進(jìn)行配置。

執(zhí)行命令:

echo_supervisord_conf > /etc/supervisord.conf

vi /etc/supervisord.conf

在打開的文件末尾添加內(nèi)容。

注意:語句前面不要有空格。

[program:MyWeb]

command=uwsgi --ini /var/www/MyWeb/uwsgi.ini

directory=/var/www/MyWeb/

startsecs=10

stopwaitsecs=10

stopasgroup=true

killasgroup=true

autostart=true

autorestart=true

提示:配置內(nèi)容的詳細(xì)說明,可以參考《Django2:Web項目開發(fā)入門筆記(16)》。

這里特別需要注意的是,如果“uwsgi.ini”文件中開啟了多進(jìn)程,一定要加上下面兩句。

stopasgroup = true # 用于停止進(jìn)程組,即停止所有通過“uwsgi.ini”配置啟動的進(jìn)程。

killasgroup = true # 用于關(guān)閉進(jìn)程組,即關(guān)閉所有通過“uwsgi.ini”配置啟動的進(jìn)程。

如果不添加這兩句,supervisorctl命令停止或關(guān)閉進(jìn)程時,只會關(guān)閉其中1個進(jìn)程,從而導(dǎo)致再次啟動或重啟uWSGI失敗,出現(xiàn)類似“MyWeb: ERROR (spawn error)”的錯誤。

這是因為殘留的孤兒進(jìn)程,阻止了新的同類進(jìn)程的開啟。

當(dāng)我們完成配置文件的修改之后,必須重新加載配置文件,才能使其生效。

執(zhí)行命令:

supervisorctl reload

最后,啟動supervisord和uWSGI。

執(zhí)行命令:

/usr/bin/supervisord -c /etc/supervisord.conf

或者:

supervisorctl -c /etc/supervisord.conf start MyWeb

此時,可能會發(fā)生錯誤。

Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.

這是因為supervisord已經(jīng)啟動過,我們需要先查詢已開啟的程序,將其關(guān)閉。

執(zhí)行命令:

find / -name supervisor.sock

unlink /被鏈接文件的所在路徑/supervisor.sock

另外,通過“supervisorctl”命令,可以方便的管理項目。

啟動項目命令:supervisorctl start [配置文件中的項目名稱]

重啟項目命令:supervisorctl restart [配置文件中的項目名稱]

停止項目命令:supervisorctl stop [配置文件中的項目名稱]

控制所有項目:supervisorctl all

總結(jié)

以上是生活随笔為你收集整理的python开发web项目_Django2:Web项目开发入门笔记(20)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。