ubuntu18+uwsgi+nginx部署django项目
更新系统软件源
sudo apt-get update
pip3安装
sudo apt install python3-pip
安装virtualenvwrapper
pip3 install virtualenvwrapper
修改.bashrc,最后面添加以下代码:
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
重新加载配置
source ~/.bashrc
创建虚拟环境
mkvirtualenv 虚拟环境名
进入虚拟环境
workon 虚拟环境名
退出虚拟环境
deactivate
安装mysql
sudo apt-get install mysql-server
安装mysql驱动 sudo apt-get install libmysqlclient-dev
设置mysql允许远程访问,方便使用navicat导入数据.首先编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address = 127.0.0.1: #允许远程连接
进入mysql,修改root密码
mysql>set password for root@localhost = password('123');
创建普通用户
create user 'username'@'%' IDENTIFIED BY 'password';
给普通用户赋权
grant all on *.* to username@'%';
刷新
flush privileges;
退出
exit
重启mysql
service mysql restart
安装redis
sudo apt-get install redis-server
修改redis配置
使用redis的访问账号
sudo vi /etc/redis/redis.conf
#取消注释requirepass
requirepass 密码
允许远程访问
#注释bind
# bind 127.0.0.1
重启redis
sudo /etc/init.d/redis-server restart
桌面创建新目录Project
mkdir Project
在项目中创建项目依赖包文件
pip freeze > package.txt
上传项目到Project,或者进入Project使用git克隆
scp -r 本地项目目录 root@服务器IP:/root/Project
git clone 项目地址
安装依赖包
pip install -r package.txt
进入项目修改settings文件
将mysql账号密码修改成服务器的
修改ALLOWED_HOSTS = ['*']
# 测试之前先将项目用到数据导入数据库,不然肯定报错
测试能否正常运行,然后浏览器访问服务器地址
python3 manage.py runserver 0.0.0.0:80
安装uwsgi
sudo pip3 install uwsgi
在manage.py同级目录下创建uwsgi.ini文件
vim uwsgi.ini
编辑内容如下
[uwsgi] #如果单独使用uwsgi来部署Django项目时,就用这一行。 http=0.0.0.0:80 #如果使用nginx+uwsgi来部署Django项目时,就用这行。 # socket=127.0.0.1:8080 # 和nginx连接的端口 #你项目的完整路径。 chdir=/root/Project/MyProject #给socket文件赋权限,这里不用管。 # chmod-socket=664 #启用主线程。 master=true processes=4 threads=2 #指定日志文件(会自动创建)。这个很重要,如果uwsgi出现错误,可以通过日志文件来查错。 logto=uwsgi.log #指定进程号文件(会自动创建)。这个也很重要,如果要重启和关闭uwsgi,则需要这个文件,里面记录了进程号。 pidfile=uwsgi.pid #指定wsgi文件。在与settings.py同级目录中会有一个wsgi.py文件。 module=MyProject.wsgi:application
保存退出后启动uwsgi,如果报错请查看日志文件
uwsgi --ini uwsgi.ini
安装nginx
sudo apt-get nginx
进入/etc/nginx/备份nginx.conf
sudo cp nginx.conf nginx.conf.bak
删除nginx.conf,重新创建nginx.conf,内容如下:
events { worker_connections 1024; # 不用管 } http{ server { listen 80; #这个端口用来监听浏览器的请求。 server_name 0.0.0.0; # 不用管,如果有域名可以填上域名。 charset UTF-8; #日志文件。如果nginx出现问题,都可以通过日志文件来查错。 access_log /var/log/nginx/MyProject_access.log; error_log /var/log/nginx/MyProject_error.log; client_max_body_size 75M; location / { include uwsgi_params; # 使用uwsgi服务器。 uwsgi_pass 127.0.0.1:8080; # 把浏览器发来的请求转发到8001端口,而uwsgi也正在监听8001端口,所以就实现了nginx与uwsgi的通信。 uwsgi_read_timeout 30; #链接超时时间 } location /static/{ # 处理静态文件,处理链接是以/static/开头的请求。 alias /usr/DjangoProject/MyProject/static/; # 项目静态文件的绝对路径。 } } }
最后
修改uwsgi.ini文件,把http=0.0.0.0:80注释掉,使用socket=127.0.0.1:8080
输入:uwsgi -d --ini uwsgi.ini # 启动uwsgi服务器。-d表示在后台运行。这样就不会占用当前窗口了。
输入:/etc/init.d/nginx start # 启动nginx
浏览器访问
ubuntu18+uwsgi+nginx部署django项目的更多相关文章
- 使用uWSGI+nginx部署Django项目
最近使用django写了一些项目,不过部署到服务器上碰到一些问题,还有静态文件什么的一堆问题,这里总结一下碰到的问题和解决方案,总体思路是按照官方文档走的. 原文地址:http://uwsgi-doc ...
- uwsgi+nginx部署django项目
1. 概念解析(wsgi协议,uwsgi协议,uWSGI) 参考:https://www.cnblogs.com/wspblog/p/8575101.html 1.1 现实世界的web请求: 1.2 ...
- Ubuntu+Django+uWSGI+Nginx部署Django项目
安装uWSGI,pip依据自己要使用的python版本自行选择,python2.x版本使用pip进行安装,python3.x版本使用pip3进行安装 pip install uwsgi 配置uWSGI ...
- 基于腾讯云CentOS7.4+MySQL5.7+Python3+uwsgi+nginx的Django项目部署
准备知识 1.django一个基于python的开源web框架,请确保自己熟悉它的框架目录结构. 2.uWSGI一个基于自有的uwsgi协议.wsgi协议和http服务协议的web网关 3.nginx ...
- uwsgi+anaconda+nginx部署django项目(ubuntu下)
conda 环境不必多说: conda(或source) activate test 进入test虚拟环境 接下来安装uwsgi: pip install uwsgi 在conda环境下大概率安装 ...
- vue+uwsgi+nginx部署luffty项目
在部署项目之前本人已经将前端代码和后端代码发布在了一个网站上,大家可自行下载,当然如果有Xftp工具也可以直接从本地导入. django代码 https://files.cnblogs.com/fil ...
- uwsgi + nginx 部署python项目(一)
uWSGI uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uws ...
- 阿里云轻量级服务器和NGINX部署Django项目
部署条件: 1.一台阿里云服务器(本人的是CentOS系统的服务器) 2.已经构建好的项目 3.服务器上安装并配置Nginx 首先第一步:在服务器上安装并配置Nginx 进入服务器 $ ssh roo ...
- uwsgi + nginx 部署python项目(二)
实现负载均衡 开启两个服务器,nginx负责分发请求到两个服务器,以减轻单个服务器负担. 配置uwsgi服务器 在a项目目录下生成uwsgi.ini文件,在b项目目录下生成uwsgi.ini文件,如何 ...
随机推荐
- 数据结构c语言
这篇博客是为了对数据结构进行一系列的学习整理,包括线性表,栈和队列,串,数组和广义表,树和二叉树,图,动态储存管理,查找,内部排序,外部排序文件进行部分笔记的记录. 基本概念和术语 数据:是对客观事物 ...
- JavaScript 实用技巧
1数组中删除重复 let arr = [1,2,4,3,6,4] Array.from(new Set(arr)) // es6中 .from()[1,2,4,3,6] [...new Set(arr ...
- Qualcomm-Atheros-QCA9377-Wifi-Linux驱动
资源来自:https://download.csdn.net/download/ichdy/10331646 已经下载好了,发现无法使用,本人系统Centos7.2,如果有安装成功,并且可以正常使用的 ...
- 从Go语言编码角度解释实现简易区块链——实现交易
在公链基础上实现区块链交易 区块链的目的,是能够安全可靠的存储交易,比如我们常见的比特币的交易,这里我们会以比特币为例实现区块链上的通用交易.上一节用简单的数据结构完成了区块链的公链,本节在此基础上对 ...
- Python之路(第四十六篇)多种方法实现python线程池(threadpool模块\multiprocessing.dummy模块\concurrent.futures模块)
一.线程池 很久(python2.6)之前python没有官方的线程池模块,只有第三方的threadpool模块, 之后再python2.6加入了multiprocessing.dummy 作为可以使 ...
- vscode自定义颜色主题插件并发布
生成一个新的颜色主题 运行命令 npm install -g yo generator-code yo code 这时默认文件目录已经帮你创建好了 vscode中按下F5可以帮你打开调试,预览创建好的 ...
- (day33)数据库
目录 1. 数据库是什么 2. 为什么使用数据库 3. 数据库的分类 1. 关系型数据库 2. 非关系型数据库 4. mysql的架构 5. mysql的安装 1. windows的安装 2. win ...
- CSS盒模型以及如何解决边距重叠问题
盒模型有两种,W3C 和IE 盒子模型 W3C定义的盒模型包括margin.border.padding.content,元素的宽度width=content的宽度 IE盒模型与W3C盒模型的唯一区别 ...
- 设计模式C++描述----16.状态(State)模式
一. 举例 一般汽车发动机工作时有四种状态,吸气.压缩.做功和排气. 在运行时,不同的状态会有不同的行为,当前的状态机在适当的时候会过渡到下一状态. 其实用户在使用时根本不知道当前的状态,也无需知道当 ...
- 原生js实现导航栏吸顶
实现滑动滚动条让导航栏吸顶原理:主要是通过监听scroll,设定一个滚动条垂直位移作为临界,让导航栏吸顶或者取消吸顶. 话不多说了,代码如下: window.onscroll = function ( ...