最近把一个java项目从windows平台部署到linux下,安装测试时遇见了cannot restore segment prot after reloc: Permission denied 这个问题。
最近用到gearman。由于C语言的server一直编译不过去(貌似是boost的问题)。所以想到用java版本的server。但是没想到又遇到了一些问题。
首先运行命令:
代码如下 | 复制代码 |
java -jar java-gearman-service-0.5.jar |
结果出现如下提示:
java/nio/channels/CompletionHandler
java-gearman-service-0.5
usage:
java [jvm options] -jar java-gearman-service-0.5.jar [server options]
Options:
-p PORT --port=PORT Defines what port number the server will listen on (Default: 4730)
-l LEVEL --logger=LEVEL Specifies the logging level (Default: 0)
-v --version Display the version of java gearman service and exit
-? --help Print this help menu and exit
java/nio/channels/CompletionHandler
java-gearman-service-0.5
usage:java [jvm options] -jar java-gearman-service-0.5.jar [server options]
Options: -p PORT --port=PORT Defines what port number the server will listen on (Default: 4730) -l LEVEL --logger=LEVEL Specifies the logging level (Default: 0) -v --version Display the version of java gearman service and exit -? --help Print this help menu and exit
然后到网上找了一下问题,发现是SELinux的问题,那么就得解决它了。
方法一:
找到/etc/sysconfig/selinux,编辑SELINUX属性默认为(SELINUX=enforcing)改成SELINUX=disabled。如果已经是disabled就不用改了,也可以注释SELINUX=enforcing,新添加一行SELINUX=disabled。保存退出。然后继续调试,如果还是出现这样的问题就用方法二。
方法二:
代码如下 | 复制代码 |
chcon -t texrel_shlib_t 如: chcon -t texrel_shlib_t /路径/名字.so |
方法三:
解决问题的步骤如下:
首先编辑配置文件:/etc/selinux/config
找到如下内容:
代码如下 | 复制代码 |
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - SELinux is fully disabled. # SELINUX=enforcing 将# SELINUX=enforcing的注释去掉,并在下边增加这样一行:SELINUX=disabled |
保存退出,结果还是报相同的错误。然后运行如下命令:
代码如下 | 复制代码 |
chcon -t texrel_shlib_t /usr/local/jdk1.7.0_01/jre/lib/i386/server/libjvm.so |
注意,错误提示中提示哪个文件出错就在后边写上哪个文件。
我自己的问题是
修改/etc/profile文件最后一行加入
JAVA_HOME=jdk路径
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH JAVA_HOME CLASSPATH
解决的办法是在root用户下,修改/etc/selinux/config 文件,
代码如下 | 复制代码 |
把SELINUX=enforcing 改成 SELINUX=disabled。 |
然后,保存关闭,重启机器就可以了。
加上这个就能解决这个问题了,我先用方法一结果不奏效然后再GG搜索了下,在SELinux被disable的情况下然后执行这个命令,肯定能解决这个问题。