发布CRM你将使用以下软件

  • nginx
  • uWSGI
  • CentOS7
  • CRM项目文件
  • virtualenv
  • supervisor

WSGI、uWSGI

python web服务器开发使用WSGI协议(Web Server Gateway Interface)

python web项目默认会生成一个wsgi.py文件,确定好应用模块。

生产环境中使用的是uWSGI,实现了WSGI所有接口,C语言编写,效率很高的web服务器。

uWSGI是一个全功能的HTTP服务器,实现了WSGI协议、uwsgi协议、http协议等。它要做的就是把HTTP协议转化成语言支持的网络协议。比如把HTTP协议转化成WSGI协议,让Python可以直接使用。

Nginx

使用nginx是为了它的反向代理功能,项目会通过Django+uWSGI+Nginx进行服务器线上部署。

CentOS

1.打包项目CRM文件夹,压缩文件

2.通过xftp、scp、lrzsz等上传文件至Centos服务器

Linux使用技巧

1.通过xshell或者iTerm等软件,多终端操作你的linxu,这样对uwsgi、nginx、项目代码调试的时候,避免来回切换目录,提供工作效率。

2.注意修改了linux软件的配置文件,都要重启服务才能生效。

Virtualenv

构建一个干净,隔离的python解释器环境,防止软件依赖,冲突等问题,建议使用。

Supervisor

Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

项目部署

激活虚拟python环境

#创建基于python3的虚拟解释器环境venv
virtualenv --no-site-packages --python=python3 venv
#激活python3虚拟环境
[root@yugo /data ::]#source venv/bin/activate
(venv) [root@yugo /data ::]#

安装uwsgi

(venv) [root@yugo /data ::]#pip3 install uwsgi

配置启动uwsgi.ini,启动uwsgi时候,用这个配置文件启动

(venv) [root@yugo /data ::]#cat uwsgi.ini
[uwsgi]
#使用nginx连接时使用
socket=0.0.0.0:
#不用nginx直接当做web服务器使用
#http=0.0.0.0:
#项目目录绝对路径
chdir=/data/Ace_crm
#wsgi文件路径,在项目底下
wsgi-file=Ace_crm/wsgi.py
#指定解释器目录
home=/data/venv
processes=
threads=
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log

配置nginx

配置nginx.conf,通过nginx反向代理将请求丢给django处理

(venv) [root@yugo /data ::]#cat /opt/nginx1-/conf/nginx.conf
worker_processes ;
events {
worker_connections ;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout ;
#定义负载均衡池,名字叫做django,池子中写入uwsgi发布django的socket地址
upstream django {
server 0.0.0.0:;
}
server {
listen ;
server_name pythonav.cn;
#访问nginx的根路径时,转发请求给uwsgi的8000端口,这里要和uwsgi.ini写的一致
location / {
include /opt/nginx1-/conf/uwsgi_params;
     #请求转发给upstream地址池里的uwsgi程序
uwsgi_pass django;
}
location /static/ {
alias /opt/nginx1-/html/static/;
} }
}

热加载nginx服务,读取nginx.conf内容

(venv) [root@yugo /data ::]#/opt/nginx1-/sbin/nginx -t
nginx: the configuration file /opt/nginx1-/conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx1-/conf/nginx.conf test is successful
(venv) [root@yugo /data ::]#/opt/nginx1-/sbin/nginx -s reload

启动uwsgi,启动django

(venv) [root@yugo /data ::]#uwsgi --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini
(venv) [root@yugo /data ::]#ps -ef|grep uwsgi
root : ? :: uwsgi uwsgi.ini
root : ? :: uwsgi uwsgi.ini
root : ? :: uwsgi uwsgi.ini
root : ? :: uwsgi uwsgi.ini
root : ? :: uwsgi uwsgi.ini
root : pts/ :: grep --color=auto uwsgi #如果需要停止uwsgi可以使用ps -ef|grep uwsgi,找到pid杀掉
#更好的一个杀掉uwsgi的方式
killall -9 uwsgi

访问nginx的80端口,查看是否请求转发给django

http://pythonav.cn/login/
或者10.0.0./login

配置nginx的静态资源

为什么要配置静态资源?

配置静态资源目录是因为让静态资源通过nginx可以直接返回,不需要通过uwsgi,也就是让uwsgi只处理后端逻辑,不处理静态资源,优化性能

配置静态资源,django和nginx

#创建静态资源存放目录
[root@yugo /opt/nginx1-/html ::]#mkdir -vp /opt/nginx1-/html/static
mkdir: created directory ‘/opt/nginx1-/html/static’
#给目录添加权限
[root@yugo /opt/nginx1-12/html 11:40:57]#chmod  755 /opt/nginx1-12/html/static/

配置django的settings.py

DEBUG = False
ALLOWED_HOSTS = ['*']

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/ STATIC_URL = '/static/'
STATIC_ROOT= '/opt/nginx1-12/html/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]

分割线--

收集django静态文件

python3 manage.py collectstatic
这一句话就会把以前放在app下static中的静态文件全部拷贝到 settings.py 中设置的 STATIC_ROOT 文件夹中 然后请求静态资源就会去nginx配置的 location /static {alias /opt/nginx1-12/html/static/ } 寻找

以上步骤完成后,访问服务器主机地址和端口,如果nginx.conf中配置的为80端口,则地址栏不需要输入端口,因为浏览器请求端口也是默认为80端口,非80端口的需要自己在ip后面添加

完毕,有问题再找超哥

老男孩教育

QQ:877348180

超哥教你发布CRM的更多相关文章

  1. 远哥教你MuleESB系列视频教程

    远哥教你MuleESB系列视频课程介绍(共11个视频) —1.Mule ESB介绍 —2.社区版/企业版的区别和安装 —3.MuleESB快速入门,以及MEL和Message结构 —4.官方例子讲解( ...

  2. 寒哥教你学 iOS - 经验漫谈(转)

    转自http://www.cocoachina.com/ios/20150907/13339.html 本篇文章主要讲解 4个问题 load妙用 aop面向切面编程 NSNumber Or Int @ ...

  3. 教你发布Silverlight Bussiness Application(SQL Server 登录,局域网访问,以及使用ArcGIS Server服务需要注意的问题)

    原文:教你发布Silverlight Bussiness Application(SQL Server 登录,局域网访问,以及使用ArcGIS Server服务需要注意的问题) 之前发布过Silver ...

  4. JAVAEE——BOS物流项目07:WebService入门、apache CXF入门、基于CXF发布CRM服务

    1 学习计划 1.WebService入门 n 什么是WebService n 调用网络上的WebService服务 n SOAP和WSDL概念 n 基于JDK1.7发布一个简单的WebService ...

  5. 超哥笔记--shell 基本命令(4)

    一 linux 命令行的组成结构 自定义命令行结构 PS1变量来控制 \u \W 最后一位工作目录 \w 绝对路径工作目录 \t 显示24h制的时间 \h PS1="[\u@\h \w \t ...

  6. Scala入门教程---《chang哥教你一天搞定Scala》

    <chang哥教你一天搞定Scala> /** * <chang哥教你一天搞定Scala> * scala是一门多范式编程语言,集成了面向对象编程和函数式编程等多种特性. * ...

  7. bzoj 1568 [JSOI2008]Blue Mary开公司 超哥线段树

    [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1808  Solved: 639[Submit][Sta ...

  8. 13,发布CRM

    发布CRM你将使用以下软件 nginx uWSGI CentOS7 CRM项目文件 virtualenv supervisor WSGI.uWSGI python web服务器开发使用WSGI协议(W ...

  9. 1568: [JSOI2008]Blue Mary开公司(超哥线段树)

    1568: [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1198  Solved: 418 Descr ...

随机推荐

  1. HBase 笔记3

    数据模型 Namespace 表命名空间: 多个表分到一个组进行统一的管理,需要用到表命名空间 表命名空间主要是对表分组,对不同组进行不同环境设定,如配额管理  安全管理 保留表空间: HBase中有 ...

  2. 2017.11.10 重读C++ Primer

    第二章   变量和变量类型 1. C++ 算数类型 bool                     布尔 最小尺寸未定义 char                     字符 8位 wchar_t ...

  3. nginx--service配置

    nginx从今天开始进行相关学习了,包括:1.注册centos的service服务:2.相关的tomcat负载:3.https配置:4.session共享配置 1.注册centos的service服务 ...

  4. 用Java画简单验证码

    以下是具体代码: package com.jinzhi.tes2; import java.awt.Color;import java.awt.Font;import java.awt.Graphic ...

  5. Linux 网络管理、软件包安装

    1.fdisk -l 查看处系统磁盘设备,打boot“*”的是系统启动的磁盘块. (1)查看磁盘Disk /dev/sdb:5368MB(总大小),5368709120bytes(比特位) (2)25 ...

  6. 剑指offer(53)表示数值的字符串

    题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...

  7. linux --- 6. 项目部署

    一.负载均衡 .准备三台机器,准备3台虚拟机,或者和俩同桌交流一下 192.168.226.128 是nginx资源服务器,返回页面的 192.168.226.129 用作nginx负载均衡服务器 1 ...

  8. js +与?优先级

    var val = 'smtg'; console.log('Value is ' + (val === 'smtg') ? 'Something' : 'Nothing'); // A. Value ...

  9. Windows下使用CMD命令进入和退出MySQL数据库

    一.进入 1.在CMD命令窗口敲入命令 mysql -hlocalhost -uroot -p 后按回车(注意这里的"-h"."-u"."-p&quo ...

  10. 使用pandas的部分问题汇总

    pandas(我所用版本0.17)是一个强大数据处理库,在开发金融类系统中我应用到了pandas.Dataframe数据类型,它的数据结构类似一张图表(如下图所示),左边一列为index既行的索引: ...