linux的一次服务器部署之折腾

1.说一下这次部署的程序说明吧,两个java程序,还有个java web项目

2.关于java程序,本来是想着使用javac和java进行编译、运行的,但是项目带package和jar包,所以就各种麻烦,最后就干脆在eclipse中导出jar,直接jar -jar project.jar完事;

3.跑起来java web项目,需要安装tomcat,安装的时候,也碰到一点麻烦,就是tomcat启动后,然后执行shutdown.sh的时候,关不掉,通过浏览器访问的时候发现访问不了,才知道,tomcat并没有启动起来。

4.记录下linux软件安装的几个常用的命令吧:

  • wget ftp://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz
  • tar zxvf m4-1.4.17.tar.gz
  • cd m4-1.4.17
  • ./configure
  • make && make install

ps: zxvf的代表的意思:

 

  x : 从 tar 包中把文件提取出来
  z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压
  v : 显示详细信息
  f xxx.tar.gz : 指定被处理的文件是 xxx.tar.gz

 

5.其中在安装mysql的时候,碰到一些问题,折腾了好久,主要是按照这个:http://www.cnblogs.com/yangjinjin/p/3158226.html ,这个教程来的,

在安装bison的时候,提示m4环境找不到(最后发现的),然后就给linux安装了m4就偶了

6.mysql安装完成之后,Host is not allowed to connect sql server,成功解决的方法:

  6.1、d:\mysql\bin\>mysql -h localhost -u root //这样应该可以进入MySQL服务器

  6.2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION //赋予任何主机访问数据的权限

  6.3、mysql>FLUSH PRIVILEGES //修改生效

  6.4、mysql>EXIT //退出MySQL服务器

7.关于java服务在linux上持久运行的方法如下:

  7.1、把下面的代码保存成一个run.sh文件,放在和javascoker.jar(你自己的jar包)同级别的目录,需要修改的是

    JAVA_HOME,

    APP_HOME,

    APP_MAINCLASS,

    LOG_FILE,

    CLASSPATH

    这些修改完成之后,执行sh run.sh start,就ok了,java的持久服务就跑起来了。不过,运行前,先自己跑一下java -jar javasocker.jar是不是会报错啥的。

#author:wangchengwei
#date:2015-7-7
#desc:Run java application

#Java的安装目录
JAVA_HOME=/usr/java/jdk7
#运行程序所使用的用户
OWNER=root
#Java程序的目录
APP_HOME=/work/majiang
#Main方法的类
APP_MAINCLASS=com.socket.game.NioServer
#日志文件
LOG_FILE=$APP_HOME/logs/socket.log
#设置CLASSPATH
CLASSPATH=$CLASSPATH:$APP_HOME/socketlearn.jar
#循环将lib文件夹下所有的jar添加到CLASSPATH
for i in "$APP_HOME"/lib/*.jar; do
    CLASSPATH="$CLASSPATH":"$i"
done

#设置运行参数
JAVA_OPTS="-Xms512m -Xmx512m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m"

#echo $CLASSPATH;
psid=0

#检查Java程序是否运行
checkpid(){
    javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS`

    if [ -n "$javaps" ];then
        psid=`echo $javaps | awk '{print $1}'`
    else
        psid=0
    fi
}

#运行程序
start(){
    checkpid

    if [ $psid -ne 0 ];then
        echo "WARN:$APP_MAINCLASS already started!(pid=$psid)"
    else
        echo "Starting $APP_MAINCLASS..."
        JAVA_CMD="nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS >> $LOG_FILE 2>&1 &"
        su - $OWNER -c "$JAVA_CMD"
        checkpid
        if [ $psid -ne 0 ];then
            echo "Started $APP_MAINCLASS (pid=$psid)[OK]"
        else
            echo "Started $APP_MAINCLASS [FAILED]"
        fi
    fi
}

#停止程序
stop(){
    checkpid
    if [ $psid -ne 0 ];then
        echo "Stoping $APP_MAINCLASS...(pid=$psid)"
        su - $OWNER -c "kill $psid"

        checkpid
        if [ $psid -ne 0 ];then
            echo "Stoping use kill -9"
            su - $OWNER -c "kill -9 $psid"
        fi

        checkpid
        if [ $psid -eq 0 ];then
            echo "Stoped $APP_MAINCLASS [OK]"
        else
            echo "Stoped $APP_MAINCLASS [Failed]"
            stop
        fi

    else
        echo "WARN:$APP_MAINCLASS is not runing"
    fi
}

#查看状态
status(){
    checkpid

    if [ $psid -ne 0 ];then
        echo "$APP_MAINCLASS is runing (pid=$psid)"
    else
        echo "$APP_MAINCLASS is not runing"
    fi
}

#帮助信息
info() {
    echo "System Information:"
    echo "****************************"
    echo `head -n 1 /etc/issue`
    echo `uname -a`
    echo
    echo "JAVA_HOME=$JAVA_HOME"
    echo `$JAVA_HOME/bin/java -version`
    echo
    echo "APP_HOME=$APP_HOME"
    echo "APP_MAINCLASS=$APP_MAINCLASS"
    echo "****************************"
}

#$1表示接收第一个参数,如 ./run.sh start 。则$1就是start
case "$1" in
    'start')
        start
        ;;
    'stop')
        stop
        ;;
    'restart')
        stop
        start
        ;;
    'info')
        info
        ;;
    'status')
        status
        ;;
    *)
    echo "Usage: $0 {start|stop|restart|status|info}"
    exit 1
esac
exit 0;

 

posted @ 2016-07-16 18:09  muzi131313  阅读(268)  评论(0编辑  收藏  举报