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 安裝好後,默認會添加在環境變量中,能夠直接使用命令html

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時間模型epollpython

安裝啓動過程:

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虛擬主機 配置:mysql

nginx.conf:linux

 

 

C:\Windows\System32\drivers\etcnginx

相關文章
相關標籤/搜索