zoukankan      html  css  js  c++  java
  • CentOS 5.5 下安装Countly Web Server过程记录

    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 {
              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

  • 相关阅读:
    Httpclient请求数据(post)
    实现定位(无基本地图)
    Httpclient请求数据
    带参数路径的刷新和加载
    AsyncTask异步交互和httpurlconnection结合使用
    判断网络状态
    Android数字签名
    app加固
    定位和xml解析和gson解析加上拉加载,下拉刷新
    下载app后自动安装程序
  • 原文地址:https://www.cnblogs.com/lulee007/p/4570325.html
Copyright © 2011-2022 走看看