django阿里云服务器部署记录

django部署的大概步骤:

  • 安装环境(Python,Nginx,MySQL,Django及项目依赖的Python包)
  • 构建Python虚拟环境,将项目上传至虚拟环境
  • 配置Nginx,配置uwsgi

服务器上Python环境配置

更新Ubuntu,以确保后面所需的包能正常安装

sudo apt-get update

我是Ubuntu18.04的服务器,系统自带Python3.6
但我希望使用Python3.8,输入以下命令安装高版本

sudo apt install python3.8

此时是3.6与3.8版本共存,需要指定Python3优先级

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2

这样Python3默认使用3.8版本了
但这样设置后,pip3使用出现以下错误
在这里插入图片描述
百度后输入两条命令重新安装后解决:

wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate
sudo python3 get-pip.py

构建虚拟环境

安装虚拟环境的包

pip3 install virtualenv

安装daphne(以后打算用上asgi实现ws通信,纯wsgi不需要安装这个)

pip3 install daphne

安装Nginx

sudo apt-get install nginx

安装好Nginx,就可以直接使用服务器ip外网访问
在这里插入图片描述

django项目迁移及虚拟环境创建

首先来到Nginx自动创建的网站目录:var/www
在该目录下创建虚拟环境

virtualenv datavis

启动虚拟环境

# 此时我们在var/www目录下
source datavis/bin/activate

虚拟环境成功启动是这样的
在这里插入图片描述
创建虚拟环境: $ virtualenv -p /usr/bin/python2.7 –-no-site-packages my_venv
启动虚拟环境: $ source my_venv/bin/activate 
退出虚拟环境: $ deactivate 
删除虚拟环境(原来就是直接删除对应的文件夹即可): $ rm –r my_venv

可以进入虚拟环境根目录操作

cd datavis

迁移django项目到该目录,需要使用ftp工具,比如filezila
可以用7z工具解压zip文件

7z x ***.zip

# 若提示7z未找到,需先安装
sudo apt install p7zip-full

解压完成,cd到项目目录,先试着运行项目python3 manage.py runserver,系统提示没有django模块
安装django

pip install django # 我这里在虚拟环境pip默认是Python3的,所以pip与pip3是一样的

进入项目根目录,python3 manage.py runserver运行,根据自己项目需求安装依赖,就可以运行起来
这里我们试一下外网是否可以访问
在这里插入图片描述
给服务器添加一条8000端口的规则,运行python3 manage.py runserver 0.0.0.0:8000,任何IP都可以访问

服务器配置

现在只是通过ip:端口访问,下面我们来添加域名
切换到Nginx目录cd /etc/nginx,配置nginx.conf文件

http {
	// ====修改区====
	server {
		listen 80;
		server_name www.***.cn ***.cn;
		charset utf-8;
		
		location /static {
			alias /var/www/datavis/mysite/wareHouse/static;
		}
		
		location / {
			uwsgi_pass localhost:8000;
			include /etc/nginx/uwsgi_params;
		}
	}
	// ========
	...
}

以上是http的简易配置,下面贴出我后面安装证书的https配置
我将证书相关的.pem,.key放在了Nginx安装目录下的/cert文件夹

http {
	# ====修改区====
	server {
		listen 80;
		server_name www.***.com ***.com;
		rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
	}
	
	server {
		listen 443 ssl;
		#配置HTTPS的默认访问端口为443。
		#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
		#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
		server_name www.***.cn; #证书绑定的域名。
		root html;
		index index.html index.htm;
		ssl_certificate cert/***.pem;
		ssl_certificate_key cert/***.key;
		ssl_session_timeout 5m;
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
		#表示使用的加密套件的类型。
		ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
		ssl_prefer_server_ciphers on;
		
		location /static {
			alias /var/www/datavis/mysite/wareHouse/static;
		}
		
		location / {
			uwsgi_pass localhost:8000;
			include /etc/nginx/uwsgi_params;
		}
	}
	# ========
	...
}

Nginx修改配置后需重启
以下是百度的Linux下Nginx常用命令:

 # 检查nginx.conf配置是否正确
 sudo nginx -t
 
 # 查看Nginx服务器的状态
 sudo systemctl status nginx
 
 # 停止Nginx
 sudo systemctl stop nginx

 # 启动Nginx
 sudo systemctl start nginx

 # Nginx重启
 sudo systemctl reload nginx

安装uwsgi

pip install uwsgi

新建uwsgi的配置文件,我取名为datavis.ini,必须为ini后缀名

[uwsgi]
chdir=/var/www/datavis/mysite  # 项目根目录,nanage.py所在文件
module=mysite.wsgi:application # 根目录下项目目录,指向wsgi.py
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/var/log/uwsgi/yourproject.log
socket=127.0.0.1:8000  # 与nginx.conf的uwsgi_pass字段对应
home=/var/www/datavis

理论上该配置文件可放在任意位置,我放在Nginx安装目录/etc/nginx
cd到Nginx安装目录测试uwsgi是否可行
在这里插入图片描述
可以使用

下一步需要配置Nginx与django项目的映射关系,在/etc/nginx下新增uwsgi_params配置文件


uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

启动uwsgi服务

uwsgi --ini datavis.ini

理论上就能正常访问了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值