centos 4.4配置使用

我们公司的产品使用了erlang开发,可以在大多数的Linux发行版安装使用,我个人就在Ubuntu、Debian、SUSE等安装过。但客户使用的Linux发行版各种各样,网上环境也总是很诡异,期望一上线就可以使用那是妄想。
这2天客户就整了个很久没用的服务器给我们安装,这次情况真的是很不一样,我觉得有必要记录一下。

1. 系统是centos 4.4,已经停止了技术支持。

这个系统版本太低,导致了后面的一系列问题。

可能是因为当时的管理员不熟悉Linux,设置的分区更离谱,是我见过的最奇葩的分区方案。

整个/分区就给了1G的空间,注意,这还是包括了/home目录在内的分区。反正我在使用过程中,经常报错。

这样的分区方案很可能是因为考虑不足,然后后来发现分区不合理,然后随便配置了。其实这样的情况,应该使用lvm2,贴一下我的lvm方案。

这个是我的虚拟机,使用过程中发现了硬盘过小,然后加了后面的sda3,使用lvm2归并一起,挂载/分区。

2. 添加源

CentOS 4.x早已没有技术支持了,而且很多软件源不可用。查看了下面2个连接,配置了软件源。

centos 4.x不能yum问题解决

CentOS 4 终止生命周期(EOL) 通告

cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak
wget http://vault.centos.org/4.9/CentOS-Base.repo

然后更新yum缓存

yum clean all && yum clean metadata && yum clean dbcache && yum makecache

接着下载安装erlang源码编译的必要软件包,参考了

参考 CentOS(Fedora)下源代码编译安装 erlang 环境的 shell 脚本

yum install -y kernel-devel m4 fop ncurses-devel openssl-devel tk unixODBC unixODBC-devel

然后编译安装erlang。

3. mysql版本太低,添加centosplus源

原来的mysql版本是4.1.22, 我们的产品使用mysql的版本必须是5.0以上。继续折腾。
google了半天,发现在centosplus源有mysql 5.0的rpm包,但我们的源不会启用centosplus,查看了下面的

启用CentOS Plus

主要是设置enabled=1,下面贴一下我的repo配置:

additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://vault.centos.org/4.9/centosplus/$basearch/
gpgcheck=1
enabled=1
gpgkey=http://vault.centos.org/RPM-GPG-KEY-centos4
protect=1
priority=2

4. 停止iptables

使用setup命令行停止iptables,我们的产品可以使用了。

但第二天,服务器重启了,我们的产品又运行不行,发现还是iptables运行了,阻止了我们产品的网络连接。但我已经设置了iptables停止运行了的,什么情况?
查找了半天,原来是setup那里还有个防火墙配置问题。这里也要设置一下。

由于 ssh连接到4.4的服务器那个界面实在太难看,这里截图用的是6.5版本的centos界面,中文的。

5. erlang连接不了网络

# ./start.sh  live
{error_logger,{{2014,3,21},{10,35,48}},"Protocol: ~p: register error: ~p~n",["inet_tcp",{{badmatch,{error,duplicate_name}},[{inet_tcp_dist,listen,1},{net_kernel,start_protos,4},{net_kernel,start_protos,3},{net_kernel,init_node,2},{net_kernel,init,1},{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}]}
{error_logger,{{2014,3,21},{10,35,48}},crash_report,[[{initial_call,{net_kernel,init,['Argument__1']}},{pid,<0.20.0>},{registered_name,[]},{error_info,{exit,{error,badarg},[{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{ancestors,[net_sup,kernel_sup,<0.9.0>]},{messages,[]},{links,[#Port<0.68>,<0.17.0>]},{dictionary,[{longnames,true}]},{trap_exit,true},{status,running},{heap_size,377},{stack_size,24},{reductions,473}],[]]}
{error_logger,{{2014,3,21},{10,35,48}},supervisor_report,[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{pid,undefined},{name,net_kernel},{mfa,{net_kernel,start_link,[['groupchat@127.0.0.1',longnames]]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]}
{error_logger,{{2014,3,21},{10,35,48}},supervisor_report,[{supervisor,{local,kernel_sup}},{errorContext,start_error},{reason,shutdown},{offender,[{pid,undefined},{name,net_sup},{mfa,{erl_distribution,start_link,[]}},{restart_type,permanent},{shutdown,infinity},{child_type,supervisor}]}]}
{error_logger,{{2014,3,21},{10,35,48}},std_info,[{application,kernel},{exited,{shutdown,{kernel,start,[normal,[]]}}},{type,permanent}]}
{"Kernel pid terminated",application_controller,"{application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}}"}

Crash dump was written to: erl_crash.dump
Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}})

原来是epmd的问题,停了,再开就可以了。

# ps -ef|grep erl
root      4670     1  0 Mar20 ?        00:00:00 /usr/lib/erlang/erts-5.7.5/bin/epmd -daemon
root     24263 19882  0 10:35 pts/0    00:00:00 grep erl

# kill -9 4670

总的来说,由于服务器太旧,导致源设置困难、软件版本低,然后centos的默认启用防火墙的问题,导致整个过程出现了很多问题。

原文地址:https://www.cnblogs.com/getong/p/3615540.html