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文件,如何 ...
随机推荐
- [USACO10NOV]奶牛的图片Cow Photographs
题目描述 Farmer John希望给他的N(1<=N<=100,000)只奶牛拍照片,这样他就可以向他的朋友炫耀他的奶牛. 这N只奶牛被标号为1..N. 在照相的那一天,奶牛们排成了一排 ...
- TCC推导过程
svn 账号 yuanzn 密码:TCH5mb 项目分层 MapperDao 数据校验 throw new CloudBaseRuntimeException Helper 数据转换 manager ...
- LIGHTX-CMS —— 基于 Node.js,Express.js 以及 SQLite 3 搭建的个人博客系统
概述 LIGHTX-CMS 是我基于 Node.js,Express.js 以及 SQLite 3 搭建的个人博客发布系统. 项目本身可以拿来部署个人博客网站,同时我认为其也适合用以新手学习 Node ...
- 用MATLAB绘制折线图,x轴为字符串,并旋转一定的角度!!!
先上代码,然后再一行一行解释: x=1:37; %这一行其实一开始,写的时候是没有的,后来需要给X轴上规定几个刻度才加上的 plot(x,Y,'linewidth',2); %以x为自变量,y为因变量 ...
- HashMap - 类注释
了解到Java8以后HashMap的实现换了,也看了很多博客一直在向我这个小菜鸡说HashMap的重要.因此我决定洗心革面,好好正视HashMap 基于jdk 8 先从类注释开始入手学习,顺便提高提高 ...
- 【Java必修课】四类方法删除List里面的所有null值
1 简介 万恶的null已经折磨程序员许久了,也带来了许多难以发现却造成严重损失的NullPointerException.我们需要尽可能的避免它,有一种简单的办法就是在它进入下轮处理前,我们就把它扼 ...
- Java基础(十八)集合(5)Queue集合
队列是只能在尾部添加元素,同时只能在头部删除元素的数据结构.队列的原则就是“先进先出”. Queue接口是Collection接口的最后一个子接口. Queue接口是队列接口,而Deque接口是Que ...
- C#开发命令执行驱动程序 之 控制标志的命令行参数
/// <summary> /// 在cmd窗体内执行如下: /// CtrlOrderDrierApp.exe -f -t /// 返回: /// FOO /// Show Table ...
- 2018.8.15 python中的冒泡法排序
# 给出一个纯数字列表. 请对列表进行排序. # 思路: # 1.完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10 # 2.循环列表. 判断a[i ...
- 自定义segue的方向
花了挺久时间,终于通过google在stake overflow上找到了解决方式. 总结一下:重写一个custom的segue,在storyboard的右边设置segue为custom,并设置其对应的 ...