依赖项安装
yum -y install gcc gcc-c++ openssl-devel
下载并解压安装 nodejs
cd /opt
wget –c http://nodejs.org/dist/v0.12.4/node-v0.12.4.tar.gz
tar zxvf node-v0.12.4.tar.gz
cd node-v0.12.4
./configure --prefix=/usr/local/nodejs
make && make install
注意此时会有错误输出信息:
./configure File "./configure", line 442
fpu = 'vfpv3' if armv7 else 'vfpv2'
^ SyntaxError: invalid syntax
这是因为Python当前版本 2.4.3 不够,需要升级Python
升级Python:
cd /opt
wget -c http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
tar jxvf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure
make && make install
正常情况下即使python2.7安装成功后,系统默认指向的python仍然是2.4.3版本,考虑到yum是基于python2.4.3才能正常工作,不敢轻易卸载。
解决方法:
建立软连接
mv /usr/bin/python /usr/bin/python.bak
ln -s /usr/local/bin/python2.7 /usr/bin/python
使yum配置指向特定版本python2.4
vi /usr/bin/yum
将第一行显示的#/usr/bin/python
修改为#/usr/bin/python2.4
保存修改:wq
继续上面的步骤重新安装NodeJS:
cd /opt/node-v0.12.4
./configure --prefix=/usr/local/nodejs
make && make install
注意,又有新的错误:
ImportError: No module named bz2
make[1]: *** [/opt/node-v0.12.4/out/Release/obj/gen/libraries.cc] 错误 1
make[1]: Leaving directory '/opt/node-v0.12.4/out'
make: *** [node] 错误 2
这个错误是由于python中没有装bz2的库导致的
继续安装bz2
yum install -y bzip2*
cd /opt/Python-2.7.2/Modules/zlib
./configure
make && make install
重新安装python
cd /opt/Python-2.7.2/
python2.7 setup.py install
继续上面的步骤重新安装NodeJS:
cd /opt/node-v0.12.4
./configure --prefix=/usr/local/nodejs
make && make install
这次应该可以安装成功了
配置NodeJS环境变量
vim /etc/profile
在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
一行的【上面】添加如下内容:
#set for nodejs
export NODE_HOME=/usr/local/nodejs
export PATH=$NODE_HOME/bin:$PATH
:wq
保存并退出,编译/etc/profile 使配置生效
source /etc/profile
输入测试:
node -v
得到版本号v0.12.4
在安装nginx前,需要确保系统安装了g++、gcc、openssl-devel、pcre-devel和zlib-devel 和libevent
yum install pcre-devel libevent openssl
yum -y install zlib zlib-devel pcre
下载、解压安装Nginx
wget -c http://nginx.org/download/nginx-1.8.0.tar.gz
tar –zxv –f nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure --prefix=/usr/local/nginx
make && make install
测试nginx
开启:
/usr/local/nginx/sbin/nginx
测试http访问
curl localhost
得到以下输出信息表示成功安装并开启nginx
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
</pre>
下载到/opt,并解压
cd /opt
wget –c https://github.com/Countly/countly-server/archive/master.zip
unzip countly-server-master.zip
mv ./countly-server-master ./countly
复制countly web配置文件,并修改配置
cd /opt/countly/frontend/express/
cp config.sample.js config.js
vi config.js
将mongodb
服务器地址host
修改为192.168.8.16
,保存并退出
:wq
复制api配置文件,并修改mongodb host
cd ../../api/
cp config.sample.js config.js
vi config.js
将mongodb
服务器地址host
修改为192.168.8.16
,保存并退出
:wq
复制 countly.config.js
cd /opt/countly/frontend/express/public/javascripts/countly/
cp countly.config.sample.js countly.config.js
此时如果执行node /opt/countly/api/api.js
node会报错误,没有time 组件,需要安装time
组件
使用淘宝提供的源进行安装
npm --registry http://registry.cnpmjs.org/ install time
这个时间比较长,会进行node-gyp rebuild
,安装完成后,就可以测试node /opt/countly/api/api.js
和 node /opt/countly/frontend/express/app.js
了
下载并安装supervisor
cd /opt && wget -c --no-check-certificate https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.1.tar.gz
tar zxvf supervisor-3.1.1.tar.gz
cd supervisor-3.1.1
python setup.py install
如果出现错误:
Traceback (most recent call last):
File "setup.py", line 32, in <module>
from setuptools import setup, find_packages
ImportError: No module named setuptools
下载安装python组件:setuptools17.0
unzip setuptools-17.0.zip
cd setuptools-17.0
python setup.py install
继续用python安装 supervisor
cd /opt/supervisor-3.1.1
python setup.py install
bash
vi /opt/countly/bin/config/supervisord.conf
%(here)s/../..
和%(here)s
替换为/opt/countly
,保存修改:wq
bash
echo_supervisord_conf > /etc/supervisord.conf
vi /etc/supervisord.conf
[include]
files = /opt/countly/bin/config/supervisord.conf
:wq
配置supervisor 自启动
vi /etc/init.d/supervisor
添加加入代码:
#!/bin/bash
# supervisor Startup script for the Countly HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Countly
# processname: supervisor
# pidfile: /var/run/supervisor.pid
# config: /etc/supervisord.conf
supervisordd=/usr/local/bin/supervisord
supervisor_config=/etc/supervisord.conf
supervisor_pid=/var/run/supervisor.pid
RETVAL=0
prog="supervisor"
# 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 $supervisordd ] || exit 0
# Start supervisor daemons functions.
start() {
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/nodejs/bin
if [ -e $supervisor_pid ];then
echo "supervisor already running...."
exit 1
fi
echo $"Starting $prog with conf:$supervisor_config"
daemon $supervisordd --configuration ${supervisor_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/supervisor
return $RETVAL
}
# Stop supervisor daemons functions.
stop() {
echo -n $"Stopping $prog: "
killproc $supervisordd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/supervisor /var/run/supervisor.pid
}
# reload supervisor service functions.
reload() {
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/nodejs/bin
echo -n $"Reloading $prog: "
#kill -HUP `cat ${supervisor_pid}`
killproc $supervisordd -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
保存修改 :wq
设置文件属性为可执行
chmod a+x /etc/init.d/supervisor
测试:
service supervisor start
可以看到:
Starting supervisor with conf:/etc/supervisord.conf
[确定]
bash
vi /etc/rc.local
bahs
/etc/init.d/supervisor start
:wq
添加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/sbin/nginx
nginx_config=/usr/local/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
保存并退出:wq
设置文件的访问权限(a+x
==> all user can execute 所有用户可执行)
chmod a+x /etc/init.d/nginx
添加到开机启动项中
vi /etc/rc.local
加入一行/etc/init.d/nginx start
保存并退出,下次重启会生效。
完成所有配置,重启服务器。
reboot
重新打开terminal输入:
curl localhost
得到:
Moved Temporarily. Redirecting to /login
过程中参考了这些文章
安装中文语言支持包
http://www.xshell.net/linux/GNOM.html
CentOS安装NodeJS
http://zhaohe162.blog.163.com/blog/static/38216797201402234212981/
给nodejs的npm更换源
http://blog.sina.com.cn/s/blog_77a8ce670101cdd3.html
升级CentOS5.6_X64 python2.4.3到2.7
http://hxl2009.blog.51cto.com/779549/1031310
python中没有装bz2的库
http://flyer2010.iteye.com/blog/1699946
配置环境变量
http://blog.csdn.net/zhaoweitco/article/details/12677089