Struts项目向Linux迁移小结
1. 系统兼容性处理
(1)路径符号问题:
a.在windows中 路径使用 //和/都是可以的,但Linux中只能使用/:
处理方法:
查找程序中所有含有类似“//”路径的代码(共84处),进行修改,将//替换为File.seperator,从而兼容Linux。
b. 在windows中,获取的路径的函数是:
“盘符:/.../tomcat/webapps/XXX/”
而 Linux中,是“usr/local/tomcat/ webapps/XXX/”,该路径在Linux无法识别,需要在前面增加“/”。
处理办法:函数进行修改:
Properties props=System.getProperties(); //获得系统属性集 String osName = props.getProperty("os.name"); //操作系统名称 根据操作系统的名称,进行路径设置。
(2)文件写权限问题:
系统中有部分程序需要进行文件写操作,相关程序执行失败。原因是Linux有严格的文件操作权限,默认是不给写权限的。所以需要对相关的文件和文件夹授予写的权限,需要授权的文件(夹)有:
具体命令:#Chmod -R 777 文件名
(3)文件名大小写敏感问题
由于windows对文件后缀名的大小写是不敏感的,而Linux下是敏感的。所以在程序中引用的文件名的后缀与实际大小写不一致,在Linux下是无法识别的。
解决方法:
修改文件的后缀名
(4)数据库中表名大小写问题
表名大小写在windows下默认是不敏感的;而在Linux下是敏感的 。
解决办法:
1)通过修改MySql Server安装目录下的 my.cnf 文件, 设置 lower_case_table_names=1
2) 修改建库脚本,将所有涉及到的表名都修改为小写
3)对于已经存在的系统:对所有表名大写的表,执行如下语句:
ALTER TABLE table_name RENAME TO new_table_name
(5)jfreechart中文日文字体显示问题
a. 由于Java虚拟机找不到字体文件造成的。
解决办法:
(1)把字体文件Simsun.ttf(可以从windows下Simsun.ttc拷贝一份到Linux下)
拷贝到JRE的字体目录$JAVA_HOME/jre/lib/fonts下,
(2)编辑字体目录下的文件fonts.dir,把第一行的数字加1,然后在最后加一行加上:
simsun.ttf -SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
保存文件。
(3)切换到该目录下的 jre/lib 目录下, 将 font.properties 备份一下:
# cd /usr/java/j2sdk1.4.2_01/# cd jre/lib/# mv font.properties font.properties.bak
(4) font.properties.zh_cn.sun 复制为 font.properties。
# cp font.properties.zh_cn.sun font.properties
(5), 编辑复制得到的 font.properties 文件, 跳到文件尾部,
找到“filename.xxx=”这一行, 将后面的路径修改为你机器上的 simsun.ttf 所在的全路径,
下面的 appendedfontpath 一行也做相应修改, 将路径指向你的 simsun.ttf 所在文件夹。
filename.-hanyi-hanyisong-medium-r-normal--*-%d-*-*-c-*-gbk-0=/usr/share/fonts/local/simsun.ttf
appendedfontpath=/usr/share/fonts/local/
2、安装问题说明
问题一:Tomcat无法启动
解决方法:
(1) 更换端口号 Server.xml 中:8080修改为8088
(2) Tomcat/bin下所有的sh文件写权限开放
问题二:访问Tomcat,出现jsp无法编译的错误
解决方法:
Linux自带的jdk的jar不全,没有dt.jar.
重新下载jdk进行部署(j2sdk-1_4_2_19-Linux-i586.bin)
问题三:编译MySql时报错“Linux thread not found”
解决方法:
因为MySQL 4.0 不支持使用了 NTPL线程,用以下命令处理:
(1)# cp /usr/include/pthread.h /usr/include/pthread.h.bak
(2)# echo ‘/* Linuxthreads */’ >> /usr/include/pthread.h
(3)# ./configure –with-pthread –with-named-thread-lib=-lpthread
(4)# make && make install
问题四:windows客户端无法访问Mysql
解决方法:
由于(1)telnet 3306端口无响应
(2)mysql在本机可以通过命令行访问,
(3)使用 show variables like ‘port’ 命令查看,发现端口号=0;说明该mysql的端口设置无效,有可能被别的程序占用;
(4)netstat –anp,发现3306端口没有被使用。使用rpm -qa mysql命令查看,发现该Linux下已经安装了另一个版本的mysql;
使用Rpm –e –nodep mysql5.0 命令进行卸载,再执行show variables like ‘port’ 命令,
端口号=3306。
(5)windows客户端访问Mysql,出现访问被拒绝提示。但telnet 3306,已经能够连接。
(6)iptables添加开放了3306端口
#iptables -A INPUT -p tcp -m tcp --sport 3306 -j ACCEPT
#iptables -A OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT
#service iptables save
#service iptables restart
在防火墙中添加该端口 vi /etc/sysconfig/iptables
添加-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
更改完了之后输入service iptables restart
(7)mysql增加访问权限:
登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root –p root>use mysql;mysql>update user set host = '%' where user = 'root';mysql>select host, user from user;
flush privileges
(8)/etc/my.cnf 里注释掉 skip-networking;在 /etc/hosts.allow 加入MySQL 服务侦听 mysqld: 127.0.0.1
最终解决问题。
附件:安装步骤说明
1. Java环境安装:
(1)www.sun.com网站下载jdk1.4.2版本的安装包j2sdk-1_4_2_19-Linux-i586.bin
(2)安装。#.
2.Tomcat安装
(1)http://tomcat.apache.org/下载tomcat软件包
(2)安装。
#tar zxvf apach-tomcat-4.1.37.tar.gz
#mv apach-tomcat-4.1.37 /usr/local
(3)设置环境变量
#vi /etc/profile
export JAVA_HOME=/usr/local/j2sdk1.4.2_19
export TOMCAT_HOME=/usr/local/apach-tomcat-4.1.39
Export PATH=$JAVA_HOME/bin;$PATH
Export CLASSPATH=.:$JAVA_HOME/lib/dt.jar: $JAVA_HOME/lib/tools.jar
保存退出
# source /etc/profile //让当前配置立即生效
(4)启动tomcat服务器
$ /usr/local/apach-tomcat-6.0.16/bin/startup.sh
控制台会出现如下内容:
Using CATALINA_BASE: /usr/local/apache-tomcat-6.0.16
Using CATALINA_HOME: /usr/local/apache-tomcat-6.0.16
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-6.0.16/temp
Using JRE_HOME: /usr/local/jdk1.6.0_04
(5)在浏览器中输入http://localhost:8080/就可以看到tomcat的log了
3.Linux中文字体支持设置
(1)把字体文件Simsun.ttf(可以从windows下Simsun.ttc拷贝一份到Linux下)
拷贝到JRE的字体目录$JAVA_HOME/jre/lib/fonts下,
(2)编辑字体目录下的文件fonts.dir,把第一行的数字加1,然后在最后加一行加上:
simsun.ttf -SungtiL GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0
保存文件。
(3)切换到该目录下的 jre/lib 目录下, 将 font.properties 备份一下:
# cd /usr/java/j2sdk1.4.2_01/# cd jre/lib/# mv font.properties font.properties.bak
(4) font.properties.zh_cn.sun 复制为 font.properties。
# cp font.properties.zh_cn.sun font.properties
(5), 编辑复制得到的 font.properties 文件, 跳到文件尾部,
找到“filename.xxx=”这一行, 将后面的路径修改为你机器上的 simsun.ttf 所在的全路径,
下面的 appendedfontpath 一行也做相应修改, 将路径指向你的 simsun.ttf 所在文件夹。
filename.-hanyi-hanyisong-medium-r-normal--*-%d-*-*-c-*-gbk-0=/usr/share/fonts/local/simsun.ttf
appendedfontpath=/usr/share/fonts/local/
4.MySQL安装:
1)建立相应目录和组:
# mkdir /usr/local/mysql
# groupadd mysql
# useradd -g mysql mysql //useradd -g mysql -d /usr/local/mysql name
2)开始安装mysql
# tar xzvf mysql-4.0.15.tar.gz //解压缩
# cd mysql-4.0.15 //进入解压后的文件目录
// Linux thread not found问题的处理
# cp /usr/include/pthread.h /usr/include/pthread.h.bak
# echo ‘/* Linuxthreads */’ >> /usr/include/pthread.h
# ./configure –with-pthread –with-named-thread-lib=-lpthread --prefix=/usr/local/mysql
# make && make install
3)copy配置文件
有large,medium,small三个环境下的,根据机器性能选择,如果负荷比较大,可修改里面的一些变量的内存使用值
# cp support-files/my-medium.cnf /etc/my.cnf //复制配置文件
4)更改目录权限和组
# cd /usr/local/mysql
# chown -R mysql .
# chgrp -R mysql .
5)建立数据库和表
# bin/mysql_install_db --user=mysql //初始化授权
6)再次更改目录权限和组
# chown -R root .
# chown -R mysql var
7)启动MySQL服务
# bin/mysqld_safe --user=mysql &
8)设置MySQL启动服务
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld //在自动启动列表里添加mysqld
# chkconfig --level 345 mysqld on
9)修改MySQL密码
# /usr/local/mysql/bin/mysqladmin -u root password 'new-password' //修改密码
# /usr/local/mysql/bin/mysqladmin -u root -h localhost password 'new-password'
// 将localhost替换成你的主机域名,比如:zhaorg.csu.edu.cn
10)登录mysql数据库:
# mysql -u root -p
Enter password: root
Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 18 to server version: 5.0.19-log
Type 'help;' or '/h' for help. Type '/c' to clear the buffer.
mysql> use mysql;
mysql>delete from user where password=""; //删除用于本机匿名连接的空密码帐号
mysql>flush privileges;
mysql>quit