CentOS 5.5 下安装Countly Web Server过程记录

1. 系统更新与中文语言包安装

2. 基本环境配置:

2.1. NodeJS安装

  1. 依赖项安装

    yum -y install gcc gcc-c++ openssl-devel
  2. 下载并解压安装 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

  3. 升级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

  4. 继续上面的步骤重新安装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的库导致的

  5. 继续安装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
  6. 继续上面的步骤重新安装NodeJS:

    cd /opt/node-v0.12.4
    ./configure --prefix=/usr/local/nodejs
    make && make install

    这次应该可以安装成功了

  7. 配置NodeJS环境变量

    • 进入profile编辑环境变量
      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

2.2 Ngnix安装

  1. 在安装nginx前,需要确保系统安装了g++、gcc、openssl-devel、pcre-devel和zlib-devel 和libevent

    yum install pcre-devel  libevent  openssl
    yum -y install zlib zlib-devel  pcre
  2. 下载、解压安装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
  3. 测试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>

3. 安装Countly Web Server

  1. 下载到/opt,并解压

    cd /opt
    wget –c https://github.com/Countly/countly-server/archive/master.zip
    unzip countly-server-master.zip
    mv ./countly-server-master ./countly
  2. 复制countly web配置文件,并修改配置

    cd /opt/countly/frontend/express/
    cp config.sample.js  config.js
    vi config.js

    mongodb服务器地址host修改为192.168.8.16,保存并退出
    :wq

  3. 复制api配置文件,并修改mongodb host

    cd ../../api/
    cp config.sample.js  config.js
    vi config.js

    mongodb服务器地址host修改为192.168.8.16,保存并退出
    :wq

  4. 复制 countly.config.js

    cd /opt/countly/frontend/express/public/javascripts/countly/
    cp countly.config.sample.js  countly.config.js
  5. 此时如果执行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.jsnode /opt/countly/frontend/express/app.js

4. 配置服务自启动

4.1 安装supervisor 进程管理,设置自启动

  1. 下载并安装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
  2. 下载安装python组件:setuptools17.0

    unzip setuptools-17.0.zip
    cd setuptools-17.0
    python setup.py install
  3. 继续用python安装 supervisor

    cd /opt/supervisor-3.1.1
    python setup.py install
  4. 编辑countly-supervisor.conf
    vi /opt/countly/bin/config/supervisord.conf

    %(here)s/../..%(here)s 替换为/opt/countly,保存修改:wq

  5. 配置supervisor文件
    echo_supervisord_conf > /etc/supervisord.conf
    vi /etc/supervisord.conf

    将最后两行取消注释,改为:

    [include]
    files = /opt/countly/bin/config/supervisord.conf

    保存 :wq

  6. 配置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
     
                                                              [确定]
  7. 添加到开机启动项中:
    vi /etc/rc.local

    加入:

    /etc/init.d/supervisor start

    保存 :wq

4.2 配置Nginx自启动

  1. 添加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
  2. 添加到开机启动项中

    vi /etc/rc.local

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

  3. 完成所有配置,重启服务器。

    reboot
  4. 重新打开terminal输入:

    curl localhost

    得到:

    Moved Temporarily. Redirecting to /login

5. 说明

过程中参考了这些文章
安装中文语言支持包
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

CentOS 5.5 下安装Countly Web Server过程记录的更多相关文章

  1. Centos 7.0 下安装 Zabbix server 3.0服务器的安装及 监控主机的加入(1)

    一.本系列分为6部分 1.Centos 7.0 下安装 Zabbix server 3.0服务器的安装及 监控主机的加入 2.Centos 6.5 下安装 Zabbix server 3.0服务器的安 ...

  2. Centos 7.3下 Linux For SQL Server安装及配置介绍

    Centos 7.3下 Linux For SQL Server安装及配置介绍 高文龙关注13人评论2828人阅读2017-03-05 21:46:21 Centos 7.3下Linux For SQ ...

  3. CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4

    最新更新参看: Centos 7.0 安装Mono 3.4 和 Jexus 5.6 2012年初写过一篇<32和64位的CentOS 6.0下 安装 Mono 2.10.8 和Jexus 5.0 ...

  4. yum安装Apache Web Server后各个文件存放位置

    yum安装Apache Web Server后各个文件存放位置   用yum安装apache软件: yum -y install httpd 安装完成后,来查看理解yum安装软件的过程和安装路径.   ...

  5. centos 6.5下安装mysql+nginx+redmine 3.1.0 笔记

    centos 6.5下安装mysql+nginx+redmine 3.1.0 笔记 目录[-] 过程 1.安装RVM 2.利用rvm安装 Ruby 1.9.3 并设为默认 3.安装rails 4.安装 ...

  6. linux/win7下安装websphere application server

    说明: 1.参考网址:http://www.ibm.com/developerworks/cn/aix/library/au-wasonlinux/ 2.在ibm官网上下载websphere appl ...

  7. Centos 5.5下安装samba

    1.安装: Centos 5.5下安装samba,具体步骤如下: [root@bogon ~]# rpm -q samba Package samba is not installed [root@b ...

  8. CentOS 6.6下安装配置Tomcat环境

    本文转载至:http://www.linuxidc.com/Linux/2015-08/122234.htm 实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验 ...

  9. CentOS 6.3下安装Vsftp,虚拟用户

    CentOS 6.3下安装Vsftp,虚拟用户一.安装:1.安装Vsftpd服务相关部件:[root@linuxidc.com ~]# yum install vsftpd*Dependencies ...

随机推荐

  1. 通过JSTL+EL实现循环迭代

    使用前需要导入包 jstl.jar 和 standard.jar <%@ page language="java" import="java.util.*,com. ...

  2. Mysql设置字符编码及varchar宽度问题

    ubuntu16.04通过仓库安装的mysql5.7的配置文件在 /etc/mysql/mysql.conf.d/mysqld.cnf 修改字符只需要 在[mysqld] character-set- ...

  3. 详解Java GC的工作原理

    JVM学习笔记之JVM内存管理和JVM垃圾回收的概念,JVM内存结构由堆.栈.本地方法栈.方法区等部分组成,另外JVM分别对新生代和旧生代采用不同的垃圾回收机制. 首先来看一下JVM内存结构,它是由堆 ...

  4. PHP 时区设置

    有时候使用date("Y-m-d h:i:s")时发现时间相差8小时,修改“/etc/php5/apache2/php.ini”: date.timezone = "As ...

  5. [ActionScript 3.0] AS3.0 获取文本的明暗度

    /** * 获取文字的明暗值 * @param t 文字 * @return Number */ function getDensity(t:String):Number { var ttf:Text ...

  6. [ActionScript 3.0] AS3 判断字符串是否为数字

    trace(isNaN(Number("0")));//false trace(isNaN(Number("123")));//false trace(isNa ...

  7. SPCOMM 接收数据不完整!该如何解决

    SPCOMM 接收数据不完整!该如何解决   SPCOMM 接收数据不完整!我作了一个 读取地磅数据的程序,是用spcomm接收的! 总共有五台地磅,其他4台地磅数据读取都正常.但是有一台接收数据的时 ...

  8. 查看maven项目的依赖关系 mvn dependency:tree

    maven-dependency-plugin最大的用途是帮助分析项目依赖,dependency:list能够列出项目最终解析到的依赖列表,dependency:tree能进一步的描绘项目依赖树,de ...

  9. [POJ 2923] Relocation (动态规划 状态压缩)

    题目链接:http://poj.org/problem?id=2923 题目的大概意思是,有两辆车a和b,a车的最大承重为A,b车的最大承重为B.有n个家具需要从一个地方搬运到另一个地方,两辆车同时开 ...

  10. bash 学习笔记

    shell:能够操作应用程序的接口就称为shell. Linux由C编写的. TAB键的使用 alias:设置别名