今日内容: 博客地址: 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的配置文件启动项目 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 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