设为首页 收藏本站
查看: 1332|回复: 0

[经验分享] linux下集成脚启动本编写——Rabbitmq mysql redis apache

[复制链接]

尚未签到

发表于 2018-11-6 13:12:54 | 显示全部楼层 |阅读模式
  集成启动服务脚本设计
  ... 12
  总体思路需求
  根据计算机系统启动顺序,启动项的优先级设定
  1):rabbitMQ    2):mysql     3):redis      4):tomcat
  2:对磁盘空间检测结果是否达到一定容量,达到后,就不启动相应程序(如:mysql)
  if
  执行启动脚本过程中,依照启动项依赖强度,决定后续依赖是否启动(例:mysql不能启动,后续tomcat启动脚本就不执行)
  if
  集成脚本命名
  ramr (rabbit apache mysql   redis)
  1.rabbtmq安装
DSC0000.jpg

  1.1  安装Erlang
  说明: RabbitMQ是基于Erlang的,所以首先必须配置Erlang环境。
  $ tar xvzf otp_src_R14B03.tar.gz
  $ cdotp_src_R14B03
  $./configure
  fop is missing.  可忽略
DSC0001.jpg

  提示没有wxWidgets和fop,但是问题不大。继续:
  $ make
  $ sudo make install
  *****************************************************************************************
可能出现问题:
$ ./configure执行时
  问题1
  configure:error: No curses library functions found
  configure:error: /bin/sh '/var/rabbit/otp_src_R13B04/erts/configure' failed for erts
  解决:yum -y install ncurses-dev
  问题2
  *********************************************************************
  **********************  APPLICATIONS DISABLED  **********************
  *********************************************************************
  crypto         : No usable OpenSSL found
  odbc           : ODBC library - link check failed
  orber          : No C++ compiler found
  ssh            : No usable OpenSSL found
  ssl            : No usable OpenSSL found
  解决:
  1:ODBC library - link check failed    需要安装 unixODBC
  > yum list|grep unixODBC
  > yum install unixODBC-devel
  2.  No usable OpenSSL found        需要安装 openssl
  > yum list|grep ssl
  > yum install openssl-devel
  3.   No C++ compiler found:       需要安装gc c++ 编译器
  > yum list|grep gcc
  > yum install gcc-c++
  安装一个比较新的Python版本
  ①解压安装文件
  $ tar –jxvfPython-2.7.3.tar.bz2
  ②进入解压后的目录
  $ cdPython-2.7.3
  ③执行安装步骤
  $./configure
  $ make
  $ makeinstall
  3. 测试
  在命令行下输入python,出现python解释器即表示已经正确安装。
可能出现问题
执行python会发现显示结果为原来的版本信息
  问题:1
  #python
  退出:ctrl+D
  Python 2.4.3 (#1, May  5 2011, 16:39:10)
  [GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  解决:
  Java代码
  #cd /usr/bin
  #ll |grep python   //查看该目录下python
  #rm -rf python
  #ln -s /usr/local/Python-2.7.3/python ./python  //建立对应的软链接
  #python
  [root@localhost bin]# python
  Python 3.3.5 (default, Dec 23 2014, 16:01:57)
  [GCC 4.4.7 20120313 (Red Hat 4.4.7-11)]
  问题2
使用yum的时候出现
  File"/usr/bin/yum", line 30
  except KeyboardInterrupt, e:                                           ^
  SyntaxError: invalidsyntax
  原因
   DSC0002.jpg
  解决:
  修改yum的解释器为旧版本python2.6:
  vi/usr/bin/yum
  将第一行"#!/usr/bin/python"改为"#!/usr/bin/python2.6"即可
  1.3  需要安装simplejson
  http://pypi.python.org/pypi/simplejson#downloads
  解压
  #tar  zxvf simplejson-3.6.5.tar.gz
  #cd   simplejson-3.6.5
  #sudo pythonsetup.py install
  1.4  安装rabbitMQ
  http://www.rabbitmq.com/server.html
  下载最新的版本
  解压到指定目录
  [root@localhostrabbit]# ls
  otp_src_R13B04  Python-3.3.5 rabbitmq_server-3.4.2 simplejson-3.6.5
  [root@localhostrabbitmq_server-3.4.2]# ls
  ebin                            LICENSE-MIT-eldap
  etc                             LICENSE-MIT-Flot
  include                         LICENSE-MIT-jQuery164
  INSTALL                         LICENSE-MIT-Mochi
  LICENSE                         LICENSE-MIT-Sammy060
  LICENSE-APACHE2-ExplorerCanvas  LICENSE-MPL-RabbitMQ
  LICENSE-Apache-Basho            plugins
  LICENSE-APL2-Stomp-Websocket    sbin
  LICENSE-BSD-base64js          share
  LICENSE-BSD-glMatrix            var
  LICENSE-MIT-EJS10
  此时已经有sbin
  sbin下面
  [root@localhostsbin]# ls
  rabbitmqctl  rabbitmq-defaults  rabbitmq-env rabbitmq-plugins  rabbitmq-server
  启动
  [root@localhost]#sbin /rabbitmq-server  --detached
可能出现问题
question 1 erl:command  not  found
DSC0003.jpg

  解决:
  如果为了rc.local启动方便,可以将 export PATH=$PATH:/../ bin 这一行写入到 rabbitmq-server 文件中:
DSC0004.jpg

question 2 erlexec:HOME must be set
DSC0005.jpg

  解决
  第二行添加
  
   DSC0006.jpg
question 3 停止rabbitmq服务运行错误
  [root@localhost sbin]# service rabbitmq stop
  Stoping rabbitmq Server:rabbitmq\n/var/rabbit/rabbitmq_server-3.4.2/sbin/rabbitmqctl: line 24: erl:command not found
  
  解决
  同理和1一样rabbitmctl中添加
question 4服务不支持 chkconfig
  解决
  #!/bin/bash
  # chkconfig: 235 20 80
  # description: Saves andrestores system entropy pool for
  # higher quality randomnumber generation.
  !!注意chkconfig前面的冒号“:”
question5:启动系统卡住
DSC0007.jpg

  解决:
  shell脚本中启动命令时候添加&
  
2.       Redis安装
  下载连接http://download.redis.io/releases/redis-2.8.18.tar.gz
  所在文件夹
  解压
  1:tar zxvf
  编译
  2: make
  进入文件夹
  3:cd  redis-2.8.3
  启动
  4:src/redis-server
DSC0008.jpg

  5:打开另一个客户端
  [root@localhost redis-2.8.3]# src/redis-cli
  127.0.0.1:6379>  set name chenzhou
  OK
  127.0.0.1:6379>get name
  "chenzhou"
  127.0.0.1:6379>exit
启动过程问题
  /etc/init.d/redis: line 10: [: too manyarguments
DSC0009.jpg

  因为环境变量没放在双引号中,所以 bash 认为方括号中的自变量过多。可以用双引号将字符串自变量括起来消除该问题。请记住,如果养成将所有字符串自变量用双引号括起的习惯,将除去很多类似的编程错误。
  卡在启动地方
  WARNINGovercommit_memory is set to 0! Background save may fail under low memorycondition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.confand then reboot or run the command 'sysctl vm.overcommit_memory=1' for this totake effect
DSC00010.jpg

  ./redis-server  /usr/local/src/redis-2.0.4/redis.conf
  过量使用内存设置为0!在低内存环境下,后台保存可能失败。为了修正这个问题,请在/etc/sysctl.conf 添加一项 'vm.overcommit_memory = 1' ,然后重启(或者运行命令'sysctl vm.overcommit_memory=1' )使其生效。
  shell脚本中启动命令时候添加&
3.       Mysql安装
  yum installmysql
  数据库检测容量
  val=`df -h|awk 'NR==2{print $5}'|cut -f 1 -d "%"`
  if [ $val-lt 80 ]
  then
  start
  else
  echo "磁盘已经达到80%,不能启动"
  fi
  ;;
4.       Tomcat 安装
  server.conf
  添加
  Java_home
  截取tomcat pid
  ps -ef |greptomcat |grep -w 'apache-tomcat-8.0.15'|grep -v 'grep'|awk '{print $2}'
  相关知识:
  Linux:使用awk命令获取文本的某一行,某一列
  1、打印文件的第一列(域)                 :awk '{print $1}' filename
  2、打印文件的前两列(域)                 :awk '{print $1,$2}' filename
  3、打印完第一列,然后打印第二列       : awk '{print $1 $2}' filename
  4、打印文本文件的总行数                :awk 'END{print NR}' filename
  5、打印文本第一行                          :awk 'NR==1{print}' filename
  6、打印文本第二行第一列                :sed-n "2, 1p" filename | awk 'print $1'
  shell里面的赋值方法有两种,格式为
  1) arg=`(命令)`
  2) arg=$(命令)
  因此,如果想要把某一文件的总行数赋值给变量nlines,可以表达为:
  1) nlines=`(awk 'END{print NR}' filename)`
  或者
  2)nlines=$(awk 'END{print NR}' filename)
总结
开机启动:
1:制作脚本
  脚本添加注释解释
  每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。第二行对服务进行描述,可以用\ 跨行注释。
  例如,random.init包含三行:
  # chkconfig: 2345 20 80
  # description: Saves and restores system entropypool for \
  # higher quality random number generation.
2:权限
  Chmod +x filename
3:拷贝
  cp .file  /etc/init.d
4:添加启动项服务
  chkconfig  --add xxx
  5.明确具体启动顺序
  拷贝到/etc/rc.d/
  ln –s /etc/rc.d/init.d /etc/rc.d/rc.xd/  S|K  xxxx
  6:上面的X
  chkconfig  --level 123456  servername  on|off|reset
  等级0表示:表示关机
  等级1表示:单用户模式
  等级2表示:无网络连接的多用户命令行模式
  等级3表示:有网络连接的多用户命令行模式
  等级4表示:不可用
  等级5表示:带图形界面的多用户模式
  等级6表示:重新启动


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-631583-1-1.html 上篇帖子: 关于redis 下篇帖子: Centos7 下Redis3安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表