欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx+uWSGI+Django部署

程序员文章站 2022-03-19 23:46:25
...

Nginx+uWSGI+Django部署
Nginx+uWSGI+Django部署
Nginx+uWSGI+Django部署
Nginx+uWSGI+Django部署

第一步 我们首先在阿里云 或者 腾讯云 购买云服务器 或者领取免费体验天数 由于我们使用的是 ubuntu 系统 那么就选这个系统 如果是16.04就选16.04版本 然后点击购买

第二部 我们点击控制台

###在这里我们演示的是阿里云控制台 腾讯的也叫控制台
Nginx+uWSGI+Django部署

第三部 我们找到左方的云服务器

Nginx+uWSGI+Django部署

第四部 我们找到左方的实例选项

Nginx+uWSGI+Django部署

如果没有做系统 我们第一次要给云服务器做系统 彻底清空这个服务器
点击右边的更多

Nginx+uWSGI+Django部署
Nginx+uWSGI+Django部署

点击停止 然后点击更多更换系统盘

Nginx+uWSGI+Django部署

点击确认更换 按照下图 配置并确认更换

Nginx+uWSGI+Django部署

点击验证 并确认

Nginx+uWSGI+Django部署

等待…

Nginx+uWSGI+Django部署

成功√

Nginx+uWSGI+Django部署

腾讯云 重装系统 点击更多 重装系统就可以 然后 按照上述步骤去操作

Nginx+uWSGI+Django部署

第五步 我们复制公网的ip地址

Nginx+uWSGI+Django部署

第六步 我们打开本地的终端

没有 ssh 提前下载ssh

第七步 我们输入我们服务器的密码

ssh 写用户名@写公网IP

Nginx+uWSGI+Django部署

如果出现这种情况

Nginx+uWSGI+Django部署

删除选中的地址

Nginx+uWSGI+Django部署

在登入 点击yes并输入密码

Nginx+uWSGI+Django部署

第八步 我们配置我们的云服务器

首先更新软件的两条命令 由于它是超级用户 所以我们不用sudo 如果不是超级用户就要加入 sudo

第一条
sudo apt update

第二条
sudo apt upgrade

等待 下载完成

然后安装 python3 pip

sudo apt install python3-pip

安装 virtualenv

sudo pip3 install virtualenv

如果安装virtualenv报错 请不要紧张 我们有绝世秘籍

Nginx+uWSGI+Django部署

分析原因
locale是用来设置软件运行的语言环境,所以语言环境设置有问题

解决故障   复制这三条 命令 一条一条输入 在登入云服务器
重新设置语言环境,最简单的解决办法:
第一条
 echo "export  LC_ALL=en_US.UTF-8"  >>   /home/XXX/.bash_profile 代表(特定用户)
第二条
 echo "export LC_ALL=en_US.UTF-8"  >>  /etc/profile 代表(所有用户)
第三条
exit
然后重新登录,使用locale指令查看变量

###开始安装
Nginx+uWSGI+Django部署

安装 virtualenvwrapper

sudo pip3 install virtualenvwrapper

配置三条命令

输入命令
vi .bashrc

复制这三条命令到文档
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

**
source .bashrc


Nginx+uWSGI+Django部署
Nginx+uWSGI+Django部署

创建虚拟环境

mkvirtualenv 项目名

Nginx+uWSGI+Django部署

退出 虚拟环境 并安装mysql数据库

退出虚拟环境
deactivate
安装 mysql数据库
sudo apt-get install mysql-server mysql-client

###配置数据库 输入一遍密码在输一遍密码
Nginx+uWSGI+Django部署

然后安装 filezilla 这款软件可以将本地文件上传到云服务器

sudo apt-get install filezilla

Nginx+uWSGI+Django部署
###将虚拟环境pip里面的插件放到桌面上
Nginx+uWSGI+Django部署

然后将备份的数据库 和 项目都放到桌面上

Nginx+uWSGI+Django部署

打开filezilla 配置 ip 用户名 密码 端口

Nginx+uWSGI+Django部署

然后 找到 桌面上的文件 鼠标右键upload上传

然后 进入数据库 创建个 和之前settings同样的库 然后退出 把 备份的数据库资料导入到云上的mysql数据库

Nginx+uWSGI+Django部署
###进入虚拟环境 把备份的pip插件 导入到当前云虚拟环境上
Nginx+uWSGI+Django部署

进入你的项目

创建 一个conf文件夹

mkdir conf

###vi 第一个文件 文件名是你的项目名加上 项目名_nginx.conf将里面将以下信息复制填写带双引号的信息

* Socket connection established *
Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-130-generic x86_64)

# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server "外网iP"; # 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 "你的公网地址"; # 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 /home/ubuntu/"目录名"/static/media;  # 指向django的media目录
}

location /static {
    alias /home/ubuntu/"目录名"/static; # 指向django的static目录
}

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

vi uwsgi.ini将以下信息复制填写带双引号的信息 并删除双引号!!!


    # mysite_uwsgi.ini file
    [uwsgi]

    # Django-related settings
    # the base directory (full path)
    chdir           = /home/ubuntu/"项目名"
    # Django's wsgi file
    module          = "项目名".wsgi
    # the virtualenv (full path)

    # process-related settings
    # master
    master          = true
    # maximum number of worker processes
    processes       = 10
    # the socket (use the full path to be safe
    socket          = 127.0.0.1:8000
    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
     vacuum          = true
    virtualenv = /home/ubuntu/.virtualenvs/"虚拟环境"

    #logto = /tmp/mylog.log

将项目包中setting文件 将一段static链接代码注释 填入另一种代码

STATIC_URL = '/static/'
#STATICFILES_DIRS = [
#    os.path.join(BASE_DIR, 'static'),
#]
STATIC_ROOT = os.path.join(BASE_DIR,'static/')
MEDIA_URL = '/media/'


# 没加入富文本 不用复制这些
# 放在django项目根目录,同时也需要创建media文件夹
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

CKEDITOR_UPLOAD_PATH = 'upload/'

安装nginx

sudo apt-get install nginx

安装uwsgi

pip install uwsgi

测试nginx有没有成功

ps aux|grep nginx

Nginx+uWSGI+Django部署

将配置文件加入到nginx的启动配置文件中(当然你也可以把文件直接拷贝进去)这里我们利用了软连接

sudo ln -s /home/ubuntu/"项目名"/conf/"项目名"_nginx.conf /etc/nginx/conf.d

###确认称没成功
Nginx+uWSGI+Django部署
###重启nginx
Nginx+uWSGI+Django部署

进入虚拟环境 进入项目 运行这个命令

python manage.py collectstatic

###成功
Nginx+uWSGI+Django部署

进入虚拟环境 进入项目 进入conf文件夹 拉起uwsgi -i uwsgi.ini

Nginx+uWSGI+Django部署

然后 输入你的 公网:80/加上你的路由首页

绑定你的域名

进入项目里面的conf里面的uwsgi.ini 把前面的域名去掉

Nginx+uWSGI+Django部署
进入项目里面的conf里面nginx.conf 把外网名改成 你的域名
Nginx+uWSGI+Django部署

相关标签: nginx