linux上uwsgi+nginx+django发布项目
在发布项目前首先将部署环境进行搭建,尤其是依赖包一定需要提前安装。
一、虚拟环境的搭建
1、建议在linux下新建一个虚拟环境,这样有独立干净的环境。
mkvirtualenv -p python3 yw_crm_project
2、确认软件包管理工具以及python来自于虚拟环境
which pip3
which python3
3、安装项目所需要的包,将windows中所需要的包导出,并且在虚拟环境中安装
pip3 install -r requirements.txt
4、基础环境所需要的包
部署这个项目的环境可能需要用到的包
yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
二、nginx的安装与启动
1、nginx依赖包的安装
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel
db4-devel libpcap-devel xz-devel openssl openssl-devel -y
2、nginx安装与启动
(1)下载源码包
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
(2)解压
tar -zxvf nginx-1.12.0.tar.gz -C /usr/local/
(3)配置
./configure --prefix=/root/Envs/yw_crm_project/ --with-http_ssl_module --with-http_stub_status_module
(4)编译、安装
make && make install
(5)启动nginx
进入到nginx的安装目录,进入到sbin目录,运行nginx文件
./nginx #启动
./nginx -s stop #关闭
./nginx -s reload #重新加载
三、uwsgi的安装与启动
1、安装
pip3 install uwsgi
2、启动
注意进入到项目下执行此命令,与manage.py同一级
uwsgi --http :8000 --module yw_crm.wsgi --py-autoreload=1 #红色参数表示修改源码后无需后台重新启动
此时已经完成nginx、uwsgi的安装与启动,下一步就是上传项目文件。
四、项目的上传与配置
1、上传项目
在本地将项目文件进行压缩,然后通过ZMODEM上传到linux服务器上,然后进行解压,此时项目位于虚拟环境中。
2、修改配置文件
如果访问这个项目在setting中修改
ALLOWED_HOSTS =[]
将其修改为
ALLOWED_HOSTS = ['*']
五、项目的访问
此时启动uwsgi访问django的8000端口是可以访问的,注意,此时并没有启动nginx。
可以看到,这样存在两个问题:
(1)难道每次访问都要输入8000端口吗?这样也太麻烦了吧!
(2)页面样式丢失
这是nginx就有作用了,它会帮你解决这两件事情。
1、端口转发
修改nginx的配置文件,nginx配置文件位于
nginx/conf/nginx.conf
此时首先将windows下的host文件写入域名和ip的对应
文件位于:
C:\Windows\System32\drivers\etc\hosts
其次,可以看到请求先经过nginx的80端口,nginx将请求转发给django的8000端口,这样无须每次访问写django的访问地址和端口,配置完毕后重启nginx。但是此时如果不出意外会报错,因为端口转发后,uwsgi的启动需要更改参数,只需要将启动命令改为:
uwsgi --socket :8000 --module yw_crm.wsgi --py-autoreload=1 #传输协议的更改
这样启动后就没问题,访问:
访问nginx中设定的域名,直接跳转到django项目的8000端口的地址,这样就完成了端口转发。
2、静态资源收集
可以看到样式依旧不在,此时收集静态资源,uwsgi不会帮你收集静态资源的,只能依靠nginx,在nginx的配置文件中进行配置。
(1)修改nginx配置文件
注意:alias参数必须写在location中
server { ...
listen 80;
#server_name localhost;
server_name www.yw.com;
#charset koi8-r; #access_log logs/host.access.log main; location / {
include /root/Envs/yw_crm_project/nginx/conf/uwsgi_params;
uwsgi_pass 0.0.0.0:8000;
# root html;
# index index.html index.htm;
}
location /static {
alias /root/Envs/yw_crm_project/nginx/static/; }
...
}
(2)新建目录
根据配置文件中设置的目录进行新建
mkdir /root/Envs/yw_crm_project/nginx/static
(3)修改项目中的settings文件
将设置的路径添加到settings文件中
STATIC_ROOT='/root/Envs/yw_crm_project/nginx/static'
(4)收集静态资源
在项目中,与manage.py同级下,执行以下命令
python3 manage.py collectstatic
此时开始收集静态资源
最后重启nginx并且进行访问
注意:
这里可能会出现问题,请求的静态资源错误代码403,此时不要着急,这是由于访问权限的问题,在nginx的配置文件中将第一行的
#user nobody
改为
user root
此时就没什么问题了,如果还不行可以试试更改权限,将静态资源文件的权限更改最大
chmod 777 static
这样就完成部署了,但是细心的人可能发现验证码为什么没有出现,这是因为验证码利用到了session,这与数据库有关,那么就牵扯到了数据库的迁移了,详情参考:https://www.cnblogs.com/shenjianping/p/10984540.html
总结:
1、启动nginx
cd nginx/sbin
./nginx
2、启动uwsgi
进入到项目目录下
uwsgi --socket :8000 --module yw_crm.wsgi --py-autoreload=1
3、访问
www.yw.com
按照以上完成服务启动以及项目访问
linux上uwsgi+nginx+django发布项目的更多相关文章
- nginx + uwsgi 部署 Django+Vue项目
nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...
- Linux+.Net Core+Nginx(在Linux上使用Nginx反向代理.Net Core 项目)
Linux+.Net Core+Nginx 之前的文章中有提到关于使用Nginx在linux来实现反向代理,今天我们继续加点料.在Centos7中部署.NetCore,然后使用Nginx进行反向代理! ...
- NET Core MVC 在linux上的创建及发布
NET Core MVC 在linux上的创建及发布 前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们 ...
- 在Linux上使用Nginx为Solr集群做负载均衡
在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...
- 在 linux 上部署并运行 JavaFX 项目
环境 redhat 6.4.eclipse安装JavaFX插件 项目详情及代码参见 在linux上配置并创建JavaFX项目 ,该部署即此文章中项目的部署 配置build.fxbuild 生成buil ...
- 在linux上配置并创建JavaFX项目
本环境为linux配置,因为这里的JavaFX项目是为定制Oracle监控工具而写的.现Oracle已收购Java好几年,用它自己的产生监控自己的东西还是很兼容的.此处Eclipse 为4.5版本. ...
- 01 linux上安装 nginx
一:linux上安装 nginx 下载nginx:wget http://nginx.org/download/nginx-1.6.2.tar.gz 解压:tar zxvf nginx-1.6.2.t ...
- [运维] 如何在 Linux 上安装 Nginx 服务器(一)
原因 因为小程序对素材的大小是由要求的, 所以为了简化小程序上的内存要求, 在Linux上安装nginx来作为静态资源服务器, 这篇为第一篇, 主要介绍怎么在Linux上安装nginx, 下一篇将会介 ...
- uWSGI+nginx+django+virtualenv+supervisor部署项目
一.前言 在部署项目前,你已有一个能够在你本机测试过,能正常启动的Django项目(毕竟本文主要讲解部署Django项目),以及掌握了Linux系统的一些基本命令. 相关链接: Centos7安装py ...
随机推荐
- bzoj 1027: [JSOI2007]合金【凸包+Floyd】
参考:https://www.cnblogs.com/zhuohan123/p/3237246.html 因为一c可以由1-a-b得出,所以删掉c,把a,b抽象成二维平面上的点.首先考虑一个客户需求能 ...
- bzoj 4825: [Hnoi2017]单旋【dfs序+线段树+hash】
这个代码已经不是写丑那么简单了--脑子浆糊感觉np++分分钟想暴起打死我--就这还一遍A过了-- 先都读进来hash一下,因为是平衡树所以dfs序直接按照点值来就好 对于每个操作: 1:set维护已插 ...
- 关于python安装lxml插件的问题
文章只是介绍自己安装时从安装不上到安装后报错,再到安装成功的心路历程,并不代表广大欧皇也会会出现同类型的问题,也不是总结和汇总各种出问题的原因. 直接进入正题,首先我这边是win环境,电脑上装的是py ...
- Vue父子组件传值之——访问根组件$root、$parent、$children和$refs
Vue组件传值除了prop和$emit,我们还可以直接获取组件对象: 根组件: $root // 单一对象 表示当前组件树的根 Vue 实例,即new Vue({...根组件内容}).如果当前实例没有 ...
- OpenCV+VS开发环境配置
最近跑C程序,头文件中用到了OpenCV中的文件,找了很多篇OpenCV+VS的环境配置,发现如下这篇写的最为详细,特转载来自己的博客中留存,并附上原博客地址如下 OpenCV学习笔记(一)——Ope ...
- Java socket2
通过socket对象可以获取通信对方的socket信息 客户端: import java.net.*; import java.io.*; public class TestServer { publ ...
- 171 Excel Sheet Column Number Excel表列序号 26进制转10进制
给定一个Excel表格中的列名称,返回其相应的列序号.示例: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -&g ...
- [转]F# Samples 101 - Visual Studio 2010
http://code.msdn.microsoft.com/F-Samples-101-0576cb9f/sourcecode?fileId=18956&pathId=1045958806 ...
- AJPFX学习笔记JavaAPI之String类
学习笔记JavaAPI之String类 [size=10.5000pt]一.所属包java.lang.String,没有子类.特点:一旦被初始化就不可以被改变. 创建类对象的两种方式: String ...
- dubbo系列--集群容错
作为一个程序员,咱们在开发的时候不仅仅是完成某个功能,更要考虑其异常情况程序如何设计,比如说:dubbo的消费端调用服务方异常的情况,要不要处理?如何处理? dubbo提供了多种集群容错机制,默认是f ...