您的位置:首页 > 运维架构 > Linux

Struts项目向Linux迁移小结

2009-10-29 16:42 337 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: