发布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后面添加

13,发布CRM的更多相关文章

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

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

  2. 超哥教你发布CRM

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

  3. Cloud Native Weekly | Kubernetes 1.13发布

    云原生一周精选 1——Kubernetes 1.13发布 2——Kubernetes首次出现重大安全漏洞 3——Docker和微软公司推出云原生应用的部署规范 4——谷歌推出beta版本的Cloud ...

  4. Xamarin 2017.9.13发布更新

     Xamarin 2017.9.13发布更新 Visual Studio 2017更新到15.3.4.其中,Xamarin.Visual更新到4.6.3.4;Xamarin.iOS更新到10.12.3 ...

  5. Java 13 发布了!

    点击上方蓝色链接,关注并"设为星标" Java干货,每天及时推送 通告一下,Java 13 09/17 发布了,尝鲜地址: https://www.oracle.com/techn ...

  6. Request Tracker 4.0.13 发布

    Request Tracker 4.0.13 修复了几个重要的安全问题. Request Tracker,企业级的问题跟踪系统

  7. Jackcess 1.2.13 发布,Java 访问 Access 数据库

    Jackcess 1.2.13 包含新的方法用于在数据库和附件内容解码中查找复杂值类型的关系,修复了 CodeHandler 相关的一些小 bug. Jackcess 是一个Java 类库,用来读写微 ...

  8. Solon 1.2.13 发布,开启与 Springboot 的互通

    Solon 一个类似Springboot的微型开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,3500多次的commit:内核保持0.1m的身材,超高的Web跑分,良好的使用体验. ...

  9. Forest v1.5.13 发布,声明式 HTTP 框架,已超 1.7k star

    Forest介绍 Forest 是一个开源的 Java HTTP 客户端框架,它能够将 HTTP 的所有请求信息(包括 URL.Header 以及 Body 等信息)绑定到您自定义的 Interfac ...

随机推荐

  1. 【起航计划 006】2015 起航计划 Android APIDemo的魔鬼步伐 05 App->Activity->Custom Title 自定义标题栏

    Android UI缺省的标题栏由android:label 定义,显示在屏幕左上角,Android允许Activity自定义标题栏,使用自定义Layout重新设置标题栏,比如实现Windows Mo ...

  2. python的元组

    Python的元组和列表很相似,只是元组一旦定义就无法修改,比如定义一个学生的元组: names = ('alex','jack') print(names)#('alex', 'jack') pri ...

  3. SSL Labs: Increased Penalty When TLS 1.2 Is Not Supported

    https://community.qualys.com/blogs/securitylabs/2015/05/22/ssl-labs-increased-penalty-when-tls-12-is ...

  4. 如何让.NET Core应用的配置与源文件保持同步?

    配置的同步涉及到两个方面:第一,对原始的配置文件实施监控并在其发生变化之后从新加载配置;第二,配置重新加载之后及时通知应用程序进而使后者能够使用最新的配置.接下来我们利用一个简单的.NET Core控 ...

  5. python 网址

    https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034e ...

  6. now()与sysdate()的区别(1)

        now()与sysdate()两个函数都以'YYYY-MM-DD HH:MM:SS'的形式表示表示当前的时间.比如: root@rac1 21:13:10> select sysdate ...

  7. CPU体系结构

    http://blog.csdn.net/liuxc0116/article/details/17004313 1.算术逻辑单元ALU(Arithmetic Logic Unit)ALU是运算器的核心 ...

  8. 【转】Android开发学习笔记(一)——初识Android

    对于一名程序员来说,“自顶向下”虽然是一种最普通不过的分析问题和解决问题的方式,但其却是简单且较为有效的一种.所以,将其应用到Android的学习中来,不至于将自己的冲动演变为一种盲目和不知所措. 根 ...

  9. gearman安装实录

    花了5个小时装好了gearman,问题不断,坑爹的服务器yum还坏了,悲催. 服务器系统:centos5.3 64位 gearman版本:1.1.8 安装包(相关依赖)下载 1.gearman安装包 ...

  10. 2018.9.3 CEP课程总结

    什么是CEP课程? 职业生涯规划课程 蓝桥介绍 立人达人 全人教育 人文 重视人 尊重人 关心人 爱护人 人才 人格 简历的制作 找工作的流程? 1.简历的准备------>投发简历(自己投.老 ...