Django上線部署 2(nginx+uwsgi上線生鮮購物商城)

寫在前面

nginx安裝:https://www.runoob.com/linux/nginx-install-setup.html
nginx教程:https://blog.csdn.net/a__int__/article/details/105343245

1、準備工作

1.1、連接服務器

這裏我的服務器是centos系統、連接工具xshell 5
xsell連接服務器
在這裏插入圖片描述

(centos下載工具是yum、烏班圖下載工具是apt)烏班圖例:
更新源
在這裏插入圖片描述
安裝python開發包
在這裏插入圖片描述
centos安裝python3:https://www.cnblogs.com/cosiray/p/9946401.html

1.2、安裝虛擬環境

安裝python虛擬環境

pip3 install virtualenvwrapper

在/root/yh/ 下創建虛擬環境

mkdir .virtualenvs

找到激活虛擬環境的文件

find / -name virtualenvwrapper.sh

在這裏插入圖片描述
複製該路徑,進入/root/ 目錄下,配置環境變量

vim .bashrc

在這裏插入圖片描述

# Python VirtualEnv
export WORKON_HOME=/root/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3

激活環境變量:source .bashrc

這裏如果提示這樣的錯誤
在這裏插入圖片描述
可能是python安裝路徑不對,你可以:whereis python3,然後改成對應的目錄

這裏輸入pip和pip3如果顯示找不到了就重裝一下
sudo yum -y install python-pip
pip install --upgrade pip

如果依然報錯,有可能是虛擬環境版本不匹配,可以卸載了再重裝
pip uninstall virtualenv
pip install virtualenv

創建虛擬環境django:mkvirtualenv django
指定python3:
在這裏插入圖片描述

1.3、安裝mysql

安裝mysql: yum install mysql-server
試試登錄mysql:
在這裏插入圖片描述

1.4、安裝reids

在root下。新建文件夾: mkdir software

進入該文件夾,並下載reids:wget http://download.redis.io/releases/redis-5.0.8.tar.gz

redis官網:https://redis.io/

解壓並安裝:
在這裏插入圖片描述
在這裏插入圖片描述
安裝tcl:yum install tcl
測試:make test
在這裏插入圖片描述

如果提示缺少tcl錯誤,可重新make再make test

進入 utils文件夾
在這裏插入圖片描述
執行./install_sever.sh(中間出現的配置全部回車默認)
在這裏插入圖片描述

如果出現這個錯誤
在這裏插入圖片描述
這時應該手寫redis-server的路徑
在這裏插入圖片描述

進入src目錄,測試redis
在這裏插入圖片描述

1.5、上傳項目

進入我們寫的項目,導出項目所有依賴:pip freeze > n.txt
在這裏插入圖片描述
打包
在這裏插入圖片描述
在服務器上安裝上傳工具

yum -y install lrzsz

這裏我上傳到/root/目錄下:rz(上傳文件指令)
在這裏插入圖片描述
在這裏插入圖片描述
上傳完成後解壓:這裏我解壓到/root/yh/django目錄下

unzip FreshFoodStore.zip -d /root/yh/django

在這裏插入圖片描述

2、nginx配置靜態資源

在/root/yh目錄下新建my.conf文件

user  root;
worker_processes  1;

error_log  /root/yh/logs/error.log warn;
pid        /root/yh/logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include    /usr/local/nginx/conf/mime.types;
    default_type  application/octet-stream;
    sendfile        on;

    keepalive_timeout  65;


   server {
        listen  88;
        server_name  localhost;

        root  /root/yh/django;
        location /templates {
                alias /root/yh/django/templates;
        }

    }
}

在yh目錄下新建文件夾logs
在logs文件夾下新建文件error.log、nginx.pid
測試my.conf配置文件是否可用(在nginx安裝目錄下測試)

cd /usr/local/nginx/sbin
sudo ./nginx -t -c /root/yh/my.conf

在這裏插入圖片描述
測試成功運行配置文件

sudo ./nginx -c /root/yh/my.conf

如果之前已經運過,可以重載

./nginx -s reload -c ~/yh/my.conf

查看是否成功運行:ps -ef|grep nginx
在這裏插入圖片描述
返回windows訪問
在這裏插入圖片描述

這裏如果訪問失敗可能是防火牆端口88未開放,參考:https://blog.csdn.net/a__int__/article/details/105343245

3、uwsgi對接動態資源

3.1、測試uwsgi

安裝:pip3 install uwsgi
在這裏插入圖片描述
在下新建文件,內容如下:vim uwsgi.ini

[uwsgi]
# nginx連接時
# socket=0.0.0.0:888
# 作爲web服務器連接時
http=0.0.0.0:888
# 項目目錄
chdir=/root/yh/django
# wsgi目錄(相對路徑)
wsgi-file=django/wsgi.py
# 進程
processes=4
# 每個進程裏的線程
threads=10
# 是否開啓多線程模式
enable-threads=True
# 是否開啓接口
master=True
# 進程id存儲文件
pidfile=uwsgi.pid
# 日誌
daemonize=uwsgi.log

查看防火牆的8888端口是否打開:firewall-cmd --list-port
開啓8888端口:firewall-cmd --zone=public --add-port=8888/tcp --permanent
重啓防火牆:firewall-cmd --reload
在這裏插入圖片描述
啓動uwsgi.ini:uwsgi --ini /root/yh/uwsgi.ini
在這裏插入圖片描述
查看狀態: ps -ef|grep uwsgi
在這裏插入圖片描述

3.2、在虛擬環境使用uwsgi

接下來在/root/目錄下進入虛擬環境:workon django
在這裏插入圖片描述
安裝項目所需依賴:pip install -r /root/n.txt(這裏我依賴文件單獨上傳到root文件夾裏了)
在這裏插入圖片描述
在虛擬環境安裝一個uwsgi:pip install uwsgi

更改ini文件:
在這裏插入圖片描述
啓動:uwsgi --ini /root/yh/uwsgi.ini
在這裏插入圖片描述
更改my.conf
在這裏插入圖片描述
測試my.conf

cd /usr/local/nginx/sbin
sudo ./nginx -t -c /root/yh/my.conf

在這裏插入圖片描述

4、在服務器創建數據庫

登錄mysql,新建數據庫

mysql -uroot -p

這一步出現錯誤參考:https://blog.csdn.net/Homewm/article/details/81628116

新建數據庫:create database FreshFoodStore charset=utf8;
在這裏插入圖片描述

數據庫名稱須和項目setting裏面保持一致

進入項目目錄下: cd ~/yh/django

注意這一直在虛擬環境下

進入FreshFoodStore/ 修改settings.py

關閉debug
在這裏插入圖片描述
數據庫名、用戶名、密碼,和服務器MySQL保持一致
在這裏插入圖片描述

遷移:python manage.py migrate

你可能會遇到這個錯誤提示:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
修改方法:https://blog.csdn.net/yjh_SE007/article/details/105226617

你還可能遇到這個錯誤提示:"Can’t connect to MySQL server on ‘localhost’
這個錯誤可能是可能是端口改了,或者其他原因

在這裏插入圖片描述

4.1、導出windows裏的數據庫

windows:
在這裏插入圖片描述

4.2、在windows遠端連接Linux的數據庫

windows:
下載連接工具:http://www.downza.cn/soft/204494.html
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
複製數據
在這裏插入圖片描述
運行
在這裏插入圖片描述

運行之前注意覈對表名

重啓uwsgi:
uwsgi --stop uwsgi.pid
uwsgi --ini /root/yh/uwsgi.ini

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章