waf--environment

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的虛擬機)。
++++++++++++

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容