uwsgi+nginx在ubuntu下部署django2项目

  • 环境:Ubuntu18

一、Python与虚拟环境
1.升级python与pip

一、安装(Ubuntu18已内置安装Python3.6):

sudo apt install python3
sudo apt install python3-pip


二、环境配置:

# 删除原来的软链接
sudo rm -rf /usr/bin/python
sudo rm -rf /usr/bin/pip
# 建立新的软链接
sudo ln -s /usr/bin/python3 /usr/bin/python
sudo ln -s /usr/bin/pip3 /usr/bin/pip

至此,系统使用的pythonpip皆为所安装的最新版本。

2.安装并激活虚拟环境

①安装:

pip install virtualenv
pip install virtualenvwrapper


②配置:使用编辑器打开/home/ubuntu/.bashrc~/.bashrc)文件,在文件末端输入:

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv
source ~/.local/bin/virtualenvwrapper.sh

然后执行:

source ~/.bashrc

如果出现错误提示:
在这里插入图片描述
则再执行:

python -m pip install --user virtualenvwrapper --upgrade


③管理虚拟环境:

  1. 创建虚拟环境
mkvirtualenv -p python Blogenv
  1. 查看已创建的虚拟环境
lsvirtualenv
  1. 激活/切换虚拟环境
workon Blogenv
  1. 退出当前虚拟环境
deactivate
  1. 删除虚拟环境
rmvirtualenv Blogenv
  1. 进入虚拟环境目录
cdvirtualenv
  1. 进入虚拟环境包安装目录
cdsitepackages
3.安装项目所需包

 在开发环境的项目目录下,执行:

pip freeze > requirements.txt

 在服务器上,根据requirements.txt安装所需包(需将项目文件传输到服务器):

pip install -r requirements.txt

 在当前虚拟环境安装项目运行所需的所有包。

二、安装配置MySql数据库

 具体的安装见Ubuntu18安装配置MySql数据库,这里需要做的是创建好数据库,并在项目的settings.py中做好配置。

 配置完成后,执行迁移脚本:

python manage.py migrate

 理论上完成上述操作后,就可以在测试服务器上运行项目了,执行:

python manage.py runserver 0.0.0.0:8000

 然后在浏览器中输入服务器公网ip:8000若能正常访问,表示上述操作正常。

三、安装并测试uwsgi
pip install uwsgi

 进入项目目录下,执行:

uwsgi --http :8000 --module MyBlog.wsgi

 同样,若能访问,说明uwsgi安装成功

四、安装配置nginx
sudo apt install nginx -y

 拷贝配置参数至项目目录下,执行:

cp /etc/nginx/uwsgi_params . 

cd ..退出到项目目录的上一层,sudo vim uwsgi.ini新建初始化文件,输入:

[uwsgi]
chdir=/srv/MyBlog	# 项目目录
module=MyBlog.wsgi:application
pythonhome=~/.virtualenvs/Blogenv	# 虚拟环境的位置(通过cdvirtualenv查看虚拟环境位置)
master=true
processes=10
socket=:8001
chmod-socket = 666
vacuum=true

 执行命令:uwsgi --ini uwsgi.ini,若运行正常,则说明配置正确。

可能遇到的问题:
在这里插入图片描述
解决:

  1. 确保正确配置了使用的python(虚拟环境)的位置(使用pythonhome配置而非home);
  2. 虚拟环境的python版本错误,删除虚拟环境后重新安装,使用mkvirtualenv -p /usr/bin/python3 MyBlogenv


 进入到项目目录下,sudo vim MyBlog_nginx.conf新建配置文件(注意路径配置都需使用绝对路径):

upstream django {
    # server unix:/root/xueyiwang/xueyiwang.sock; # for a file socket
    server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}

# configuration of the server
server {
    # the port your site will be served on
    listen      80;
    # the domain name it will serve for
    server_name wjiaman.fun; # substitute your machine's IP address or FQDN
    charset     utf-8;
 
    # max upload size
    client_max_body_size 75M;   # adjust to taste
 
    # Django media
    location /media  {
        alias /srv/MyBlog/media;  # your Django project's media files - amend as required
    }
 
    location /static {
        alias /srv/MyBlog/static; # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include   /srv/MyBlog/uwsgi_params; # the uwsgi_params file you installed
    }
}

 使用sudo nginx -t来测试配置文件能否正常使用,再使用sudo service nginx restart重启nginx服务器。

可能遇到的问题:

此时通过公网ip,访问到仍是nginx默认的欢迎页,此时需进入/etc/nginx/sites-enabledsudo vim default编辑default文件,将其中监听的:

listen 80 default_server;
listen [::]:80 default_server;

随便改为其他的端口:

llisten 81 default_server;
listen [::]:81 default_server;

重启,此时可以直接通过服务器的ip访问到部署的项目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值