python3.8.0 Django 開發后端接口api 部署到 Linux Centos7上


經歷了兩天的時候終於把本地使用python3 django開發的接口API部署到服務器上了,還是記錄一下,以免之后忘記,哈哈

注意一點,就是,centos7是基於python2的,我這邊默認的是python2.7.5,記住不要刪除了python2,否則后果很嚴重,yum會報錯,這是因為python3和python2版本的沖突導致的

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

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

第二步,下載Pyhton3到/usr/local 目錄

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

第三步,解壓

tar -zxvf Python-3.8.0.tgz

第四步,進入cd Python-3.8.0

第五步,解壓到指定路徑

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

第六步,安裝python3

make

make install

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

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

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

ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3

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

如果安裝了python3以后發現沒有pip可以通過以下方式下載pip,進入一個目錄就是你想把它下載到哪個目錄就進入哪個目錄

執行命令:wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate

會下載get-pip.py文件

然后執行: python3 get-pip.py

 

第九步,安裝virtualenv, 方便不同版本項目管理。

pip3 install virtualenv

第十步,建立軟鏈接

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

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

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

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

virtualenv3 --python=/usr/bin/python web (項目名) # 創建虛擬環境

       # 然后進入
       cd /data/env/web/bin 

       # 進入bin目錄后開啟虛擬環境,執行命令
       source activate  

    # 注:(啟動后出現 (web),說明是成功進入虛擬環境。)

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

pip3 install django  #(如果用於生產的話,則需要指定安裝和你項目相同的版本)

pip3 install uwsgi

# 給uwsgi建立軟鏈接,方便使用

ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

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

pip freeze > requirements.txt 

第十五步,把項目源碼壓縮打包。把項目上傳到服務器對應的目錄里(/data/www/),解壓。

這里可以導入本地數據庫,其實django建model,只要在線上mysql數據庫中建立項目中的數據庫的名稱,eg:python

然后,可以像本地開發一樣 migrate 數據庫,前提是已經安裝好了數據庫啊

 

第十六步,進入解壓好的項目根路徑中安裝requirements.txt里的依賴包。

pip3 install -r requirements.txt

第十七步,安裝mysql

wget -P /home/liudong http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

cd /home/liudong

安裝mysql的YUM源:rpm -ivh mysql57-community-release-el7-11.noarch.rpm

檢查mysql的YUM源是否安裝成功:yum repolist enabled | grep "mysql.*-community.*"

查看mysql版本,執行:yum repolist all | grep mysql

查看當前的啟用的 MySQL 版本:yum repolist enabled | grep mysql

yum install mysql-community-server

安裝過程中一直輸入"y"就可以了,當出現下面的結果時,就代表mysql數據庫安裝成功了

啟動mysql服務:systemctl start mysqld

登錄進Mysql(我的剛安裝完時沒有密碼):mysql -uroot -p

查看默認密碼

grep 'temporary password' /var/log/mysqld.log

 

 進去之后重新設置密碼

 

set password for 'root'@'localhost' = password('123456');

如果使用navicat for mysql鏈接不上 可能是這個原因 https://blog.csdn.net/qq_19306197/article/details/83820319

 

第十八步,通過 python3 manage.py runserver 運行一下項目,如果能正常啟動則進行下一步,不能正常運行往上檢查 

如果報錯: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__)

第十九步,在項目根目錄里添加uwsgi配置文件 (uwsgi.ini)

[uwsgi]
socket = 127.0.0.1:8070
#是否使用主線程
master = true
# 項目在服務器中的目錄(絕對路徑)
chdir = /data/www/web
# Django's wsgi 文件目錄
wsgi-file = web/wsgi.py
# 最大進程數
processes = 4
#每個進程的線程數
threads = 2
#狀態監聽端口
stats = 127.0.0.1:9191
# 退出時自動清理環境配置
vacuum = true
#目錄下文件改動時自動重啟
touch-reload = /data/www/web
#Python文件改動時自動重啟
#py-auto-reload = 1
#后台運行並把日志存到.log文件
daemonize = /data/www/web/uWSGI.log

第二十步,進入部署到服務器的項目根目錄下,執行

uwsgi --ini uwsgi.ini

第二十一步,查看端口,看下uwsgi是否存在

netstat -nltp

 

 第二十二步,配置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:80
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8070;  #端口要和uwsgi里配置的一樣
           uwsgi_param UWSGI_SCRIPT web.wsgi;     #wsgi.py所在的目錄名+.wsgi
           uwsgi_param UWSGI_CHDIR /data/www/web/; #項目路徑
           
        }
        location /static {
            alias /data/www/web/myapp/static; #靜態資源路徑
        }
    
        location /templates {
            alias /data/www/web/templates;
        }
    }

}

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

uwsgi 啟動方法
    uwsgi --ini uwsgi.ini
Nginx 重啟方法
    nginx -s reload

以下總結下注意事項:

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

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

 ALLOWED_HOSTS = ['*']

3 數據庫設置(settings.py)

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

在這里非常感謝 Q博主 https://www.cnblogs.com/chaoqi/p/11103188.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM