Django部署阿里云服务器(nginx+uwsgi)

Stella981
• 阅读 820

前言:购买阿里云操作系统是 CentOS 7.7 64位

一、下一个Xshell软件

对于不习惯在阿里云终端操作的,可以下这个软件,方便后台操作。

使用命令ssh root@你的服务器公网IP 登录阿里云服务器。

二、安装宝塔面板

(方便上传文件,删除文件,修改文件内容等操作,对于vim操作不熟悉的,可以用这个)

安装命令:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

![](https://oscimg.oschina.net/oscnet/092b656d3c25a36ea01895cfd1dd2772fc7.png)

安装以后会给你一个随机的账号和密码,用8888的端口进行登录,会弹出推荐安装套件,这个看自己需求。

 Django部署阿里云服务器(nginx+uwsgi)

在安装的时候,我们可以面板设置把账号密码修改一下。

然后在安全里面把自己要用的端口都设置一下

Django部署阿里云服务器(nginx+uwsgi)

 因为宝塔有防火墙所以不能与阿里云服务器同步(我目前不会关,所以需要手动去阿里云服务器设置一下)

Django部署阿里云服务器(nginx+uwsgi)

安全组配置-->配置规则 (就可以他添加你想要的端口了)

三、安装Python(这里就可以用Xshell进行操作)

因为CentOS 7.6 64位自带Python2,所以我们这里重新安装Python3

我这里安装的是Python3.7

这里提醒大家千万不要将python2删除,因为有些系统功能依赖python2,所以我们只要添加python3就可以。

首先安装依赖包,centos里面是-devel,如果在ubuntu下安装则要改成-dev,依赖包缺一不可

sudo yum -y groupinstall "Development tools"
sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

然后下载python3.7的安装包(这里安装需要些时间,我们可以在Xshell在打开一个窗口,进行安装nginx的步骤,两个可以一起执行)

wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz

 解压下载包

tar -xvJf  Python-3.7.3.tar.xz

 编译安装

cd Python-3.7.3
./configure --prefix=/usr/local/bin/python3
sudo make
sudo make install

 创建软连接

ln -s /usr/local/bin/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/bin/python3/bin/pip3 /usr/bin/pip3

最后输入命令python3 --version检查一下是否安装成功

 Django部署阿里云服务器(nginx+uwsgi)

四、安装nginx

http://nginx.org/en/download.html  在这里获取最新版的下载链接

wget http://nginx.org/download/nginx-1.17.6.tar.gz # 下载文件到服务器
tar -zxf nginx-1.17.6.tar.gz # 解压缩文件
cd nginx-1.17.6/
sudo ./configure # 以 root 身份运行
sudo make && make install # 以 root 身份运行

补充一下nginx的相关命令

首先要进入nginx启动目录下面  默认目录/usr/local/nginx/sbin
./nginx #启动
./nginx -s stop # 快速停止
./nginx -s quit # 优雅停止
./nginx -s reload # 重新加载配置文件
./nginx -s reopen # 重启日志文件,备份日志文件时常用
./nginx -t # 测试 Nginx 配置文件
./nginx -v # 查看 Nginx 版本
./nginx -V # 查看 Nginx 版本、编译版本和编译参数

也可以通过命令sudo find / -name nginx 查找nginx 

Django部署阿里云服务器(nginx+uwsgi)

 因为80端口被宝塔占用,所以这里需要重新配置一下nginx.conf的文件,

Django部署阿里云服务器(nginx+uwsgi)

 找一个没有用的且后台开启的端口进行测试。

Django部署阿里云服务器(nginx+uwsgi)

五、安装python虚拟环境

注意:建议使用这个命令安装virtualenv --python=/usr/bin/python3 vnev(虚拟环境名称)

以前用的pip3 install virtualenv命令安装  会出现这个错误ImportError: No module named 'encodings'

创建一个文件夹,在里面创建运行环境

virtualenv [虚拟环境名称] 
virtualenv venv #我创建的虚拟环境名称是venv

激活虚拟环境 

cd venv
source ./bin/activate

 退出虚拟环境

deactivate

 六、安装uWSGI

在非虚拟环境中安装uWSGI

pip3 install uwsgi

通过sudo find / -name uwsgi命令找到uwsgi的位置

Django部署阿里云服务器(nginx+uwsgi)

然后创建软连接

ln -s /usr/local/bin/python3/bin/uwsgi /usr/bin/uwsgi

测试uwsgi,首先创建一个test,py的文件,并写入内容

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"] # python3

检查uwsgi版本

uwsgi --version       

2.0.18

uwsgi --python-version

3.7.3

在test.py文件下执行uwsgi --http :8000 --wsgi-file test.py

Django部署阿里云服务器(nginx+uwsgi)

七、安装django并创建django并测试(在虚拟环境中测试)

我这里创建了一个测试的django项目 本地测试

python3 manage.py runserver 0.0.0.0:8000

Django部署阿里云服务器(nginx+uwsgi)

这里需要注意的是settings里面需要修改为“*”

ALLOWED_HOSTS = ["*"]

用uwsgi在测试一次

uwsgi --http :8000 --module test_django.wsgi --py-autoreload=1

module:项目文件夹路径 找到wsgi

py-autoreload:热加载

八、配置nginx、uwsgi

1、找到nginx.conf  一般在/usr/local/nginx/conf目录下

vim或者用宝塔修改文件内容

 server {
        listen       8000;    #我们要访问的端口
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
              include  uwsgi_params;    #
            uwsgi_pass 0.0.0.0:9000;  #uwsgi通过django运行的接口并返回给nginx
            root   html;
            index  index.html index.htm;
        }

2、在项目目录下创建一个uwsgi.ini的文件(名字随意,运行这个文件就可以)

#添加配置选择
[uwsgi]
#配置和nginx连接的socket连接
socket=0.0.0.0:9000
#配置项目路径,项目的所在目录
chdir=/env/venv/test/test_django
#配置wsgi接口模块文件路径
wsgi-file=test_django/wsgi.py
#配置虚拟文件的路径
home=/env/venv
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置dump日志记录
daemonize=uwsgi.log
#配置热加载
py-autoreload=1

 最后杀掉我们要用的端口 sudo fuser -k 8000/tcp    sudo fuser -k 9000/tcp  避免一会运行的时候冲突

然后启动./nginx

在uwsgi.ini的目录下启动  uwsgi --ini uwsgi.ini

浏览器:39.97.97.51:8000/test/

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这