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

前言:购买阿里云操作系统是 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

 

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

 

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

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

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

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

三、安装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检查一下是否安装成功

 

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

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

 

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

五、安装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的位置

然后创建软连接

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并创建django并测试(在虚拟环境中测试)

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

python3 manage.py runserver 0.0.0.0:8000

这里需要注意的是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/

 

 

posted @ 2019-12-17 13:48  maplethefox  阅读(843)  评论(0编辑  收藏  举报