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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux系统上部署Django + nginx + uWSGI的步骤如下: 1. 安装必要的软件 在Linux系统上安装必要的软件包,包括Python、pip、nginxuWSGI等。 2. 创建Django项目 使用Django创建一个新项目或使用现有的Django项目。 3. 配置uWSGIDjango项目的根目录下创建一个uwsgi.ini文件,用于配置uWSGI。示例配置如下: ``` [uwsgi] # 指定运行模式为WSGI http = :8000 # 指定Django应用的wsgi模块 wsgi-file = myproject.wsgi # 指定进程数 processes = 4 # 指定线程数 threads = 2 # 指定静态文件路径 static-map = /static=/path/to/static # 指定日志路径 logto = /path/to/logfile ``` 其中,http参数指定了监听的端口号,wsgi-file参数指定了Django应用的wsgi模块,processes参数指定了进程数,threads参数指定了线程数,static-map参数指定了静态文件的路径,logto参数指定了日志文件的路径。 4. 配置nginxnginx的配置文件中添加以下内容: ``` server { listen 80; server_name example.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { uwsgi_pass 127.0.0.1:8000; include uwsgi_params; } location /static { alias /path/to/static; } } ``` 其中,server_name指定了域名,access_log和error_log指定了日志文件的路径,uwsgi_pass指定了uWSGI的地址和端口号,include指定了uWSGI的参数。 5. 启动uWSGI服务 使用以下命令启动uWSGI服务: ``` uwsgi --ini uwsgi.ini ``` 6. 启动nginx服务 使用以下命令启动nginx服务: ``` sudo service nginx start ``` 这样就完成了Django + nginx + uWSGI部署。可以通过访问该网站的域名来验证是否部署成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值