2019-5-1 21:37:20

嗓子前天回来上火,现在不疼了就是有点痒痒!

多喝热水

今天老师讲的如何发布项目,其实就是配置一下自己的uwsgi和  Nginx  配置一下 其他的不难

笔记很详细 看一下!!明天照着做一下!!!

越努力,越幸运!

永远不要高估自己!

参考博客: https://www.cnblogs.com/pyyu/p/9481344.html

https://www.cnblogs.com/pyyu/p/9276851.html

不难!!加油! 多喝热水!

关于uwsgi配置参考  :  https://www.jianshu.com/p/f3fd1f831729

还有两天视频!!!整理一下博客 和笔记!!!

今日内容:
博客地址:
https://www.cnblogs.com/pyyu/p/9481344.html linux基本管理命令 服务器上安装服务,python3.6(宿主机上的物理解释器)
1.虚拟解释器
virtualenv
虚拟出多个干净、隔离的python解释器环境
问题:管理上较为麻烦,需要找到venv的路径,并且source activate 才能激活虚拟环境
2.
virtualenvwrapper工具
更为方便的使用以及管理virtualenv
1.配置好环境变量之后,每次开机就加载这个软件
2.workon 激活并且切换多个虚拟环境
mkvirtualenv 创建
lsvirtualenv
cdvirtualenv
rmvirtualenv mariadb(mysql),与django连接,存储数据(yum install mariadb-server mariadb-client)
初始化连接数据库
__init.py__
import pymysql
pymysql.install()
本地django连接linux上的数据库注意事项:
1.防火墙问题,需配置规则,或者关闭防火墙
使用云服务器的同学,需要注意开通3306端口(安全组功能)
2.远程连接mysql,需要授权,远程连接
grant all privileges ..... redis
import redis 准备django项目 > crm 在服务器上运行crm
1.把本地代码,传至linux
-scp(linux与linux网络传输)
-xshell(yum install lrzsz) (windows)
lrzsz 可以通过如下俩命令管理文件,也可以直接拖拽文件
rz 接收
sz 发送
lrzsz只适用于小文件,大文件,请用xftp
-xftp (更为高效的企业级文件传输协议软件)
2.django项目需要配置allow_hosts=['*'],允许所有主机访问
debug=True #返回给项目一个debug信息,暴露了项目配置信息,因此在线上要关闭 Nginx
1.web服务器,用户的统一入口,
我们的想法是,让用户通过nginx这个入口,就能访问到我们的应用服务器的功能
www.pythonav.cn 入口 < 80端口
端口转发,反向代理
80端口的请求 > 8000的端口应用 server{}虚拟主机 2.反向代理服务器
proxy_pass 后端应用服务器的ip:port (转发给一个单点机器)
proxy_pass upstream负载均衡池 3.负载均衡服务器
nginx接收到了基于wsgi协议的动态请求,然后通过uwsgi_pass转发给uwsgi服务器 uwsgi_pass mydjango; upstream mydjango {
server 192.168.12.1:8000 weight=1;
server 192.168.12.2:8000 weight=5;
server 192.168.12.3:8000 weight=10;
} 4.处理静态文件,者是nginx的天然优势,处理静态文件的高并发性性能 www.pythonav.com/static/xxx.js
文件存放目录/data/static/xxx.js
www.pythonav.com/static/xxx.css
文件存放目录/data/static/xxx.css
www.pythonav.com/static/xxx.jpg
文件存放目录/data/static/xxx.jpg location /static {
alias /data/static;
} uwsgi
uwsgi服务器:
通过uwsgi这个软件启动crm项目,且是一个支持高并发,多进程的一个应用服务器
uwsgi --module crm python3 manage.py runserver 0.0.0.0:8000 ×× 不再用这种单机形式启动crm
django-admin startproject crm
django-admin startapp app01
crm
-crm
-wsgi.py (重点级的文件,django启动,实现wsgi协议的文件)
-manage.py 常见问题:
uwsgi 启动crm的时候,非常有可能报错一个 no application(找不到应用)
uwsgi找不到你的crm的wsgi.py
其实uwsgi是通过这个application对象加载crm的
application = get_wsgi_application() 进程管理工具:
启动进程后,通过命令 手动管理
ps -ef |grep uwsgi
#启停uwsgi
kill -9 pid
pkill uwsgi
killall uwsgi #管理nginx ps -ef
kill #管理mysql
ps -ef kill #进程管理工具
supervisor 服务启动后 supervisorctl ,可以通过这个命令,非常方便的管理进程,也可以统一启动,停止所有的进程
批量管理进程
mysql : running/stop
nginx : running/stop
uwsgi:running/stop 项目发布配置手册:
(更换不同的服务器环境,首先就要解决环境依赖的问题)
1.pip3 frezz > requirements.py
2. pip3 install -r requirements.py 3.docker 1.准备python环境,准备虚拟环境,激活了虚拟环境
mkvirtualenv nbcrm
检测是否虚拟环境正常
which pip3
which python3 2.安装django模块(此时的操作都是在nbcrm这个虚拟环境下了)
pip3 install django==1.11.11 3.安装pymysql连接mysql数据库
pip3 install pymysql 4.安装django的一个django-multiselectfield pip3 install django-multiselectfield 5.解决项目的数据库连接问题,修改settings.py
1.启动linux的数据库,创建对应的数据库,密码设置等等
create database nb_crm;
2.更改settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'nb_crm', #数据库名
'HOST': '127.0.0.1', #这里服务器的ip地址
'PORT': 3306, #端口
'USER': 'root', #用户名
'PASSWORD': 'redhat123', #用户密码
}
}
3.更改允许主机
ALLOWED_HOSTS = ['*'] 4.线上关闭debug(肖锋的这个nb_crm先别改debug了),默认先用True
debug=True 使用uwsgi启动django
1.安装uwsgi
pip3 install -i https://pypi.douban.com/simple uwsgi 2.通过uwsgi命令启动python应用
uwsgi --http 0.0.0.0:8888 --wsgi-file test1.py
--http 指明是http协议
--socket 启动一个socket 链接
--wsgi-file 指明一个python应用文件 3.通过uwsgi启动django项目(问题是,uwsgi不处理static静态文件的配置)
uwsgi --http :8888 --module Nb_crm.wsgi 4.uwsgi可以热加载项目
uwsgi --http :9999 --module mycrm.wsgi --py-autoreload=1
--py-autoreload是告诉uwsgi自动重启加载django项目 5.通过uwsgi的配置文件启动项目(把这个文件放在项目的根目录中,和manage.py同级)
1.手动创建uwsgi.ini文件
touch uwsgi.ini
2.写入如下配置
[uwsgi]
#项目的绝对路径,定位到项目的第一层
chdir = /opt/NB_crm
#指明项目的wsgi文件路径
module = NB_crm.wsgi
#指明你的虚拟解释器的第一层路径
home = /root/Envs/nbcrm
#指明通过uwsgi,启动多少个进程
processes = 5 #非常重要
#非常重要
#非常重要
#如果你已经配置了nginx(启动了nginx服务,配置了uwsgi_pass),请用这个socket连接
#socket = 0.0.0.0:8000 #如果你没用nginx,想通过uwsgi直接启动web服务,指明http协议
http = 0.0.0.0:9999 #在退出uwsgi环境后,清空环境变量
vacuum = true module :可以这么来理解,对于- myweb_uwsgi.ini文件来说,与它的平级的有一个NB_crm目录,这个目录下有一个wsgi.py文件 6.通过配置文件启动NB_crm(注意uwsgi不会处理静态文件,如果有,也是浏览器的缓存!!!!)
uwsgi --ini uwsgi.ini 7.配置django的settings.py,收集所有NB_crm项目所需的静态文件
1.#通过命令,收集整个项目所有的静态文件,放入到/opt/static/
STATIC_ROOT='/opt/static/'
2.执行命令
python3 manage.py collectstatic
3.此时NB_crm的所有静态文件,都跑到/opt/static/底下了
(nbcrm) [root@node1 /opt/NB_crm 11:09:33]#ls /opt/static/
admin css imgs js plugins 8.配置nginx
1.配置一个网站入口,当用户访问192.168.12.96:80 这个web应用时,自动将请求转发给uwsgi,uwsgi处理后,返回给nginx,返回给用户
当请求是192.168.12.96:80的时候,其实访问的是192.168.12.96:9999 这是动态请求,因为我是找到的uwsgi
#匹配度最低的写法,因此就是任何的请求都访问到这里 2.通过nginx去处理静态文件 3.nginx.conf配置如下 #定义负载均衡池,里面放入uwsgi的地址
upstream nbcrm {
server 127.0.0.1:8000;
} server {
listen 80;
server_name www.s14huoying.com;
#讲nginx入口的请求,直接反向代理给uwsgi
location / {
uwsgi_pass nbcrm;
include /opt/nginx1-12/conf/uwsgi_params;
}
#通过nginx处理nbcrm的静态文件
location /static {
alias /opt/static/;
}
} 9.更改uwsgi.ini ,指明socket连接,结合uwsgi 和nginx
#如果你已经配置了nginx,请用这个socket连接
socket = 0.0.0.0:8000 10.启动uwsgi.ini
uwsgi --ini uwsgi.ini 启动nginx ./nginx 并且访问nginx的域名入口,查看是否能访问到uwsgi项目,并且静态文件是否正常 www.s14huoying.com 查看浏览器状态 11.配置supversior,管理uwsgi进程 注意,请退出虚拟环境,在宿主机环境下,安装supvervisor 1.安装easy_install ,python2的软件包管理工具 ,如果有了可以忽略
yum install python-setuptools #安装软件
easy_install supervisor 2.使用supervisor命令,常用命令如下
生成配置文件
echo_supervisord_conf > /etc/supervisord.conf 3.修改配置文件,添加任务,按照自己的机器环境修改此命令
[program:s14nbcrm]
#启动uwsgi的命令就是这个
command=/root/Envs/nbcrm/bin/uwsgi --ini /opt/NB_crm/uwsgi.ini
#自动启动uwsgi,挂了之后自动加载
autorestart=true 4.启动supvervisord服务,启动uwsgi
#服务端命令,用于启动这个服务
supervisord -c /etc/supervisord.conf 5.通过命令管理uwsgi
supervisorctl 直接回车,进入交互式管理状态 [root@node1 ~ 11:53:32]#supervisorctl
s14nbcrm RUNNING pid 2008, uptime 0:01:56 也可以通过命令交互式的管理uwsgi
#服务端启动后,通过命令管理软件 supervisorctl start s14nbcrm
supervisorctl stop s14nbcrm
supervisorctl status s14nbcrm

5.1 Linux(8)的更多相关文章

  1. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  2. Linux 内核概述 - Linux Kernel

    Linux 内核学习笔记整理. Unix unix 已有40历史,但计算机科学家仍认为其是现存操作系统中最大和最优秀的系统,它已成为一种传奇的存在,历经时间的考验却依然声名不坠. 1973 年,在用 ...

  3. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  4. NodeJs在Linux下使用的各种问题

    环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...

  5. [linux]阿里云主机的免登陆安全SSH配置与思考

    公司服务器使用的第三方云端服务,即阿里云,而本地需要经常去登录到服务器做相应的配置工作,鉴于此,每次登录都要使用密码是比较烦躁的,本着极速思想,我们需要配置我们的免登陆. 一 理论概述 SSH介绍 S ...

  6. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  7. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  8. SQL Server on Linux 理由浅析

    SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...

  9. Microsoft Loves Linux

    微软新任CEO纳德拉提出的“Microsoft Loves Linux”,并且微软宣布.NET框架的开源,近期Microsoft不但宣布了Linux平台的SQL Server,还宣布了Microsof ...

  10. Linux 江湖系列阶段性总结

    引言 我使用 Linux 已经有很多年了,最开始接触 Linux 的时候是从 RedHat 9(没有 Enterprise),中途换过 N 个不同的发行版.多年前,我在 BlogJava 上面分享 J ...

随机推荐

  1. python内置函数print输出到文件,实现日志记录的功能

    # bulid time 2018-6-22 import os import time def log(*args, **kwargs): # *kargs 为了通用 可不传 rule = &quo ...

  2. Python之运算符以及基本数据类型的object

    一.运算符 1.算术运算符 % 求余运算 **   幂-返回x的y次幂 //   取整数-返回商的整数部分,例:9//2输出结果是4 2.比较运算符 == 等于 != 不等于 <> 不等于 ...

  3. centos-7.4_ceph-12.2.4部署

    centos-7.4_ceph-12.2.4部署: 前言: 基于centos7.4安装ceph-luminous的主要步骤有一下几点: 1.安装centos7.4的系统,并配置网卡 2.安装前的环境配 ...

  4. k8s标签

    一.标签是什么 标签是k8s特色的管理方式,便于分类管理资源对象. 一个标签可以对应多个资源,一个资源也可以有多个标签,它们是多对多的关系. 一个资源拥有多个标签,可以实现不同维度的管理. 可以使用标 ...

  5. DP【洛谷P3135】[USACO16JAN]堡哞Fort Moo

    [洛谷P3135][USACO16JAN]堡哞Fort Moo Bessie和她的朋友Elsie正在建筑一个堡垒,与任何一个好的堡垒一样,这个需要一个强固的框架.Bessie想造一个轮廓是1m宽的空心 ...

  6. HiBench学习笔记

    HiBench资源及教程:https://github.com/intel-hadoop/HiBench 介绍: Hadoop新人 环境 linux 该笔记针对英语弱鸡&自己在使用过程用遇到的 ...

  7. [Leetcode]017. Letter Combinations of a Phone Number

    public List<String> letterCombinations(String digits) { LinkedList<String> ans = new Lin ...

  8. Codeforces-C-Nice Garland(枚举+暴力)

    You have a garland consisting of nn lamps. Each lamp is colored red, green or blue. The color of the ...

  9. Til the Cows Come Home (dijkstra算法)

    Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before ...

  10. js中url有中文的转码方法

    转载:https://www.cnblogs.com/chiangfai/p/6073000.html