Django專案雲部署
阿新 • • 發佈:2022-03-18
網站備案
在國內,網際網路必須由開發者或者擁有者進行實名備案:
-
進入某雲網站(騰訊雲,阿里雲,華為雲)進行備案
-
網站備案需要有合法的公網伺服器,並且伺服器可用時長超過3個月
域名備案
目的是減少IP重複和記憶對使用者帶來的困難
-
需要有網站備案
-
網站備案之後就會得到備案號(這是必須的)
-
-
購買雲伺服器
-
勾選分配免費公網IP
-
伺服器就會被分配一個公網IP和內網IP
-
專案打包
activate 虛擬環境名
pip freeze > requirement.txt
伺服器環境部署
python3環境部署
# CentOS 系統# 安裝系統依賴 yum install zlib-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel openssl-devel gcc* make libffi-devel -y # 安裝python3 # 下載(版本自己選擇) wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz # 或者使用xshell進行ftp tar -zxvf python-3.7.2.tgz # 配置安裝 ./configure prefix=/usr/local/python3 #配置安裝路徑 # 安裝 make && make install # 建立連結 ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
安裝mariadb
mariadb就是開源不收費的mysql
# 安裝 yum install mariadb mariadb-server.x86_64 mariadb-devel -y # 啟動mariadb服務 systemctl start mariadb # 登陸 mysql
預設是開發模式,不需要密碼就能進入資料庫,需要命令進入生產模式
mysql_secure_installation # 1.回車 # 2.輸入y,設定root密碼 # 3.輸入y,刪除匿名使用者 # 4.輸入y,禁止遠端登陸 # 5.輸入y,移除test資料庫,因為是在生產環境 # 6.輸入y,重新整理授權表 mysql -uroot -p**** # 輸入使用者名稱和密碼登陸 # 建立資料庫 >create database 庫名 charset=utf8
專案模組安裝
安裝python包
pip3 install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
關閉debug,開啟訪問介面
# settings.py DEBUG = False ALLOWED_HOST = [*]
uwsgi服務安裝
pip3 install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
nginx服務安裝
# 解壓 tar -zxvf nginx-1.12.2.tar # 配置安裝 ./configure \ # 編譯安裝 make && make install # 建立連結 ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx # 啟動 nginx
專案配置
編寫uwsgi.ini
makdir /opt/scripts touch uwsgi.ini vim uwsgi.ini ----------------------------------- # 理解為主 [uwsgi] chdir=專案路徑 module=專案名.wsgi:application socket=/opt/scripts/uwsgi.sock workers=5 # 代表程序 pidfile=/opt/scripts/uwsgi.pid http=內網IP:埠 static-map=/static=/opt/專案路徑/static # 讓nginx去找靜態檔案 uid=root gid=root master=true vacumm=true enable-thread=true thunder-lock=true harakiri=30 # 設定請求中斷時間 post-buffering=4096 # 快取大小 daemonize=/opt/專案路徑/uwsgi.log # uwsgi日誌
配置nginx.conf
# 先備份 cp nginx.conf nginx.conf.bak # /usr/local/nginx/conf/nginx.conf http{ ... # 保持原來的不動 access_log logs/access.log main; # nginx訪問日誌 ... # 保持原來的不動 gzip on; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; # 支援壓縮的格式 server{ listen 80; server_name 服務名; charset utf-8; location /{ include uwsgi_params; uwsgi_connect_timeout 30; # 連線uwsgi 30秒後超時 uwsgi_pass unix:/opt/sricpts/uwsgi.sock; # uwsgi生成的sock檔案 } error_page 500 502 503 504 /50x.html; location = /static/{ # 靜態檔案 alias 專案路徑/static; index index.htm index.html; } } }
啟動服務
uwsgi --init uwsgi.ini # 若啟動異常,檢視uwsgi.log檔案 nginx # 瀏覽器訪問公網IP:80 # 殺程序 # pkill -9 uwsgi # pkill -9 nginx
# 專案路徑/__init__.py # 用pymysql替換mysqldb import pymysql pymysql.install_as_MySQLsb() # 遷移 python3 manage.py makemigrations python3 manage.py migrate
域名解析