在发布项目前首先将部署环境进行搭建,尤其是依赖包一定需要提前安装。

一、虚拟环境的搭建

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发布项目的更多相关文章

  1. nginx + uwsgi 部署 Django+Vue项目

    nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...

  2. Linux+.Net Core+Nginx(在Linux上使用Nginx反向代理.Net Core 项目)

    Linux+.Net Core+Nginx 之前的文章中有提到关于使用Nginx在linux来实现反向代理,今天我们继续加点料.在Centos7中部署.NetCore,然后使用Nginx进行反向代理! ...

  3. NET Core MVC 在linux上的创建及发布

    NET Core MVC 在linux上的创建及发布 前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们 ...

  4. 在Linux上使用Nginx为Solr集群做负载均衡

    在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...

  5. 在 linux 上部署并运行 JavaFX 项目

    环境 redhat 6.4.eclipse安装JavaFX插件 项目详情及代码参见 在linux上配置并创建JavaFX项目 ,该部署即此文章中项目的部署 配置build.fxbuild 生成buil ...

  6. 在linux上配置并创建JavaFX项目

    本环境为linux配置,因为这里的JavaFX项目是为定制Oracle监控工具而写的.现Oracle已收购Java好几年,用它自己的产生监控自己的东西还是很兼容的.此处Eclipse 为4.5版本. ...

  7. 01 linux上安装 nginx

    一:linux上安装 nginx 下载nginx:wget http://nginx.org/download/nginx-1.6.2.tar.gz 解压:tar zxvf nginx-1.6.2.t ...

  8. [运维] 如何在 Linux 上安装 Nginx 服务器(一)

    原因 因为小程序对素材的大小是由要求的, 所以为了简化小程序上的内存要求, 在Linux上安装nginx来作为静态资源服务器, 这篇为第一篇, 主要介绍怎么在Linux上安装nginx, 下一篇将会介 ...

  9. uWSGI+nginx+django+virtualenv+supervisor部署项目

    一.前言 在部署项目前,你已有一个能够在你本机测试过,能正常启动的Django项目(毕竟本文主要讲解部署Django项目),以及掌握了Linux系统的一些基本命令. 相关链接: Centos7安装py ...

随机推荐

  1. 徐州联赛选拔赛 - 计算IP地址值

    题目链接 思路:这是一道非常简单的题目,直接用公式计算就好了.对于IP地址a.b.c.d,转换为十进制数就是(a<<24)|(b<<16)|(c<<8)|d.唯一要 ...

  2. PowerShell+NetApi 批处理执行程序

    基于CMD 编写批处理程序很反人类,此篇文章介绍利用Power Shell脚本(借鉴明经net版主雪山飞狐的脚本改造而成)处理之前的Bat+scr的过程(https://www.cnblogs.com ...

  3. 慕课网5-2编程练习:flex布局制作卡片布局案例

    慕课网5-2编程练习:flex布局制作卡片布局案例 小伙伴们,学习了卡片布局,接下来我们根据效果图,也写出一个卡片布局的页面吧! 效果图如下: 任务 1.主体内容的卡片一行只能显示两个. 2.卡片与卡 ...

  4. TRACE Method 网站漏洞,你关闭了吗[转]

    危险:该漏洞可能篡改网页HTML 源码 最近采用360 web scan 对服务器进行扫描.发现漏洞.TRACE Method Enabled 安全打分98分.前一阵有网页JS被人篡改,可能就是从这个 ...

  5. 导出数据库报错 EXP-00002: 写入导出文件时出错 EXP-00000: 导出终止失败

    解决方法: 1.检查磁盘所在空间是否够用. 2.磁盘修复下 排除故障考虑的地方要全面啊.

  6. 转-CoreText 使用教程

    转自:http://www.dapps.net/dev/iphone/how-to-create-a-simple-magazine-app-with-core-text.html Core Text ...

  7. Java编码格式

    简介 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多.本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Jav ...

  8. 445 Add Two Numbers II 两数相加 II

    给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表.你可以假设除了数字 0 之外,这两个数字都不会以零开头.进阶:如果输入链表 ...

  9. 174 Dungeon Game 地下城游戏

    一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格布局.我们英勇的骑士(K)最初被安置在左上角的房间里,并且必须通过地下城对抗来拯救公主.骑士具有以正整数 ...

  10. Spring需要的几个关键配置文件(SSM框架整合)

    打包下载 springmvc-servlet.xml <?xml version="1.0" encoding="UTF-8"?> <bean ...