Nginx+uWSGI+Django部署

2 篇文章 0 订阅
1 篇文章 0 订阅

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

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

第二部 我们点击控制台

###在这里我们演示的是阿里云控制台 腾讯的也叫控制台
这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述
这里写图片描述

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

这里写图片描述

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

这里写图片描述

点击验证 并确认

这里写图片描述

等待…

这里写图片描述

成功√

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

没有 ssh 提前下载ssh

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

ssh 写用户名@写公网IP

这里写图片描述

如果出现这种情况

这里写图片描述

删除选中的地址

这里写图片描述

在登入 点击yes并输入密码

这里写图片描述

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

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

第一条
sudo apt update

第二条
sudo apt upgrade

等待 下载完成

然后安装 python3 pip
sudo apt install python3-pip
安装 virtualenv
sudo pip3 install virtualenv
如果安装virtualenv报错 请不要紧张 我们有绝世秘籍

这里写图片描述

分析原因
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指令查看变量

###开始安装
这里写图片描述

安装 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


这里写图片描述
这里写图片描述

创建虚拟环境
mkvirtualenv 项目名

这里写图片描述

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

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

###配置数据库 输入一遍密码在输一遍密码
这里写图片描述

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

这里写图片描述
###将虚拟环境pip里面的插件放到桌面上
这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

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

这里写图片描述
###进入虚拟环境 把备份的pip插件 导入到当前云虚拟环境上
这里写图片描述

进入你的项目
创建 一个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的启动配置文件中(当然你也可以把文件直接拷贝进去)这里我们利用了软连接
sudo ln -s /home/ubuntu/"项目名"/conf/"项目名"_nginx.conf /etc/nginx/conf.d

###确认称没成功
这里写图片描述
###重启nginx
这里写图片描述

进入虚拟环境 进入项目 运行这个命令
python manage.py collectstatic

###成功
这里写图片描述

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

这里写图片描述

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

绑定你的域名

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

在这里插入图片描述
进入项目里面的conf里面nginx.conf 把外网名改成 你的域名
在这里插入图片描述
1、创建uwsgi文件夹和相关文件

创建uwsgi文件夹

mkdir -p /root/app/test/uwsgi
cd /root/app/test/uwsgi

创建uwsgi.pid,并保存退出

vi uwsgi.pid

创建uwsgi.status,并保存退出

vi uwsgi.status
touch uwsgi.pid
touch uwsgi.status

说明:uwsgi.pid文件用来重启和停止uwsgi服务,uwsgi.status用来查看uwsgi的服务状态

2、修改uwsgi配置文件

修改uwsgin.ini配置文件,添加pid文件和status文件的配置

stats=%(chdir)/uwsgi/uwsgi.status
pidfile=%(chdir)/uwsgi/uwsgi.pid

保存退出

3、启动uwsgin配置文件

完成配置后,可以用如下命令操作uwsgi服务

uwsgi --ini uwsgi.ini

如果uwsgi已经启动,无法再次启动,可以尝试杀死进程或者重启服务器(我使用的是重启服务器的方法)

执行完成后,查看uwsgi的pid号

cat uwsgi/uwsgi.pid

查看一下uwsgi的进程

ps aux | grep uwsgi

发现主进程的pid与我们的pid文件里存的是一样的

到此就可以使用重启、停止uwsgi服务了

重启uwsgi

uwsgi --reload uwsgi/uwsgi.pid

停止uwsgi

uwsgi --stop uwsgi/uwsgi.pid

停止uwsgi服务后,用ps命令查看uwsgi的进程发现已经不存在了

开启uwsgi

uwsgi --ini uwsgi.ini

uwsgi进程和worker的状态很详细

uwsgi --connect-and-read uwsgi/uwsgi.status

到此配置完成,python文件修改后可以重启uwsgi服务来生效。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值