美文网首页
waf--environment

waf--environment

作者: amazing_bing | 来源:发表于2017-01-27 22:29 被阅读0次
    tengine & waf:

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    cd /etc/yum.repos.d/
    wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
    mv  CentOS6-Base-163.repo CentOS-Base.repo
    yum makecache
    yum -y update
    
    
    cd /etc/pki/rpm-gpg/ 
    wget http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6 
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 
    cd ~
    yum install -y readline-devel pcre-devel openssl-devel
    yum install -y gcc
    
    unzip ngx.zip
    cd ngx
    chmod -R +x *
    yum install pcre-devel
    yum install zlib zlib-devel
    yum install openssl openssl-devel
    ./configure --prefix=/usr/local/nginx --with-luajit --with-http_stub_status_module --with-pcre --with-pcre-jit --without-http_redis2_module --with-http_iconv_module
    gmake && gmake install
    ln -s /usr/local/nginx/ /usr/local/nginx
    

    测试openresty安装

    # vim /usr/local/nginx/nginx/conf/nginx.conf
    server {
        location /hello {
                default_type text/html;
                content_by_lua_block {
                    ngx.say("HelloWorld")
                }
            }
    }
    
    # /usr/local/nginx/nginx/sbin/nginx -t
    nginx: the configuration file /usr/local/nginx/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/nginx/conf/nginx.conf test is successful
    # /usr/local/nginx/nginx/sbin/nginx
    Hello World
    # curl http://127.0.0.1/hello
    HelloWorld
    

    waf 部署测试:
    上传lua编写的waf到conf目录

    #cp -a ./waf/waf /usr/local/nginx/nginx/conf/
    

    修改Nginx的配置文件,加入以下配置。注意路径,同时WAF日志默认存放在/tmp/日期_waf.log

    在nginx.conf的http段添加
        lua_shared_dict limit 50m;
        lua_package_path "/usr/local/nginx/nginx/conf/waf/?.lua";
        init_by_lua_file "/usr/local/nginx/nginx/conf/waf/init.lua";
        access_by_lua_file "/usr/local/nginx/nginx/conf/waf/access.lua";
    

    配置nginx支持php

    # vim /usr/local/nginx/nginx/conf/nginx.conf
                '''
                修改nginx运行账号为:nginx组的nginx用户----这段是注释
                user nginx nginx;
                '''
    vi /etc/nginx/conf.d/default.conf
    #增加index.php
    index index.php index.html index.htm;
    取消FastCGI server部分location的注释,并要注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径
    
    # /usr/local/nginx/nginx/sbin/nginx -t
    # /usr/local/nginx/nginx/sbin/nginx
    
    yum -y install zlib zlib-devel
    yum install -y php php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt libmcrypt-devel php-fpm
    
    #启动php-fpm
    /etc/rc.d/init.d/php-fpm start
    设置自动启动
    chkconfig php-fpm on
    
    在/usr/local/nginx/nginx/html目录编写:
    vim index.php
    <?php 
    phpinfo();
    ?>
    
    #/usr/local/nginx/nginx/sbin/nginx -s reload
    

    测试访问:http://waf.com/index.php?id=../../../../etc/passwd

    提示有网站防火墙,则成功!

    设置nginx开机启动:
    vi /etc/init.d/nginx (输入下面的代码)

    #!/bin/bash
    # nginx Startup script for the Nginx HTTP Server
    # it is v.0.0.2 version.
    # chkconfig: - 85 15
    # description: Nginx is a high-performance web and proxy server.
    #              It has a lot of features, but it's not for everyone.
    # processname: nginx
    # pidfile: /var/run/nginx.pid
    # config: /usr/local/nginx/conf/nginx.conf
    nginxd=/usr/local/nginx/nginx/sbin/nginx
    nginx_config=/usr/local/nginx/nginx/conf/nginx.conf
    nginx_pid=/var/run/nginx.pid
    RETVAL=0
    prog="nginx"
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Source networking configuration.
    . /etc/sysconfig/network
    # Check that networking is up.
    [ ${NETWORKING} = "no" ] && exit 0
    [ -x $nginxd ] || exit 0
    # Start nginx daemons functions.
    start() {
    if [ -e $nginx_pid ];then
       echo "nginx already running...."
       exit 1
    fi
       echo -n $"Starting $prog: "
       daemon $nginxd -c ${nginx_config}
       RETVAL=$?
       echo
       [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
       return $RETVAL
    }
    # Stop nginx daemons functions.
    stop() {
            echo -n $"Stopping $prog: "
            killproc $nginxd
            RETVAL=$?
            echo
            [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid
    }
    # reload nginx service functions.
    reload() {
        echo -n $"Reloading $prog: "
        #kill -HUP `cat ${nginx_pid}`
        killproc $nginxd -HUP
        RETVAL=$?
        echo
    }
    # See how we were called.
    case "$1" in
    start)
            start
            ;;
    stop)
            stop
            ;;
    reload)
            reload
            ;;
    restart)
            stop
            start
            ;;
    status)
            status $prog
            RETVAL=$?
            ;;
    *)
            echo $"Usage: $prog {start|stop|restart|reload|status|help}"
            exit 1
    esac
    exit $RETVAL
    
    

    chmod a+x /etc/init.d/nginx (a+x ==> all user can execute 所有用户可执行)

    vi /etc/rc.local
    加入一行 /etc/init.d/nginx start 保存并退出,下次重启会生效。

    安装java+kafka:

    下载java1.7,然后解压
    tar zxvf jdk-7u25-linux-x64.tar.gz
    mv jdk1.7.0_25 /usr/local/java
    vim /etc/profile
        export JAVA_HOME=/usr/local/java/
        export JRE_HOME=$JAVA_HOME/jre/
        export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
        export PATH=$JAVA_HOME/bin:$PATH
    
    source /etc/profile
    java --version
    
    wget https://github.com/doujiang24/lua-resty-kafka/archive/master.zip
    unzip master.zip
    
    
    
    wget http://archive.apache.org/dist/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz
    
    注意,kafka_2.11-0.8.2.1.tgz版本是已经编译好的版本,解压就能使用。
    
    tar -xzvf kafka_2.11-0.8.2.1.tgz #解压
    
    mv kafka_2.11-0.8.2.1 /usr/local/kafka #移动到安装目录
    
    2、配置kafka
    
    mkdir /usr/local/kafka/log/kafka #创建kafka日志目录
    
    cd /usr/local/kafka/config #进入配置目录
    
    vi server.properties #编辑修改相应的参数
    
    broker.id=0
    
    port=9092 #端口号
    
    host.name=192.168.0.11 #服务器IP地址,修改为自己的服务器IP
    
    log.dirs=/usr/local/kafka/log/kafka #日志存放路径,上面创建的目录
    
    zookeeper.connect=localhost:2181 #zookeeper地址和端口,单机配置部署,localhost:2181
    
    :wq! #保存退出
    
    3、配置zookeeper
    
    mkdir /usr/local/kafka/zookeeper #创建zookeeper目录
    
    mkdir /usr/local/kafka/log/zookeeper #创建zookeeper日志目录
    
    cd /usr/local/kafka/config #进入配置目录
    
    vi zookeeper.properties #编辑修改相应的参数
    
    dataDir=/usr/local/kafka/zookeeper #zookeeper数据目录
    
    dataLogDir=/usr/local/kafka/log/zookeeper #zookeeper日志目录
    
    clientPort=2181
    
    maxClientCnxns=100
    
    tickTime=2000
    
    initLimit=10
    
    syncLimit=5
    
    :wq! #保存退出
    
    四、创建启动、关闭kafka脚本
    
    cd /usr/local/kafka
    
    #创建启动脚本
    vi kafkastart.sh #编辑,添加以下代码
    
    #!/bin/sh
    
    #启动zookeeper
    
    /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties &
    
    sleep 3 #等3秒后执行
    
    #启动kafka
    
    /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &
    
    :wq! #保存退出
    
    #创建关闭脚本
    
    
    vi kafkastop.sh #编辑,添加以下代码
    
    #!/bin/sh
    
    #关闭zookeeper
    
    /usr/local/kafka/bin/zookeeper-server-stop.sh /usr/local/kafka/config/zookeeper.properties &
    
    sleep 3 #等3秒后执行
    
    #关闭kafka
    
    /usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server.properties &
    
    :wq! #保存退出
    
    #添加脚本执行权限
    
    chmod +x kafkastart.sh
    
    chmod +x kafkastop.sh
    
    五、设置脚本开机自动执行
    
    vi /etc/rc.d/rc.local #编辑,在最后添加一行
    
    sh /usr/local/kafka/kafkastart.sh & #设置开机自动在后台运行脚本
    
    :wq! #保存退出
    
    sh /usr/local/kafka/kafkastart.sh #启动kafka
    
    sh /usr/local/kafka/kafkastop.sh #关闭kafka
    
    至此,Linux下Kafka单机安装配置完成。
    

    扩展阅读:

    Kafka创建topic

    /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
    

    最简单的使用方式是从Github上下载一个最新的KafkaOffsetMonitor-assembly-0.2.1.jar,上传到某服务器上,然后执行一句命令就可以运行起来。

    java -cp KafkaOffsetMonitor-assembly-0.2.0.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --zk m000:2181,m001:2181,m002:2181 --port 8088 --refresh 10.seconds --retain 2.days
    

    在消费kafka的时候需要配置hosts信息主机名对应本地ip的映射,如下:

    192.168.1.192   Bingscan
    

    这样的话,在执行kafka消费的时候才不会报错:

    sh /usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper 192.168.1.192:2181 --topic waf_logger --from-beginning
    

    安装mysql

    第1步、yum安装mysql
    [root@stonex ~]#  yum -y install mysql-server
    安装结果:
    Installed:
        mysql-server.x86_64 0:5.1.73-3.el6_5                                                                                                                                                         
    Dependency Installed:
        mysql.x86_64 0:5.1.73-3.el6_5                                perl-DBD-MySQL.x86_64 0:4.013-3.el6                                perl-DBI.x86_64 0:1.609-4.el6
    
    第2步、设置开机启动
    [root@stonex ~]#  chkconfig mysqld on
    
    第3步、启动MySql服务
    [root@stonex ~]#  service mysqld start
    
    第4步、设置MySQL的root用户设置密码
    [root@stonex ~]#  mysql -u root
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    ...... 省略了一些行
    mysql> select user,host,password from mysql.user;
    查询用户的密码,都为空,用下面的命令设置root的密码为root
    mysql> set password for root@localhost=password('root');
    mysql> exit
    
    第5步、用新密码登陆
    [root@stonex ~]#  mysql -u root -p
    
    第6步、基本命令
    show databases; //查看系统已存在的数据库
    use databasesname;   //选择需要使用的数据库
    drop database databasename; //删除选定的数据库
    exit    //退出数据库的连接
    create database test01;    //建立名为test的数据库
    show tables;        // 列出当前数据库下的表
    其他基本的增删改查使用标准SQL即可
    
    第7步、开放远程登录权限
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

    关于lua+nginx全局变量和共享内存的区别;
    共享内存:是在nginx上启动时加载开辟的内存空间,用于数据交换存储,动态,可以自由增加删除,并且在所有worker间共享;
    全局变量:仅限在lua内部的机制,在Lua VM中开辟的全局变量,仅限在lua层使用,不会共享到worker中;
    +++++++
    先知道:nginx在启动后,在unix系统中会以daemon的方式在后台运行,后台进程包含一个master进程和多个worker进程。
    +++++++
    关于优先级:结论是,在实际的情况下,共享内存shared会先于全局变量创建,并且覆盖到所有的worker里面,也就是在每次reload的时候,先以daemon启动后,在创建master和worker的同时就创建了shared,然后才到lua的vm创建,最后才出现全局变量。理论上优先级共享缓存比lua全局变量要优先。
    关于性能问题:结论是,在实际情况下,nginx的共享内存shared会更快些,因为直接转成buffer,在请求的生命周期里面,会优先访问shared再到lua,访问lua的时候还得过一道VM(lua的虚拟机)。
    ++++++++++++

    相关文章

      网友评论

          本文标题:waf--environment

          本文链接:https://www.haomeiwen.com/subject/zjtqittx.html