一、系统准备
1.安装好httpd
2.安装node.js 包括(node npm express)
3.安装redis http://redis.io/download
4.下载daily report安装包 http://www.open-open.com/lib/view/open1374583955746.html
yum install epel-release |
yum install node* |
yum install npm* |
[root@centos ~]# node -v
v0.10.36
[root@centos ~]# npm -v
1.3.6
[root@centos ~]#
此时说明node和npm安装成功。
tar -zxvf redis-2.8.22.tar.gz cd redis-2.8.22
|
make 完成之后
在同级目录的src中会出现三个文件
redis-benchmark redis-cli redis-server
cp redis-cli redis-server redis-benchmark /usr/bin
|
这样是为了随时可以使用该命令,方便而已。。。
cp ./redis.conf /etc/
如果没有进行任何配置会出现如下错误:
[4625] 19 Oct 11:48:20.939 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
[4625] 19 Oct 11:48:20.939 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
[4625] 19 Oct 11:48:20.940 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
[4625] 19 Oct 11:48:20.940 * The server is now ready to accept connections on port 6379
第一个警告。
vim /etc/sysctl.conf 在最后一行添加:
vm.overcommit_memory=1
保存退出。
刷新配置使其生效
sysctl vm.overcommit_memory=1
第二个警告.
执行:echo never > /sys/kernel/mm/transparent_hugepage/enabled
第三个警告:
Echo 511 >/proc/sys/net/core/somaxconn
redis-server /etc/redis.conf
[4713] 19 Oct 12:22:04.895 # Server started, Redis version 2.8.22
[4713] 19 Oct 12:22:04.895 * DB loaded from disk: 0.000 seconds
[4713] 19 Oct 12:22:04.896 * The server is now ready to accept connections on port 6379
[root@centos ~]# ps -eaf |grep redis
root 4713 1576 0 12:22 pts/0 00:00:00 redis-server *:6379
root 4742 4720 0 12:22 pts/1 00:00:00 grep redis
[root@centos ~]# netstat -an |grep :6379
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN
tcp 0 0 :::6379 :::* LISTEN
redis-cli
redis 127.0.0.1:6379> incr next_user_id
(integer) 1
执行完该命令后表明 next_user_id 的值为1,然后执行如下命令(1:user_name和1:password中的1即为上一步执行incr next_user_id后的 next_user_id的值)
redis 127.0.0.1:6379> hmset users 1:user_name admin 1:password 1234567
OK
执行下面的命令将管理员adminn的id添加到管理员集合中
redis 127.0.0.1:6379> sadd admin 1
(integer) 1
unzip WalterShe-dailyReport-e3fcff6.zip
cd WalterShe-dailyReport-e3fcff6
cp -R * /var/www/html/
将所有的文件与目录拷贝到网站的根目录中。
cd /var/www/htnl
npm install
到此安装成功!
在config.conf
最后的port处可以定义
如果没有配置会出现以下情况:
body-parser deprecated bodyParser: use individual json/urlencoded middlewares app.js:29:31
body-parser deprecated undefined extended: provide extended option node_modules/body-parser/index.js:85:29
express-session deprecated undefined resave option; provide resave option app.js:32:9
express-session deprecated undefined saveUninitialized option; provide saveUninitialized option app.js:32:9
Express server listening on port 3000
需要添加一下:
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false })) ;
该行注释掉:app.use(require('body-parser')());
[root@centos html]# node app.js
express-session deprecated undefined resave option; provide resave option app.js:34:9
express-session deprecated undefined saveUninitialized option; provide saveUninitialized option app.js:34:9
Express server listening on port 3000
上面的警告需要修改:
该行注释掉:app.use(session({ store: new redisStore({host:sessiondbconfig.host, port:sessiondbconfig.port, pass:sessiondbconfig.pass, db:sessiondbconfig.db, prefix:'sess', ttl:3600}), secret: 'iamwaltershe' }));
在注释行下添加:
app.use(session({secret: '<mysecret>',
saveUninitialized: true,
resave: true}));
[root@centos ~]# node /var/www/html/app.js
Express server listening on port 8888
到此说明report系统部署完毕。。
可以通过访问:http://ip:8888
默认用户:admin 密码:1234567
5 启动脚本
vim /etc/init.d/daily
#!/bin/bash # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network #chkconfig:345 61 61 #description:daily RETVAL=0 start() { service httpd start 1>/dev/null 2>&1 #!/bin/bash # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network #chkconfig:345 61 61 #description:daily RETVAL=0 start() { service httpd start 1>/dev/null 2>&1 iptables -F node /var/www/html/app.js >>/root/report.log & redis-server /etc/redis.conf & echo "The daily system is running..." } stop() { service httpd stop 1>/dev/null 2>&1 ps -eaf |grep app.js|head -n 1 >/root/soft/daily.id dailyid=`awk '{print $2}' /root/soft/daily.id` kill -9 $dailyid echo "the app.js process is killed" redisid=`ps -eaf|grep redis|head -n 1|awk -F " " '{print $2}'` kill -9 $redisid echo "redis server process is killed" } case $1 in start) start ;; stop) stop ;; restart) stop start ;; *) echo "please input start or stop,restart";; esac exit $RETVAL
chkconfig --add daily
chkconfig --level 2345 daily on
service daily start 可以启动服务了。
6.监控脚本
vim /root/monitor.sh
#!/bin/bash #监控进程宕掉。自动启动服务。 proc_name="app.js" proc_name1="redis-server" proc_num() # 计算进程数 { num=`ps -ef | grep $proc_name | grep -v grep | wc -l` return $num } proc_num1() { num=`ps -eaf| grep $proc_name1 |grep -v grep|wc -l` return $num } proc_num1 number1=$? proc_num number=$? if [ $number -eq 0 ] || [ $number1 -eq 0 ] then /sbin/service daily restart fi
需要添加到crontab任务中去。
crontab -e
1/* * * * * bash /root/monitor.sh 1>/dev/null 2>&1
转载于:https://blog.51cto.com/linuxbo/1704205