ubuntu+Django + nginx + uwsgi 部署
ubuntu+Django + nginx + uwsgi 部署
0.前期准备
注意:以下几件事都必须在激活虚拟环境下完成
- 运行以下命令生成项目所需的依赖列表,会在项目根目录生成一个
requirements.txt的文件
读取requirements.txt文件,并安装项目依赖命令!
pip3 install -r requirements.txt
- 搜集项目的静态文件
在项目的配置文件settings.py文件中添加添加静态文件路径
STATIC_ROOT = '/home/zic/singleBlog/static/'
这将会把所有的静态文件拷贝至STATIC_ROOT配置的路径!
1.安装nginx
sudo apt-get install nginx
并且重启
使用本机地址是否能访问成功

2.虚拟环境
一、进入Nginx用来默认放置网站的文件夹
cd /home/zic
二、克隆项目到该文件夹
git clone git@gitee.com:but-chen-chen/single-blog.git
三、创建虚拟环境
python3 -m venv venv
四、激活虚拟环境
linux: . venv/bin/activate
windows: venv\Scripts\activate
五、安装依赖
pip3 install -r requirements.txt -i [https://pypi.tuna.tsinghua.edu.cn/simple/](https://pypi.tuna.tsinghua.edu.cn/simple/)
3.安装uwsgi
linux-ubuntu安装uwsgi
对于 Python3.x 版本
sudo apt-get install python3-dev
sudo apt-get install python3-pip
sudo pip3 install uwsgi
4.创建uwsgi配置文件
在项目目录下创建一个deploy的文件,创建一个uwsgi.ini的文件
cd /var/www/django-blog
mkdir deploy
cd deploy
touch uwsgi.ini
使用vim打开uwsgi.ini文件vim uwsgi.ini,复制以下代码并加以修改
#配置域应该是uwsgi,记住这个不能丢,否则会报错
[uwsgi]
#uwsgi监听的socket,可以为socket文件或ip地址+端口号,用nginx的时候就配socket , 直接运行的时候配 http, http-socket = 127.0.0.1:8080
socket = 127.0.0.1:8001
#指定项目的目录,在app加载前切换到当前目录
chdir = /home/zic/Desktop/singleBlog
# Django的wsgi文件,用来加载blog2/wsgi.py这个模块
module = singleBlog.wsgi
# Python虚拟环境的路径
home = /home/zic/Desktop/singleBlog/venv
# master 启动主进程。
master = true
# 最大数量的工作进程数
processes = 10
# 指定工作进程中的线程数
threads = 2
# 设置socket的权限
chmod-socket = 664
# 退出的时候是否清理环境,自动移除unix Socket 和 Pid 文件
vacuum = true
#日志文件路径
daemonize = /home/zic/Desktop/singleBlog/deploy/uwsgi.log
# pid文件
pidfile = /home/zic/Desktop/singleBlog/deploy/uwsgi.pid
5.创建项目nginx的配置文件
进入:cd /etc/nginx/sites-enabled
创建:touch blog
用vim编辑打开刚才创建的blog文件,将下边的内容填写进去,具体参考注释说明:
# 配置文件内容:
# 转发给哪个服务器,可以通过upstream配置项让nginx实现负载均衡
upstream django {
server 127.0.0.1:8001; # 这里的端口号必须和uwsgi里的保持一致
server 127.0.1.1:8001;
}
# 设定虚拟主机配置,一个http中可以有多个server。
server {
# 启动的nginx进程监听请求的端口
listen 80;
#定义使用域名访问
server_name 192.168.153.146;
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# location 配置请求静态文件多媒体文件。
location /media {
alias /home/zic/Desktop/singleBlog/media/;
}
# 静态文件访问的url
location /static {
# 指定静态文件存放的目录
alias /home/zic/Desktop/singleBlog/static/;
}
# 将所有非媒体请求转到Django服务器上
location / {
# 包含uwsgi的请求参数,路径为qmblog_uwsgi_params绝对路径
include /home/zic/Desktop/singleBlog/deploy/params;
# 转交请求给uwsgi
# uwsgi_pass 127.0.0.1:8000;
uwsgi_pass django;
#这个django对应开头出的,对于动态请求,转发到本机的端口,也就是uwsgi监听的端口,uwsgi运行的主机和ip,后面我们会在本机的该端口上运行uwsgi进程
# 下面两个配置意思是如果比如通过http://www.xxx.com直接访问的是static下的index.html或者index.htm页面,一般用于将首页静态化
#root /root/src/www/CainiaoBlog/static/;
#index index.html index.htm;
}
# 精确匹配不同于上面/,这里http://www.xxx.com会匹配这个,根据这个配置将请求转发给另外nginx服务器,
# 让另外服务器提供静态首页。同上面的访问index.html在另外同一台服务器上同一配置文件中结合。
# location = / {
# proxy_pass http://ip:port;
# }
}
最后,重启nginx,具体请参考nginx常用命令!
6.启动uwsgi服务
备注:请务必在激活虚拟环境下运行
cd /var/www/django-blog
uwsgi --ini deploy/uwsgi.ini
出现[uWSGI] getting INI configuration from deploy/uwsgi.ini类似这行的命令说明启动成功,直接去浏览器访问即可!
7.启动停止重启
uWSGI 通过 xxx.ini 启动后会在相同目录下生成一个 xxx.pid 的文件,里面只有一行内容是 uWSGI 的主进程的进程号。
uWSGI 启动:uwsgi --ini xxx.ini
uwsgi 重启:uwsgi --reload xxx.pid
uwsgi 停止:uwsgi --stop xxx.pid
如果不行,执行
sudo pkill -f uwsgi -9
ubuntu+Django + nginx + uwsgi 部署的更多相关文章
- Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器
Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...
- Ubuntu + Django + Nginx + uwsgi
环境 Ubuntu 14.04 Python 2.7 Django 1.8.4 1 安装Nginx sudo apt-get install nginx 测试 sudo /etc/init. ...
- Django+Nginx+uWSGI部署
一.介绍 Django的部署可以有多种方式,采用nginx+uwsgi的方式是最常见的一种方式.在这种方式中,将nginx作为服务器前端,接收WEB的所有请求,统一管理请求.nginx把所有静态请求自 ...
- Django+nginx+uwsgi部署教程(centos7+ubuntu16.4)
在线教育平台项目演示地址 项目部署教程 1.1.工作原理介绍 django 一个基于python的开源web框架 uwsgi 一是一个web服务器,也可以当做中间件 nginx 常用高性能代理服务器 ...
- Django+nginx+uwsgi部署教程
00-所需工具 xshell:https://www.netsarang.com/zh/downloading/?token=ZlZnVUNsWDJuM0VaZnVPUjZST1dwd0AzYlNte ...
- centos django+Nginx+uwsgi部署
第五天 部署python3+uwsgi+nginx的博客系统 ================================ mysql基本命令 mysql mysql -p mysqladmin ...
- django+nginx+uwsgi 部署配置
django官方文档在这 https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/uwsgi/ 第一步:先收集静态文件 之前要先设置 S ...
- 填坑!!!virtualenv 中 nginx + uwsgi 部署 django
一.为什么会有这篇文章 第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路. 本来在 Ubuntu14.04 上 搭建好了环境,然后到 centos7. ...
- [阿里云部署] Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器
部署地址:123.56.7.181 Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器 这个标题就比之前的"ECS服务器配置Web环境的全过程及参考资料&qu ...
随机推荐
- 用Socket套接字发送和接收文件(中间用数组存取)
创建服务端: public class TcpFileServer { public static void main(String[] args) throws Exception { //1创建S ...
- String vs StringBuffer vs StringBuilder
String vs StringBuffer vs StringBuilder 本文翻译自:https://www.digitalocean.com/community/tutorials/strin ...
- 03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-其他基础命令
03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-{1..100}-du-cd-cp-file-mv-echo-id-she ...
- 配置Windows server dhcp与AD域对接并使用Win1创的用户登录Win2
创建两台windows_server_2012 创建步骤链接(https://www.cnblogs.com/zhengyan6/p/16338084.html) 注意:所有虚拟机都要在同意网段 配置 ...
- 大促活动如何抵御大流量 DDoS 攻击?
每一次活动大促带来的迅猛流量,对技术人而言都是一次严峻考验.如果在活动期间遭受黑产恶意DDoS攻击,无疑是雪上加霜.电商的特性是业务常态下通常不会遭受大流量DDoS攻击,且对延迟敏感,因此只需要在活动 ...
- idea每次换行后光标都跑到最左边问题
最进用idea时发现每次换行之后一段时间光标会自动跑到最左边,默认把我的首行空格删掉了 IDEA版本为:IntelliJ IDEA 2020.2.3 x64
- MySQL半同步复制源码解析
今天 DBA 同事问了一个问题,MySQL在半同步复制的场景下,当关闭从节点时使得从节点的数量 < rpl_semi_sync_master_wait_for_slave_count时,show ...
- Windows Server体验之升级安装
由于Windows Server的版本是每半年更新的,而微软对于产品的支持周期又是有限的.比如Windows Server 1803的主流支持只到2019年11月12日.也就是说,最多1年半,就需要更 ...
- 搭建Elasitc stack集群需要注意的日志问题
文章转载自:https://blog.csdn.net/u013613428/article/details/84943577 {{uploading-image-736853.png(uploadi ...
- Elasticsearch:使用 IP 过滤器限制连接
文章转载自:https://elasticstack.blog.csdn.net/article/details/107154165