zoukankan      html  css  js  c++  java
  • linux学习-DAY3-上线BBS项目、ansible的使用

    一、LNM+Python Django+uwsgi+redis项目

    1.安装项目中需要的python模块

    pip3 install -i https://pypi.doubanio.com/simple/ -r re.txt
    pip3 install -i https://pypi.doubanio.com/simple/ uwsgi
        
    vim  re.txt
    
    asn1crypto==0.24.0
    beautifulsoup4==4.6.3
    bs4==0.0.1
    certifi==2018.4.16
    cffi==1.11.5
    chardet==3.0.4
    Click==7.0
    cryptography==2.3.1
    Django==1.11.9
    Flask==1.0.2
    Flask-Cors==3.0.6
    gevent==1.3.6
    greenlet==0.4.15
    idna==2.7
    ItsDangerous==1.1.0
    Jinja2==2.10
    lxml==4.2.6
    MarkupSafe==1.0
    numpy==1.15.3
    Pillow==5.3.0
    pycparser==2.18
    PyMySQL==0.9.2
    pytz==2018.7
    requests==2.19.1
    selenium==3.141.0
    six==1.11.0
    urllib3==1.23
    virtualenv==16.1.0
    Werkzeug==0.14.1
    wordcloud==1.5.0
    
    

    2.数据库的处理

    上传bbs.sql

    # 在mysql中创建bbs库,并导入数据库SQL脚本
    
    mysql> create database bbs charset utf8mb4;
    mysql> use bbs
    mysql> source /opt/bbs.sql
    mysql> grant all on *.* to bbs@'10.0.0.%' identified by '123';
    # 为了安全性,为项目单独建立一个用户链接数据库,最好和项目一样
    
    # MySQL用户的定义
    
    # mysql用户权限 grant
    grant all 	# 所有权限	
    grant select,update,insert # 增查改
    
    
    # 该用户对哪个库哪个表的权限
    # on 库名.表名
    # on *.*:该用户拥有对所有库的所有表的权限
    
    # USERNAME@'白名单'
    # 白名单: 主机域IP地址
    
    bbs@'localhost'   				# 本地访问
    bbs@'10.0.0.110'  				# 允许10.0.0.110访问
    bbs@'10.0.0.%'	   				# 允许10.0.0开头24位掩码的整个网段访问
    bbs@'10.0.0.0/255.255.240.0'	# 允许255.255.240.0网段的10.0.0.0的访问
    bbs@'10.0.0.5%'				# 允许10.0.0.50~59访问
    bbs@'%'						# 允许任意网络访问
    	
        
    # identified by '123'
    # 设置密码为123
    
    

    Django中数据库的链接

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'bbs',
            'HOST': "10.0.0.100",
            'USER': 'bbs',
            'PASSWORD': '123',
            'PORT': 3306,
        }
    }
    

    3.BBS项目部署

    配置Nginx

    vim /etc/nginx/conf.d/py.conf
    
    server {
    	listen 80;
    	server_name 10.0.0.100;
    	client_max_body_size 100M;
    	
    	location /static {
    		alias /opt/BBS/static/;
    	}
    
    	location /media {
    		alias /opt/BBS/media;
    	}
    
    	location / {
    		index index.html;
    		include uwsgi_params;
    		uwsgi_pass 127.0.0.1:9090;
    		uwsgi_param UWSGI_SCRIPT BBS.wsgi;
    		uwsgi_param UWSGI_CHDIR /opt/BBS;
    	}
    }
    

    配置uwsgi

    # 关闭所有已有的uwsgi进程
    kill -9 `ps -ef |grep uwsgi|awk {'print $2'}`
    
    # 在项目根目录创建
    vim  uwsgi.ini
    
    [uwsgi]
    socket = 127.0.0.1:9090
    master = true
    workers = 2
    reload-mercy = 10
    vacuum = true
    max-requests = 1000
    limit-as = 512
    buffer-size = 30000
    
    
    # 启动uwsgi
    uwsgi --ini uwsgi.ini &
    
    # 重启nginx
    systemctl restart nginx
    
    

    二、Python 在运维工作中的经典应用

    1.ansible

    # 通过ansible可以一次性配置多台电脑
    # Linux的 SSHD(22)
    # 验证方式:
    # 	(1)用户+密码(PAM)
    # 	(2)秘钥验证(公钥:钥匙和私钥:锁)
    # 	 	通过秘钥对实现,需要将公钥分发到各节点
    # ansible管理被控端:管理机先生成秘钥,然后推送公钥给各个节点
    
    
    
    # 1.安装ansible
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
        
    yum install ansible -y
    
    
    # 2.克隆一台虚拟机模拟
    # 配置模拟机
    # 主机名
    hostnamectl set-hostname test
    
    # 更改网络地址
    # 要把UUID行删掉
    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    IPADDR=10.0.0.200
    
    # 更改地址以及对应主机名
    vim /etc/hosts
    10.0.0.200 standby
    
    # 重启网卡
    systemctl restart network
    
    
    
    # 3.生成密钥对,并分发
    # 生成一组密钥对
    ssh-keygen
    
    # 分配公钥给各节点
    # 分发给一个节点,要记得给自己分发
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.100
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.200
    
    # 循环分发多个节点
    for i in {1..12};do ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.$i;done
    
    
    # 测试是否联通10.0.0.200,如果显示时间,就说明联通了
    # 现在可以连接一台
    ssh 10.0.0.200 date
    
    
    
    # 4.为了同时控制多台,要配置被管理的主机清单
    vim /etc/ansible/hosts
    # [web]:IP组名,可以按组来控制
    [web]
    10.0.0.100
    10.0.0.200
    
    # 5.使用ansible的ad-hoc测试是否控制多台
    ansible all -m ping
    10.0.0.100 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    10.0.0.200 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    
    ansible all -m shell -a "df -h"
    10.0.0.100 | CHANGED | rc=0 >>
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        98G  3.4G   95G   4% /
    devtmpfs        477M     0  477M   0% /dev
    tmpfs           488M     0  488M   0% /dev/shm
    tmpfs           488M  7.7M  480M   2% /run
    tmpfs           488M     0  488M   0% /sys/fs/cgroup
    /dev/sda1       197M  102M   96M  52% /boot
    tmpfs            98M     0   98M   0% /run/user/0
    
    10.0.0.200 | CHANGED | rc=0 >>
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        98G  1.6G   97G   2% /
    devtmpfs        981M     0  981M   0% /dev
    tmpfs           992M  124K  992M   1% /dev/shm
    tmpfs           992M  9.6M  982M   1% /run
    tmpfs           992M     0  992M   0% /sys/fs/cgroup
    /dev/sda1       197M  102M   96M  52% /boot
    tmpfs           199M     0  199M   0% /run/user/0
    
    
    
    
    # 6.ansible playbook自动化安装nginx
    vim  playbook_nginx.yml 
    
    - hosts: web
      remote_user: root
      vars:
        http_port: 80
      tasks:
        # 第一步:配置YUM源
        - name: Add Nginx Yum Repository
          yum_repository:
            name: nginx
            description: Nginx Repository
            baseurl: http://nginx.org/packages/centos/7/$basearch/
            gpgcheck: no
    	
        # 第二步:下载nginx
        - name: Install Nginx Server
          yum: 
    	    name=nginx state=present
    	
        # 第三步:连接到配置文件并配置到各节点
        - name: Configure Nginx Server
          template: src=./default.conf.template dest=/etc/nginx/conf.d/default.conf
          notify: Restart Nginx Server
    	
        # 第四步:启动nginx服务
        - name: Start Nginx Server
          service: name=nginx state=started enabled=yes
    
      handlers:
        - name: Restart Nginx Server
          service: name=nginx state=
            
            
    # default.conf.template文件如下
    # 必须和上面的playbook_nginx.yml 在同一目录下
    vim default.conf.template 
    
    server {
        listen       {{ http_port }};
        server_name  localhost;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    }
    
    
    # 7.执行ansible-playbook
    # 检查语法
    ansible-playbook --syntax playbook_nginx.yml	 
    
    # 模拟执行
    ansible-playbook -C playbook_nginx.yml 
    
    # 模拟执行没有错误,正常执行
    ansible-playbook playbook_nginx.yml	 
    
    
    # 此时10.0.0.200:端口号就可以访问了
    
  • 相关阅读:
    使用ZeroMQ(clrzmq)实现异步通信
    WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(一)概要设计
    .net 数据缓存(二)之Redis部署
    .net 数据缓存(一)之介绍
    如果css足够强大了,你还会用编程的方式实现去实现css已有的功能吗?
    我想做一个合格的工程师
    当新手使用JS库遇到问题怎么办
    JS(JavaScript)脚本库的积累
    ASP.NET MVC 必备开发环境
    z-albert之开启博文之路
  • 原文地址:https://www.cnblogs.com/xvchengqi/p/10241178.html
Copyright © 2011-2022 走看看