Centos7部署django項目詳細步驟(智障級uwsgi+nginx+mysql)


本人所用為騰訊雲服務器

外部工具使用XFTP上傳文件

下列步驟為本人親測,適合新手

1. 更新系統軟件包

yum update -y

2. 安裝軟件管理包和可能使用的依賴

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

3. 下載Pyhton3到/usr/local 目錄

注意:所有環境盡量使用跟項目一致版本進行安裝,我這邊使用得3.9.4

  1. https://www.python.org/ftp/python/3.9.4/下載所需要的版本
  2. 通過Ftp上傳到目錄-> 解壓tar -zxvf Python-3.9.4.tgz ->進入Python包的路徑cd Python-3.9.4/
  3. 編譯安裝到自己指定路徑 ./configure --prefix=/usr/local/python3
  4. 安裝python3 依次執行命令:make-> 命令:make install
  5. 安裝完成之后,建立軟鏈接,添加變量,這樣的好處是方便我們在終端中能夠直接使用python3
    命令:ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3
  6. Python3安裝完成之后pip3也一塊安裝完成,不用再單獨安裝 這里給pip3也建立軟鏈接
    命令:ln -s /usr/local/python3/bin/pip3.9 /usr/bin/pip3
  7. 查看是否成功安裝Python3和pip3 依次執行命令:python3 -V -> pip3 -V

4. 安裝virtualenv虛擬環境

  1. pip3 install virtualenv
  2. 建立軟連接ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
  3. 安裝成功在根目錄下建立文件夾,主要用於存放env 命令:mkdir -p /data/env
  4. 切換到/data/env/下,創建虛擬環境。命令:virtualenv --python=/usr/bin/python3 djangoPJenv
    注意:這里的djangoenv名稱可以自己定義但是后面步驟一定要跟你所定義的名稱相同,然后進入/data/env/djangoenv/bin
  5. 啟動虛擬環境:source activate (這里virtualenv的命令自行百度很簡單)

5. 虛擬環境里用pip3安django和uwsgi,以及項目依賴包

  1. pip3 install django==3.2.5 (需要指定安裝和你項目相同的版本)
  2. pip3 install uwsgi
    注意:uwsgi要安裝兩次,一次在虛擬環境中,另一次退出虛擬環境進行安裝
  3. 給uwsgi建立軟鏈接 命令:ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
  4. 安裝項目依賴包
    4.1 導出當前本地項目依賴包pip freeze > requirements.txt
    注意:requirements.txt文件部分模塊顯示了 @ file:///...,而不是具體的版本號,可以暫時考慮使用如下命令生成 requirements.txt 文件,pip list --format=freeze > requirements.txt,使用上述命令導出的文件中,會包含如下幾個包:distribute,pip,setuptools,wheel,建議手動刪除!
  5. 可以用XFTP把requirements.txt文件丟到一個目錄下,進入/data/env/djangoenv/bin, 啟動虛擬環境:source activate,然后找到requirements.txt目錄,執行命令:pip install -r requirements.txt

6. MYSQL安裝

  1. 首先進入網址:https://dev.mysql.com/downloads/repo/yum/
  2. 根據centos版本選擇,執行命令:cd /home/ ->wget https://repo.mysql.com//mysql80-community-release-el7-5.noarch.rpm
    注意:https://repo.mysql.com//后面這一串是根據在網頁上自行選擇的版本復制過來的
  3. 下載完成后,進行安裝rpm -ivh mysql80-community-release-el7-5.noarch.rpm
    注意:這里安裝會讓你選擇MYSQL版本,根據自己環境需要,我這里選的8.0,讓你選PHP的話無所謂啥版本都行
  4. 前期工作全部做好了,我們正式的去安裝MySQL 命令:sudo yum install mysql-community-server
    注意:執行上面的命令進行安裝,這個步驟可能需要點時間,最后如果出現completed,那就搞定了
  5. 設置MySQL,設置開機啟動:systemctl enable mysqld.service,檢查是否設置成功:systemctl list-unit-files | grep mysqld
    注意:大家都是干代碼的,這個怎么看成功我就不說了,免得拉低大家智商
  6. 開啟MySQL服務:systemctl start mysqld.service
  7. 修改MySQL密碼,查看默認密碼:grep 'temporary password' /var/log/mysqld.log
  8. 登錄MySQL:mysql -u root -p (用獲取的初始密碼)
  9. mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxx';
    注意:MySQL8.0修改密碼需要有大小寫字母、數字、特殊字符組合,xxxxxx就是你要輸入的密碼
  10. 執行命令生效:mysql>flush privileges;
  11. 這里其實就安裝完成了,如果你想外網比如說navicat訪問連接,那就繼續看下去
    mysql> use mysql;
    mysql> update user set host='%' where user='root';
    授權用戶名的權限,賦予任何主機訪問數據的權限
    mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;
    mysql> FLUSH PRIVILEGES;
    注意: 如果上面授權報錯用,可以使用下面的
    use mysql;
    update user set host='%' where user='root';
    Grant all privileges on test.* to 'root'@'%';
    通過navicat測試遠程連接數據庫
  12. 導入本地的數據庫數據到服務器
    進入服務器數據庫
    mysql -u root -p
    創建與項目中相應的名稱的數據庫
    create database 數據庫名;
    use 數據庫名
    source /你導入sql文件的目錄地址(關於這里你需要導入的sql文件怎么導出,自行百度太過簡單)

7. 將本地項目文件壓縮打包,上傳到服務器目錄解壓

  1. 我這里是在home下mkdir Chris,用的XFTP將壓縮文件上傳
    注意: 這里看你電腦用的RAR壓縮還是zip或者其他的,我這里用的RAR,其他的百度下
  2. 在服務器中解壓,可以先安裝支持RAR的工具(根據自己需要)
    32位:
    命令:wget https://www.rarlab.com/rar/rarlinux-5.7.1.tar.gz
    64位
    命令:wget https://www.rarlab.com/rar/rarlinux-x64-5.7.1.tar.gz
  3. 解壓
    tar -zxvf rarlinux-5.7.1.tar.gz # 對應32位下載的
    tar -zxvf rarlinux-x64-5.7.1.tar.gz # 對應64位下載的
    命令:cd rar 進入解壓后的rar文件夾
    命令:make 沒有任何參數,直接make就OK
    如果出現下面的信息,就是安裝成功了:
    mkdir -p /usr/local/bin
    mkdir -p /usr/local/lib
    cp rar unrar /usr/local/bin
    cp rarfiles.lst /etc
    cp default.sfx /usr/local/lib
    執行解壓操作:
    rar x test.rar ->解壓 test.rar 到當前目錄
    這里壓縮命令了解即可rar test.rar ./test/ # 將 test目錄打包為 test.rar

8. 通過python3 manage.py runserver 運行一下項目

注意: 如果能正常啟動則進行下一步,不能正常運行往上檢查。這里需要注意使用python3來執行manage.py,否則會出現報錯情況!

9. 配置uwsgi文件(請睜大小眼睛)

我的網站項目路徑是/home/Chris/Manage_pj,在項目根目錄下創建 項目名稱.xml (例如我的就是 Manage_pj.xml) 編輯該文件:

<uwsgi>
   <socket>127.0.0.1:8000</socket><!-- 內部端口,自定義 -->
   <chdir>/home/Chris/Manage_pj</chdir><!-- 項目路徑 -->
   <module>Manage_pj.wsgi</module><!-- mysite為wsgi.py所在目錄名-->
   <processes>4</processes><!-- 進程數 -->
   <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>

10. 安裝nginx和配置nginx.conf文件

  1. cd /home/ 執行命令:wget http://nginx.org/download/nginx-1.18.0.tar.gz 這里安裝的是nginx-1.18.0.tar.gz 版本
  2. 下載完成后,執行解壓命令:tar -zxvf nginx-1.13.7.tar.gz
  3. 進入解壓后的nginx-1.13.7文件夾,依次執行以下命令:
    ./configure
    make
    make install
    nginx一般默認安裝好的路徑為/usr/local/nginx,推薦在/usr/local/nginx/conf/中先備份一下nginx.conf文件,防止我們出錯。命令:cp nginx.conf nginx.conf.bak
  4. 然后打開nginx.conf,把原來的內容刪除,直接加入以下內容:
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80; # 這里nginx監聽得是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:8000;  #端口要和uwsgi里配置的一樣
           uwsgi_param UWSGI_SCRIPT Manage_Pj.wsgi;  #wsgi.py所在的目錄名+.wsgi
           uwsgi_param UWSGI_CHDIR /home/Chris/Manage_Pj; #項目路徑
        }
        location /static/ {
        alias /home/Chris/Manage_Pj/app01/static/; #靜態資源路徑
        }
    }
}
  1. 進入/usr/local/nginx/sbin/目錄 執行 ./nginx -t 命令先檢查配置文件是否有錯,沒有錯就執行以下命令:./nginx,終端沒有任何提示就證明nginx啟動成功。

到此安裝結束:你可以嘗試瀏覽器輸入服務器域名(不要端口,nginx.conf中配置了listen 80,是http默認端口,如果不能成功或者靜態資源無法加載,請看下面重點注意事項)

重點注意事項(必看):

  1. 如果你的項目中的應用含有靜態文件,你需要在setting.py中進行STATIC_ROOT的設置STATIC_ROOT = os.path.join(BASE_DIR, 'static')#指定樣式收集目錄
  2. Setting中ALLOWED_HOSTS = ['*'],DEBUG=False設置
  3. 如果修改了Django文件或者一些其他的配置,一定要重啟uwsgi和Nginx,否則不會生效!
    查看Uwsgi進程
    ps -ef|grep uwsgi
    用kill方法把uwsgi進程殺死,然后啟動uwsgi
    killall -9 uwsgi
    啟動方法
    uwsgi -x mysite.xml
    Nginx平滑重啟方法
    /usr/local/nginx/sbin/nginx -s reload
    上面是重啟uswgi和Nginx的步驟,大家每次修改之后,調用上面的方法即可。


免責聲明!

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



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