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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Python Django项目部署 Linux 服务器

發布時間:2024/7/5 linux 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python Django项目部署 Linux 服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
項目依賴: Linux Centos7 (阿里云輕量級服務器) + Python 3.7.2 + Django 2.2.1 + restframework 3.9.4 + mysql 5.7

1 安裝 python3 到 Centos7, 先安裝軟件管理包和可能使用的依賴

yum -y groupinstall "Development tools" yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel

2 下載Pyhton3到/usr/local 目錄

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

3 解壓

tar -zxvf Python-3.7.2.tgz

?

4 進入到解壓好的python文件中

cd Python-3.7.2

?

5 編譯安裝到指定路徑

./configure --prefix=/usr/local/python3

?

6 安裝python3

makemake install

7 安裝完成之后 建立軟鏈接 添加變量 方便在終端中直接使用python3

ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3

?

8 Python3安裝完成之后pip3也一塊安裝完成,不需要再單獨安裝一樣建立軟鏈接
同樣給pip3建立軟鏈接

ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3注: 如果軟鏈建立完成,但是卻無法使用的時候執行下面命令:mv pip pip2 # (將文件 pip 更名為 pip2 )ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

9 安裝virtualenv, 方便不同版本項目管理。

pip3 install virtualenv

?

10 建立軟鏈接

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv3

?

11 安裝成功在根目錄下建立兩個文件夾,主要用于存放env和網站文件的 (文件創建隨意,根據實際需求)。

mkdir -p /data/env # 存放虛擬環境mkdir -p /data/wwwroot # 存放web項目

?

12 切換到/data/env/下,創建指定版本的虛擬環境。

virtualenv3 --python=/usr/bin/python qize_demo (項目名) # 創建虛擬環境# 然后進入cd /data/env/qize_demo/bin # 進入bin目錄后開啟虛擬環境,執行命令source activate # 注:(啟動后出現 (qize_demo),說明是成功進入虛擬環境。)

13 虛擬環境里用pip3安django和uwsgi (留意:uwsgi要安裝兩次,先在系統里安裝一次,然后進入對應的虛擬環境安裝一次。)

pip3 install django #(如果用于生產的話,則需要指定安裝和你項目相同的版本)pip3 install uwsgi# 給uwsgi建立軟鏈接,方便使用ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

?

14 在本地項目目錄下用下面的命令把當前的環境依賴包導出到requirements.txt文件

pip freeze > requirements.txt

?
15 把項目源碼壓縮打包。把項目上傳到服務器對應的目錄里(/data/wwwroot/),解壓。

16 進入解壓好的項目根路徑中安裝requirements.txt里的依賴包。

pip3 install -r requirements.txt

?

17 導入數據庫到服務器。(如果用的是Mysql的話)

導出Mysql,django為你的數據庫

mysqldump -uroot -p password django>django.sql

把django.sql上傳到服務器,在服務器里用下面命令導入

mysql -uroot -ppassworduse dajngo;source your Path\django.sql

?

18 通過 python3 manage.py runserver 運行一下項目,如果能正常啟動則進行下一步,不能正常運行往上檢查 (下面給出幾個常見錯誤和解決方案)。

報錯1:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11 解決方案:

解決:編輯Python安裝路徑下的 Python36-32\Lib\site-packages\django\db\backends\mysql\base.py

將文件中的如下代碼注釋#if version < (1, 3, 3): # raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

報錯2: File "/usr/local/python3/lib/python3.7/site-packages/django/db/backends/mysql/operations.py", line 146, in last_executed_query query = query.decode(errors='replace')

AttributeError: 'str' object has no attribute 'decode'

解決:編輯

/usr/local/python3/lib/python3.7/site-packages/django/db/backends/mysql/operations.py

的 第146 行,

# 將 decode 改為 encode 保存并退出 query = query.decode(errors='replace') 改為 query = query.encode(errors='replace')

19 在項目根目錄里添加uwsgi配置文件 (qize_demo.xml)

<uwsgi> <socket>127.0.0.1:8070/</socket><!-- 內部端口,自定義 --> <chdir>/data/wwwroot/qize_demo/</chdir><!-- 項目路徑 --> <module>qize_demo.wsgi</module> <processes>4</processes> <!-- 進程數 --> <daemonize>uwsgi.log</daemonize><!-- 日志文件 --></uwsgi>

?

20 配置Nginx配置文件(把原先的配置文件可以備份以下,然后將下面的替換進去)。

events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;sendfile on;server {listen 80;server_name 127.0.0.1:80; # 改為自己的域名,沒域名修改為127.0.0.1:80charset utf-8;location / {include uwsgi_params;uwsgi_pass 127.0.0.1:8070; #端口要和uwsgi里配置的一樣uwsgi_param UWSGI_SCRIPT qize_demo.wsgi; #wsgi.py所在的目錄名+.wsgiuwsgi_param UWSGI_CHDIR /data/wwwroot/qize_demo/; #項目路徑}location /static {alias /data/wwwroot/qize_demo/static; #靜態資源路徑}location /templates {alias /data/wwwroot/qize_demo/templates;}}}

留意:一定要注意Uwsgi和Nginx配置文件里的項目路徑和靜態資源路徑,填寫正確了才能成功訪問。不然會出現502錯誤。還有就是,修改Django文件和其它配置文件之后,一定要重啟Uwsgi和Nginx,不然不生效。

21 Uwsgi和Nginx重啟方法:

uwsgi 啟動方法

uwsgi -x qize_demo.xml

Nginx 重啟方法

nginx -s reload

然后在瀏覽器里訪問服務器ip(或域名),就能查看到項目。

如果想使用域名訪問項目,先在域名管理后臺把域名解析到服務器IP上來,之后在Nginx配置文件里綁定域名。然后在瀏覽器里通過綁定的域名訪問項目。

以下總結一些問題:

1 如果訪問出現 500 以上的錯誤信息并有nginx的信息,一般是nginx配置出了問題。去查看nginx.conf配置中的項目路徑是否正確,uwsgi_pass 參數的端口和 uwsgi的xml 文件中端口是否一致,是否修改完配置后重新啟動了nginx。還有就是可以去項目根路徑下 python manage.py runserver 啟動下項目,看看有沒有報錯,也有可能是程序本身就有問題。

2 如果訪問出現 400 以上的錯誤信息,重點檢查項目路徑,包括 tempates / static 靜態路徑是否正確,和項目中 settings 是否配置了 tempates / static 文件的訪問路徑,以及 url 是否正確,其次還有html文件中引入的 css, js, img 等文件路徑是否正確, 比如:

css文件:<link rel="stylesheet" href="/static/css/q.css">js文件 :<script src="/static/js/q.js"></script>

?

以下總結下注意事項:

1 項目上線后記得 DEBUG = False 這樣設置,這樣的話你的項目訪問失敗就不會有 Django 的錯誤信息了

2 設置所有 IP 都可訪問 (settings.py)

ALLOWED_HOSTS = ['*']

3 數據庫設置(settings.py)

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'sql_base', # 庫名 (根據實際數據庫名進行修改)'PORT': 3306, # 端口(不用改)'HOST': '127.0.0.1', # 本地host(不用改)"USER": 'root', # 用戶名'PASSWORD': '123456' # 密碼} }

?

轉載于:https://www.cnblogs.com/chaoqi/p/11103188.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Python Django项目部署 Linux 服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。