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;

浙公网安备 33010602011771号