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;