linux下集成脚启动本编写——Rabbitmq mysql redis apache

集成启动服务脚本设计

... 12

总体思路需求

根据计算机系统启动顺序,启动项的优先级设定

1):rabbitMQ    2):mysql     3):redis      4):tomcat

2:对磁盘空间检测结果是否达到一定容量,达到后,就不启动相应程序(如:mysql)

if

执行启动脚本过程中,依照启动项依赖强度,决定后续依赖是否启动(例:mysql不能启动,后续tomcat启动脚本就不执行)

if

集成脚本命名

ramr (rabbit apache mysql   redis)

1.rabbtmq安装

1.1  安装Erlang

说明: RabbitMQ是基于Erlang的,所以首先必须配置Erlang环境。

$ tar xvzf otp_src_R14B03.tar.gz

$ cdotp_src_R14B03

$./configure

fop is missing.  可忽略

提示没有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

[[email protected] 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

原因

解决:

修改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

下载最新的版本

解压到指定目录

[[email protected]]# ls

otp_src_R13B04  Python-3.3.5 rabbitmq_server-3.4.2 simplejson-3.6.5

[[email protected]_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下面

[[email protected]]# ls

rabbitmqctl  rabbitmq-defaults  rabbitmq-env rabbitmq-plugins  rabbitmq-server

启动

[[email protected]]#sbin /rabbitmq-server  --detached

可能出现问题

question 1 erl:command  not  found

解决:

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

question 2 erlexec:HOME must be set

解决

第二行添加

 

question 3 停止rabbitmq服务运行错误

[[email protected] 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:启动系统卡住

解决:

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

5:打开另一个客户端

[[email protected] 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

因为环境变量没放在双引号中,所以 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

./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表示:重新启动

时间: 2024-08-08 10:22:14

linux下集成脚启动本编写——Rabbitmq mysql redis apache的相关文章

linux下的shell命令的编写,以及java如何调用linux的shell命令(java如何获取linux上的网卡的ip信息)

程序员都很懒,你懂的! 最近在开发中,需要用到服务器的ip和mac信息.但是服务器是架设在linux系统上的,对于多网口,在获取ip时就产生了很大的问题.下面是在windows系统上,java获取本地ip的方法.贴代码: package com.herman.test; import java.net.InetAddress; /** * @see 获取计算机ip * @author Herman.Xiong * @date 2014年5月16日 09:35:38 */ public class

oracle linux下oracle 10g启动EM、isqlplus及相关命令语法

转载:http://hancang2000.blog.sohu.com/139239421.html ORACLE_HOME/bin/emctl start dbconsole $ORACLE_HOME/bin/isqlplusctl start emctl常用命令语法: emctl start dbconsole启动EM console服务,使用前需要先设置ORACLE_SID环境变量 emctl stop dbconsole停止EM console服务,使用前需要先设置ORACLE_SID环

linux下通过命令启动多个终端执行相应的命令和程序

    作者:张昌昌 在一些情况下,往往需要同时启动多个终端并让终端执行自动执行相应的命令,进而达到提高操作效率的目的.在linux下gnome-terminal启动终端命令, gnome-terminal -x 后跟执行的命令,bash是linux启动子shell的命令,bash -c "所要执行的命令串",通过嵌套gnome-terminal -x bash -c ......,表示启动新终端, 并在新启动的终端里执行bash -c,即启动子shell,由子shell执行-c后面的

linux下memcached的启动/结束的方式

当前项目中,linux下memcached的启动/结束的方式 默认情况下memcached安装到/usr/local/bin下. 进入安装目录,启动memcached:/usr/local/memcached/bin/memcached -d -c 10240 -m 1024 -u root 获取运行状态:echo stats | nc localhost 11211(可以查看出pid) 或使用ps -ef|grep memcached 停止memcached:kill -9 pid  (-9表

Linux 下Tomcat的启动、关闭、杀死进程

Linux下Tomcat的启动.关闭.杀死进程 打开终端 cd /java/tomcat #执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat tail -f logs/catalina.out #看tomcat的控制台输出: #看是否已经有tomcat在运行了 ps -ef |grep tomcat #如果有,用kill; kill -9 pid #pid 为相应的进程号 例如 pe -ef |grep tomcat 输出如下 sun 5

Linux下,Tomcat启动成功,发现ip:8080访问失败

Linux下,Tomcat启动成功,发现ip:8080访问失败 Chasel_H 2018.04.23 20:47* 字数 195 阅读 566评论 0喜欢 3 相信很多人都和我一样,在Linux环境下安装Tomcat并成功启动却没法通过ip:8080却没有访问成功,其实原因是因为Linux防火墙默认是关闭的. 若想成功访问,有两种方法:一是关闭防火墙,另外就是让防火墙开放这个端口. (1)关闭防火墙: 在终端执行  service iptables stop  命令 ,但我们不推荐使用此方式

早上在linux下用selenium启动Chrome时出现问题:

早上在linux下用selenium启动Chrome时出现问题:报错: Traceback (most recent call last): File "get2.py", line 62, in <module> browser = webdriver.Chrome() File "/root/.pyenv/versions/anaconda3-5.1.0/lib/python3.6/site-packages/selenium/webdriver/chrome

linux下源码搭建php环境之mysql(一)

现在已经大半夜了,五一劳动节挺无聊的. 折腾一下吧,实在是睡不着.于是乎在电脑上安装个虚拟机,然后呢,在虚拟机上搭建一个php环境. 首先我得安装MYSQL吧.发现遇到的问题真多..待我娓娓道来. 主要介绍linux操作系统下MySQL源码进行纯手动安装,如果你对linux操作系统下MySQL源码进行纯手动安装的实际操作流程感兴趣的话,你不妨浏览以下的文章. 1.实现linux下纯手动MySQL源码安装,首先要下载MySQL的源码,我下载的是MySQL-5.0.87.tar.gz 2.解压tar

Linux下安装配置启动RabbitMQ

Linux版本:Centos 7RabbitMQ依赖erlang所以需要先安装erlang以及他需要的环境 安装erlang http://www.erlang.org/downloads 拿最新的版本 拼装命令 到/usr目录下执行(个人喜好) 下载安装包wget http://erlang.org/download/otp_src_21.2.tar.gz 解压安装包tar -xvzf otp_src_21.2.tar.gz 改个名字 mv otp_src_21.2 otp_src 安装erl