Linux之 nginx-redis-virtualenv-mysql

 

mysql

maraidb相关

1.yum安装好,启动
    安装:
    yum install mariadb-server mariadb
    启动mabiadb:
    systemctl start mariadb
    停止MariaDB:
    systemctl stop mariadb
    重启MariaDB:
    systemctl restart mariadb
    设置开机启动:
    systemctl enable mariadb 
2.初始化mysql
    确保mariadb服务器启动后,
    systemctl start mariadb
    执行命令初始化
    mysql_secure_installation
    届时会提示
    set root password?   y
    New password:输入要为root管理员设置的数据库密码
    Re-enter new password: 再次输入密码
    
    Remove anonymous users?  y   (删除匿名账户)
    
    Disallow root login remotely? n (禁止root管理员从远程登录)
    
    Remove test database and access to it ? y(删除test 数据库并取消对它的访问权限)
    
    Reload privilege tables now? y (刷新授权表,让初始化后的设定立即生效)
    
3.修改mysql密码
    MariaDB [(none)]>set password = PASSWORD('redhat123');
    
    
4.创建mysql用户oldboy,查看oldboy用户信息

    oldboy@'%'    代表oldboy用户可以在所有机器上远程登录
    oldboy@'127.0.0.1'
        mysql -uoldboy -p -h 127.0.0.1
    oldboy@'localhost'
        mysql -uoldboy -p -h localhost
        
        

    创建用户:
    MariaDB [(none)]>create user yuchao@'127.0.0.1' identified by 'redhat123';
    查看oldboy用户信息:
    mysql -uyuchao -p -h 127.0.0.1      #进入数据库
    MariaDB [(none)]> show databases;
    
    
5.使用oldboy登录mysql
    mysql -uoldboy -p
    
    
6.备份数据库,然后测试数据库删除后,恢复导入数据库
    第一种备份方法:
        mysqldump -u root -p --all-databases > /tmp/all_db.dump   #备份数据库数据
        进入mariadb数据库,删除一个db:
        mysql -uroot -p
        MariaDB [(none)]>drop databases s13;
        数据恢复:
        mysql -uroot -p < /tmp/all_db.dump
        
    导入sql 文件的用法,
    1.新建一个db 
        create database s13crm;
        use s13crm;
        source /tmp/all_db.sql;
        show tables;

 

virtualenv

首先它是python的一个模块,因此可以通过pip3 安装好后,默认会添加在环境变量中,可以直接使用命令

1.pip安装好virtualenv
    安装
    pip3 install virtualenv
    创建目录
    mkdir Myproject
    cd Myproject
    创建基于python3的虚拟环境 名字叫做 my_venv_django1.11.15
    第一个虚拟环境:
    virtualenv --no-site-pacjages --python=python3 venv1      # 安装成python3的解释器, 默认是python2解释器
    第二个虚拟环境:
    virtualenv --no-site-pacjages --python=python3 venv2        
    
    
    
2.激活virtualenv
    激活第一个虚拟环境:
    source venv1/bin/cativate
    激活第二个虚拟环境:
    source venv2/bin/activate
    
    退出虚拟环境
    deactivate

    
3.查看环境变量的区别
    echo %PATH 查看在path的顶端是否是venv的bin目录
    
    
4.创建两个虚拟环境,分别安装django1.11.15,django2 ,然后用两个虚拟环境分别启动django项目
    1.分别在虚拟环境下创建django项目
    (venv1)[root@s13linux /home/all_venv 22:15:02]#django-admin startproject 项目名
    2.第二个虚拟环境创建django项目
    (venv2)[root@s13linux /home/all_venv 22:15:02]#django-admin startproject 项目名
        [
django-admin startapp app01 #这是创建app01]
3.分别修改django的settings.py文件,允许所有主机的访问
        ALLOWED_HOSTS = ['*']
    4.分别启动django
    python3 manage.py runserver 0.0.0.0:8000
    
    python3 manage.py runserver 0.0.0.0:9000

 

redis

1.编译安装redis,用redis.conf启动
    1.下载redis源码
        第一种方法:
            查看是否有 redis包
            yum list redis 
            安装redis
            yum install redis -y 
            安装好后启动redis
            systemctl start redis
            检测redis是否工作
            redis-cli  #redis 客户端工具
            #进入交互环境后,执行ping,返回pong表示安装成功
            127.0.0.1:6379>ping
            PONG
        第二种源码安装:
            1 下载redis源码
             wget http://download.redis.io/releases/redis-4.0.10.tar.gz
             2 解压缩
             tar -zxf redis-4.0.10.tar.gz
             3 切换至redis源码目录
             cd redis-4.0.10.tar.gz
             4 编译
             make 
             5 编译好后,src/目录下有编译好的redis指令
             make install 安装到指定目录 默认在/usr/local/bin
             6 redis-server redis.conf  启动redis服务
             对于redis.conf  配置文件
                修改redis端口
                    port 6380
                增加redis登录密码
                    requirepass redis123
                增加后台运行功能
                    daemonize yes
             此时查看redis进程
                ps -ef|grep redis
            
            redis多实例的概念
                redis支持一台服务运行多个redis数据库,也就是多个redis实例
                1.先启动第一个redis实例
                准备好两个redis.conf配置文件,并且复制重命名为
                redis-6379.conf  (注意去修改端口6379)
                redus-6380.conf
                redis-server redis-6379.conf
                redis-server redis-6380.conf
                
                检查redis进程
                ps -ef|grep redis 
                    [root@s13linux /opt/redis-4.0.10 21:28:52]$ps -ef|grep redis
                    root       2071      1  0 21:27 ?        00:00:00 redis-server 0.0.0.0:6379
                    root       2076      1  0 21:27 ?        00:00:00 redis-server 0.0.0.0:6380
            
              7 登录redis
                ./redis-cli
             
             启动redis服务端
             启动redis非常简单,直接./redis-server就可以启动服务端了,还可以用下面的方法指定要加载的配置文件:
                ./redis-server ../redis.conf
                默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。
             
        
    
2.配置redis.conf,设置后台运行redis,redis登录密码,更改redis启动端口   (安全)
    protected-mode yes   #打开保护模式
    port 6380  #更改默认启动端口
    requirepass xxxxxx   #设置redis启动密码,xxxx是自定义的密码
    
    启动redis服务器
    redis-server /opt/redis-4.0.10/redis.conf &     #指定配置文件启动redis,且后台启动
    
    
    
    
3.登录redis,验证密码
    使用密码登录redis,使用6380端口
    [root@oldboy_python ~ 09:48:41]#redis-cli -p 6380
    127.0.0.1:6380> auth xxxx
    OK
    
    补充:
    检查redis是否设置了密码
    127.0.0.1:6380> CONFIG get requirepass
    1) "requirepass"
    2) "xxxxxx"
    
    如果没有的话,也可以给redis设置密码(命令方式)
    CONFIG set requirepass "xxxxxx"
    
    
4.练习redis数据操作
        strings类型:
        
            set name "chaoge66" //设置name
            get name    //读取name

            strings类型支持数值操作
            set age "17" //设置key age
            get age        //读取age
            incr age      //数值+1,遇见数值操作时,redis会将字符串类型转成数值
            get age        //此时age是18,value仍然是字符串
            type age    //查看键的类型
            
        list类型:
            redis的另外一个数据结构叫做lists,中文叫列表
            lists常用操作包括
            LPUSH   在lists左侧插入一个新元素 
            RPUSH   在lists右侧插入一个新元素
            LRANGE  在lists指定范围提取元素
            LPOP    左侧删除
            RPOP  右侧删除

            示例:
            lpush mylist "1" //新建一个mylist,在头部插入元素"1"
            (integer) 1    //返回mylist元素个数

            rpush mylist "2"  //在mylist右侧插入元素"2"

            (INTEGER) 2    //返回mylist元素个数

            127.0.0.1:6379> lpush mylist "0"  //在mylist左侧插入元素"0"

            (integer) 3    //返回mylist元素个数

            //列出mylist中从编号0到编号1的元素

            127.0.0.1:6379> lrange mylist 0 -1 
            1) "0"
            2) "1"
            3) "2"

            lists类型常用在,消息队列、实现分页功能、存储文章评论
            
            
        sets类型:
            redis的集合,是一种无序的集合,集合中的元素没有先后顺序。
                        
            //向集合myset中加入一个新元素"one"
            127.0.0.1:6379> sadd myset "one" 
            (integer) 1
            127.0.0.1:6379> sadd myset "two"
            (integer) 1
            //列出集合myset中的所有元素
            127.0.0.1:6379> smembers myset 
            1) "one"
            2) "two"
            //判断元素1是否在集合myset中,返回1表示存在
            127.0.0.1:6379> sismember myset "one" 
            (integer) 1
            //判断元素3是否在集合myset中,返回0表示不存在
            127.0.0.1:6379> sismember myset "three" 
            (integer) 0
            //新建一个新的集合yourset
            127.0.0.1:6379> sadd yourset "1" 
            (integer) 1
            127.0.0.1:6379> sadd yourset "2"
            (integer) 1
            127.0.0.1:6379> smembers yourset
            1) "1"
            2) "2"
            //对两个集合求并集
            127.0.0.1:6379> sunion myset yourset 
            1) "1"
            2) "one"
            3) "2"
            4) "two"

            集合的使用比如QQ社交功能中的“好友标签”,朋友给你的好友标签“sb”,“dsb”等等,就可以吧每一个用户的标签存储在集合里
        
        
        zsets类型:
            redis不但提供了无需集合(sets),还很体贴的提供了有序集合(sorted sets)。
            有序集合中的每个元素都关联一个序号(score),这便是排序的依据。
            
            127.0.0.1:6379> zadd myzset 1 baidu.com 
            (integer) 1
            //向myzset中新增一个元素360.com,赋予它的序号是3
            127.0.0.1:6379> zadd myzset 3 360.com 
            (integer) 1
            //向myzset中新增一个元素google.com,赋予它的序号是2
            127.0.0.1:6379> zadd myzset 2 google.com 
            (integer) 1
            //列出myzset的所有元素,同时列出其序号,可以看出myzset已经是有序的了。
            127.0.0.1:6379> zrange myzset 0 -1 with scores 
            1) "baidu.com"
            2) "1"
            3) "google.com"
            4) "2"
            5) "360.com"
            6) "3"
            //只列出myzset的元素
            127.0.0.1:6379> zrange myzset 0 -1 
            1) "baidu.com"
            2) "google.com"
            3) "360.com"
    
redis缓存和mysql关系型数据库的区别,应用场景?

1.咱们以取快递,快递公司和站点

mysql  >  快递总公司  


把快递总公司的部分物件,提前放到驿站

redis  >  快递驿站  把一些数据,提前放到redis缓存中,加速查找,

 

nginx

面试回答 nginx技巧:

支持高并发,能支持几万并发连接
资源消耗少,在3万并发连接下开启10个nginx线程消耗的内存不到200M
可以做http反向代理和负载均衡
支持异步网络i/o时间模型epoll

安装启动过程:

1.编译安装nginx,启动
    1,下载源码包:
    wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
    2,解压压缩源:
    tar -zxvf nginx-1.12.0.tar.gz
    3,配置,编译安装:
    ./configure --prefix=/opt/nginx1-12/ --with-http_ssl_module --with-http_stub_status_module 
    
    make && make install 
    4,启动nginx,进入sbin目录,找到nginx启动命令
    cd sbin
    ./nginx #启动
    ./nginx -s stop  #关闭
    ./nginx -s reload #重新加载
    
    
    
    
2.部署一个自己的web站点,例如pythonav.cn/xiaobo.gif,可以用本地hosts文件测试域名
    1.部署一个    my_taobao.com   网站
            先在本地搞一个测试域名,就是编辑 hosts哪个文件
            hosts文件在C:\Windows\System32\drivers\etc\hosts 
                    10.0.0.10    mytb.com
                    
        然后在nginx.conf里面修改配置,如下
            server {
                listen       80;
                server_name  mytb.com;
            

                    
        2.首先打开nginx访问日志功能,用于记录网站访问日志,防止一些二货搞你的网站
        编辑nginx.conf 打开以下注释
            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;
        3.网站文件根路径配置
        
             location / {
                root   html;
                index  index.html index.htm;
            }
        4.拒绝访问一个功能
                     location / {
                root   html;
                index  index.html index.htm;
                deny    你要拒绝的ip;
            }
        5.错误页面的配置
        这个40x.html是放在 html文件夹下的 /opt/nginx112/html/网站根路径
            error_page  404            /40x.html;
        
        6.配置文件设置好了之后,检测你的nginx.conf语法是否正确
        使用-t参数检测语法是否正确
            [root@s13linux /opt/nginx112 22:31:08]$./sbin/nginx -t
            nginx: the configuration file /opt/nginx112//conf/nginx.conf syntax is ok
            nginx: configuration file /opt/nginx112//conf/nginx.conf test is successful

        
        7.还得启动nginx,修了nginx.conf需要重新启动或者热加载
        
            sbin/nginx  直接敲命令是启动
            sbin/nginx -t  检测语法
            sbin/nginx -s reload  热加载
            sbin/nginx -s stop    关闭nginx
    
3.打开access_log功能,测试访问 tail -f access.log   (在配置文件里面解掉access_log的注释)
    对应参数解析

    $remote_addr    记录客户端ip
    $remote_user    远程用户,没有就是 “-”
    $time_local    对应[14/Aug/2018:18:46:52 +0800]
    $request     对应请求信息"GET /favicon.ico HTTP/1.1"
    $status      状态码
    $body_bytes_sent  571字节 请求体的大小
    $http_referer  对应“-”  由于是直接输入浏览器就是 -
    $http_user_agent  客户端身份信息
    $http_x_forwarded_for  记录客户端的来源真实ip 97.64.34.118
    
4.nginx限制一个网站访问,用deny参数
    限制ip或ip段访问
    location / {
    deny 192.168.1.1;
    deny 192.168.1.0/24;
    allow 10.1.1.0/16;  
    }
5.nginx错误页面优化
    server {
        listen       80;
        server_name  www.pythonav.cn;
        root html/pythonav;
        location /{
            index  index.html index.htm;
        }
      #在pythonav路径下的40x.html错误页面
        error_page 400 403 404 405 /40x.html;
        }
        
    40x.html :
    <img style='width:100%;height:100%;' 
    src=https://pic1.zhimg.com/80/v2-77a9281a2bebc7a2ea5e02577af266a8_hd.png>

多名nginx虚拟主机 配置:

nginx.conf:

 

 

C:\Windows\System32\drivers\etc

 

 

 

 

 

posted @ 2018-10-19 16:12  九月江  阅读(236)  评论(0编辑  收藏  举报