1. 程式人生 > 其它 >騰訊雲 CentOS 8.2 64位 django部署

騰訊雲 CentOS 8.2 64位 django部署

CentOS 8.2 64位


1.先更新系統檔案:
yum update和yum upgrade的功能是一樣的,
都是將需要更新的package更新至軟體源中的最新版。
區別是 yum upgrade會刪除舊版本的package,而yum update則會保留。
因此如果軟體依賴舊版本的package,最好是使用 yum update,確保不會出現相容問題。

2.更新python3相關的依賴
yum -y install python3-devel libevent-devel libjpeg-devel zlib-devel

3.更新pip
python3 -m pip install --upgrade pip

檢視linux系統當前安裝哪幾個python版本

執行以下命令檢視當前linux系統已經安裝了哪幾個版本的python。

ll /usr/bin/pyth*

[root@VM-0-3-centos ~]# ll /usr/bin/pyth*
lrwxrwxrwx 1 root root 25 Dec 10 2019 /usr/bin/python3 -> /etc/alternatives/python3
lrwxrwxrwx 1 root root 31 May 21 02:33 /usr/bin/python3.6 -> /usr/libexec/platform-python3.6
lrwxrwxrwx 1 root root 17 May 21 02:33 /usr/bin/python3.6-config -> python3.6m-config
lrwxrwxrwx 1 root root 32 May 21 02:33 /usr/bin/python3.6m -> /usr/libexec/platform-python3.6m
lrwxrwxrwx 1 root root 39 May 21 02:33 /usr/bin/python3.6m-config -> /usr/libexec/platform-python3.6m-config
lrwxrwxrwx 1 root root 46 May 21 02:33 /usr/bin/python3.6m-x86_64-config -> /usr/libexec/platform-python3.6m-x86_64-config
lrwxrwxrwx 1 root root 32 Nov 11 16:51 /usr/bin/python3-config -> /etc/alternatives/python3-config


改python預設版本操作步驟

檢視版本
:ll /usr/bin/python*
刪除有的python連結
:rm /usr/bin/python
設定新連結
:ln -s /usr/bin/python3 /usr/bin/python

4.安裝uwsgi
pip install uwsgi

5.測試uwsgi 根目錄建立 test.py檔案
# test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
#return ["Hello World"] # python2
根目錄執行 uwsgi --http :8000 --wsgi-file test.py

6.安裝django(與本地環境一樣) 也可以最後通過requirements.txt一同安裝
此處為了測試故先安裝
pip install Django==3.2.9

7.上傳測試django專案
注意django專案中的 settings.py檔案中的
#ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['*']
命令 cd 進入專案資料夾下(有 manage.py)的那個資料夾

命令:uwsgi mysite.ini

=================上面步驟uwsgi安裝好了===========================
下面開始安裝MySQL 5.7
查詢是否有mysql
是否有包:rpm -qa|grep mysql
是否有檔案:find / -name mysql
1.正式開始安裝:
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum module disable mysql
yum -y install mysql-community-server
安裝完成 ,

2.啟動MySQL:systemctl start mysqld.service

3.檢視MySQL執行狀態:systemctl status mysqld.service

4.獲取root使用者的密碼:grep "password" /var/log/mysqld.log
命令結果為:2021-11-10T05:52:57.942841Z 1 [Note] A temporary password is generated for root@localhost: Y45DZlApsb(a
複製密碼:Y45DZlApsb(a

5.進入資料庫:mysql -uroot -p

進入資料庫必須先改密碼
修改密碼:(此時密碼必須夠複製,mysql有要求)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '@Liyin3344520';
Query OK, 0 rows affected (0.00 sec)

6.設定密碼複雜度
檢視選項:
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.00 sec)

7.允許密碼設定簡單:
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

此時已經可以設定簡單的密碼了:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'liyin';

但此時還有一個問題,就是因為安裝了Yum Repository,以後每次yum操作都會自動更新,需要把這個解除安裝掉:
[root@localhost ~]# yum -y remove mysql57-community-release-el7-10.noarch


8、mysql忽略表大小寫
修改 /etc/my.cnf ;
在[mysqld]下,加入一行:

lower_case_table_names=1

重啟MySQL即可

systemctl enable mysqld.service ---設定開啟自啟動

systemctl start mysqld.service ----開啟此服務

systemctl stop mysqld.service -----關閉此服務

systemctl status mysqld.service -----檢視服務狀態

9.設定遠端訪問
登入:mysql -uroot -p

mysql> grant all privileges on *.* to 'root'@'%' identified by '密碼複雜度要高' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)

==============mysql5.7設定完成==========================


上傳專案測試


django 設定

STATIC_ROOT='/static/'

python manage.py collectstatic


生成模組匯入檔案
pip freeze > requirements.txt
匯入模組檔案
pip install -r requirements.txt

===================================================

下面開始nginx設定

安裝命令:sudo yum install nginx

停止服務
sudo systemctl enable nginx
啟動服務
sudo systemctl start nginx
檢視服務是否在執行
sudo systemctl status nginx

ps:
調整防火牆(Firewall)
FirewallD是Centos 8中的預設防火牆解決方案。
在安裝過程中,Nginx使用預定義的規則建立防火牆服務檔案,以允許訪問HTTP(80)和HTTPS(443)埠。
使用以下命令永久開啟必要的埠:
$ sudo firewall-cmd --permanent --zone=public --add-service=http
$ sudo firewall-cmd --permanent --zone=public --add-service=https
$ sudo firewall-cmd --reload

nginx配置

檔案: /etc/nginx/nginx.conf

#在server節點下新增新的location項,指向uWSGI的ip與埠(即8000埠)。
server {
...
location / {
uwsgi_pass 127.0.0.1:8000; #將請求轉發重定向到127.0.0.1的8000埠
include /etc/nginx/uwsgi_params;#將所有的引數轉到uwsgi下
}
...
}


Nginx配置靜態檔案路徑
上面我們講到 Nginx 可以實現動靜分離,這個時候也需要配置,可以按照如下所示進行操作,可以在 /home/feng 錄下新建一個 Book_static 目錄與 static 目錄,它們兩者是前者包含後者的關係,然後在 settings.py 檔案中進行如下配置:
STATIC_ROOT='/home/feng/Book_static/static'

配置完成成後在專案的 manage.py 檔案下執行下述命令,收集靜態檔案:
python3 manage.py collectstatic

收集完成後修改 Nginx 配置檔案,在上述 server 中新新增 location /static 靜態檔案路由配置,重定向到指定的絕對路徑:

server {
...
location /static {
static /home/feng/Book_static;
資料夾所在絕對路徑,示例如下:
# 重定向,自動找到static目錄
}

}


nginx 命令

接下來就是啟動 Nginx 服務,使用如下命令進行啟動:
$ sudo /etc/init.d/nginx start|stop|restart|status
# 或者
$ sudo service nginx start|stop|restart|status

uwsgi 重啟

修改後需要先停止 uWSGI 再重新啟動它,如下所示:
$ sudo uwsgi --stop uwsgi.pid
$ sudo uwsgi --ini uwsgi.ini

# uwsgi.ini file
[uwsgi]

# Django-related settings

# django專案執行的埠號
socket = 127.0.0.1:8001

# django專案的根目錄,同名目錄的外層
# the base directory (full path)
# chdir = /home/mysite/mysite
chdir = /root/mysite

# django專案同名目錄內層自動生成的wsgi.py的路徑,如果你的專案叫taobao,就填taobao.wsgi
# Django s wsgi file
module = mysite.wsgi

# 開啟主程序
# process-related settings
# master
master = true

# 最大程序數量
# maximum number of worker processes
processes = 20

# 停止uwsgi時自動清理
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true

# 指定後臺輸出日誌資訊的檔案,如果遇到不能正常使用,可以使用cat /root/mysite/log/uwsgi_log.log檢視報錯資訊
daemonize = /root/mysite/log/uwsgi_log.log

# 指定執行時候的pid檔案,也可以用來停止程序, uwsgi --stop /root/mysite/log/uwsgi_pid.log
pidfile = /root/mysite/log/uwsgi_pid.log

# 指定虛擬環境,如果沒有使用虛擬環境可以不用指定
;home = /usr/local/django2.2

static-map = /static=/root/mysite/static
http = 0.0.0.0:8000