新四季網

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埠!

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了