Ubuntu18.04部署django3.x

寫在開頭

這篇文章是我閱讀瞭很多其他人的教程和結合自己踩過的坑所作

部分引用:

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.py
ALLOWED_HOSTS = ['你自己的域名']

生成環境包

pip freeze > requirements.txt

阿裡雲安全組的配置,也就是打開80和22端口和3306端口

這部分不懂的照做即可:

購買服務器並配置登錄密碼以後,在首頁點擊 控制臺>雲服務器ECS>(網絡與安全)安全組 沒有就創建,有就點配置規則>公網入方向>添加安全組規則,如圖所示,我們開放80端口,22端口也是這樣打開的(22端口,部署完畢後我們要關掉)。

Ubuntu18.04部署django3.x

打開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配置文件修改:

如果裡面東西很多而不是下面這樣的,就不要修改,直接退出。

Ubuntu18.04部署django3.x

正常的樣子

如果滿足條件,就輸入i,在最後一行把下面內容添加到裡面,保存退出,vi不會用的同學:linux下vi命令大全

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8

[mysql]
no-auto-rehash
default-character-set=utf8

重啟並連接:

service mysql restart
mysql -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 makemigrations
python manage.py migrate
python 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/sites
cd /etc/uwsgi/sites
vi youliao.ini

填入以下內容:

[uwsgi]
project = youliao
base = /data

chdir = %(base)/%(project)
module = %(project).wsgi:application

master = true
processes = 5

socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true

保存退出,然後是安裝Nginx:

apt-get install nginx
vi /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 restart
uwsgi /etc/uwsgi/sites/youliao.ini -d /home/youliao/youliao.log

如果這時候你的網站已經可以正常瀏覽使用瞭,別忘記再在項目中的settings.py中關閉你的Debug:

# youliao/youliao/settings.py
DEBUG = False

然後再重啟uwsgi。


下面是殺死uwsgi進程的方法

ps -ef|grep uwsgi

看一下PID,殺死就行。

kill -9 PID

所有步驟全部完成,關閉22端口!

Published in News by Awesome.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *