Ubuntu18.04部署django3.x(Ubuntu18.04部署django3.x)
2023-08-09 17:22:06
寫在開頭這篇文章是我閱讀了很多其他人的教程和結合自己踩過的坑所作
部分引用:Django快速部署簡約版 v3.0
Ubuntu安裝MySQL8.0 允許遠程訪問
Django項目用nginx部署上線之後,出現圖片加載404錯誤
Ubuntu 18.04安裝MySQL8.0資料庫
ubuntu18.04 python3.7 pip安裝mysqlclient報錯ERROR
ubuntu18.04 python3 安裝pip3
1.本地項目的配置注意:命令應該一條一條執行本地項目應該反覆測試並設置好settings.py配置:
在部署前,我們先修改一下settings.py:
# youliao/youliao/settings.pyALLOWED_HOSTS = ['你自己的域名']
生成環境包pip freeze > requirements.txt
阿里雲安全組的配置,也就是打開80和22埠和3306埠
這部分不懂的照做即可:
購買伺服器並配置登錄密碼以後,在首頁點擊 控制臺>雲伺服器ECS>(網絡與安全)安全組 沒有就創建,有就點配置規則>公網入方向>添加安全組規則,如圖所示,我們開放80埠,22埠也是這樣打開的(22埠,部署完畢後我們要關掉)。
打開80和22埠
登錄伺服器,阿里雲默認登陸就是root,擁有管理員權限,這很重要!如果你沒有管理員權限,請在最開始就獲取。
2.正式部署系統更新
sudo apt-get update
安裝python3的pip3包
sudo apt-get install python3-pip
安裝MySQL(8.x)
首先點擊進入官網,劃到底部,下載個deb格式文件
將下載的文件拖拽到ubuntu的桌面,並終端進入桌面 然後執行如下命令:sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb
方向鍵選mysql-8.0 並按enter鍵
方向鍵選擇ok 並按enter鍵
更新apt: sudo apt update
解決提示部分:sudo apt-get upgrade
正式安裝MySQL18.04:sudo apt install mysql-server
上邊安裝完後,會讓你設置root密碼,輸入後按enter鍵,並再次確認
MySQL8.0採用了新的加密方式,與Ubuntu18.04有兼容問題; 故選擇下面的舊版本5.x的加密方式
登錄輸入用戶名與密碼,看是否安裝成功
運行配置嚮導:
mysql_secure_installation
輸入密碼回車,回車,回車,然後4次輸入Y回車(這個看你自己)。
MYSQL配置文件修改:
如果裡面東西很多而不是下面這樣的,就不要修改,直接退出。
正常的樣子
如果滿足條件,就輸入i,在最後一行把下面內容添加到裡面,保存退出,vi不會用的同學:linux下vi命令大全
[client]port = 3306socket = /var/lib/mysql/mysql.sockdefault-character-set=utf8[mysqld]port = 3306socket = /var/lib/mysql/mysql.sockcharacter-set-server=utf8[mysql]no-auto-rehashdefault-character-set=utf8
重啟並連接:
service mysql restartmysql -uroot -p
輸入密碼,再輸入以下命令,創建你的資料庫:
CREATE DATABASE `DatabaseName` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
quit命令退出。
如何遠程連接資料庫?
分別執行以下命令:
添加可以遠程訪問的帳號
mysql> create user 'root'@'%' identified by '你自己的mysql密碼';mysql> grant all privileges on *.* to 'root'@'%';mysql> flush privileges;
service mysql restart
記得開啟阿里雲3326的mysql埠,這個也有可能是失敗的原因
解決django沒法訪問資料庫:
create user 'django'@'localhost' identified by '你的密碼';grant usage on *.* to 'django'@'localhost';grant all privileges on 你要連接的資料庫.* to 'django'@'localhost';
4.安裝項目依賴
首先把你的項目放在你的伺服器上(git,ssh都可以)
cd到你的項目
執行安裝環境包命令:
pip3 install -r requirements.txt
如果遇到mysql_client安裝失敗可以進行如下操作:
首先執行命令:
sudo apt install python3.7-dev libmysqlclient-dev
然後
pip install mysqlclient
同步資料庫,建立管理員帳號,同步靜態文件:
python manage.py makemigrationspython manage.py migratepython manage.py createsuperuser
然後測試:
python manage.py runserver 0.0.0.0:80
每次執行又強行關閉後,需要殺死埠,否則會被佔用,命令如下:
fuser -k 80/tcp
如果無效,則執行:
netstat -anp
查看所有埠佔用情況,殺死PID就行
kill -9 PID
強行退出快捷鍵:CTRL C或Z
報錯請自行檢查項目,訪問無問題進行下一步:
安裝uWSGI:
pip install uwsgi
啟動測試:
uwsgi --http :80 --chdir /data/youliao/ -w youliao.wsgi
報錯請自行檢查項目,訪問無問題進行下一步:
mkdir -p /etc/uwsgi/sitescd /etc/uwsgi/sitesvi youliao.ini
填入以下內容:
[uwsgi]project = youliaobase = /datachdir = %(base)/%(project)module = %(project).wsgi:applicationmaster = trueprocesses = 5socket = %(base)/%(project)/%(project).sockchmod-socket = 666vacuum = true
保存退出,然後是安裝Nginx:
apt-get install nginxvi /etc/nginx/sites-available/youliao
填入內容:
server { listen 80; server_name 你的域名; location /static/ { root /data/youliao/dist; } location /images/{ root /data/youliao/static; } location / { include uwsgi_params; uwsgi_pass unix:/data/youliao/youliao.sock; } }
保存退出,並檢測錯誤!提示ok,那才行!
ln -s /etc/nginx/sites-available/youliao /etc/nginx/sites-enabled/service nginx configtest
重啟服務:
service nginx restartuwsgi /etc/uwsgi/sites/youliao.ini -d /home/youliao/youliao.log
如果這時候你的網站已經可以正常瀏覽使用了,別忘記再在項目中的settings.py中關閉你的Debug:
# youliao/youliao/settings.pyDEBUG = False
然後再重啟uwsgi。
下面是殺死uwsgi進程的方法
ps -ef|grep uwsgi
看一下PID,殺死就行。
kill -9 PID
所有步驟全部完成,關閉22埠!
,