linux
引言:机房提供的机器很烦人,连基本的编译环境都没有,比如没有gcc,要自己找到光盘很困难,所以急需配置yum来更新软件,本文可以正常解决,阿权已经测试过,正常使用centos的更新源。
本文为简单的理解翻译,有误请纠正。
有很多方式更新rhel的软件,比如up2date,但需要你在redhat上注册。
你可以用yum和rpm文件更新,其实很简单:
1. 用wget下载yum
2. 安装此rpm文件
3. 配置 /etc/yum.conf 使用兼容的更新源
4. 安装CentOS的GPG Key
5. 测试yum是否正常(下面是更新所有的rpm)
*注意: 此方式更新所有已经安装的rpm,你不需要则可以取消
如果进行到第五步没有错误,那就基本正常了!
参考原文(英文):
Howto: Install yum On RHEL 4
本文为简单的理解翻译,有误请纠正。
有很多方式更新rhel的软件,比如up2date,但需要你在redhat上注册。
你可以用yum和rpm文件更新,其实很简单:
1. 用wget下载yum
# wget http://linux.duke.edu/projects/yum/download/2.0/yum-2.0.8-1.noarch.rpm
2. 安装此rpm文件
# rpm -ivh yum-2.0.8-1.noarch.rpm
3. 配置 /etc/yum.conf 使用兼容的更新源
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
[base]
name=CentOS-$releasever – Base
baseurl=http://mirror.centos.org/centos/4/os/i386/
gpgcheck=1
[updates]
name=Red Hat Linux $releasever – Updates
baseurl=http://mirror.centos.org/centos/4/updates/i386/
gpgcheck=1
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
[base]
name=CentOS-$releasever – Base
baseurl=http://mirror.centos.org/centos/4/os/i386/
gpgcheck=1
[updates]
name=Red Hat Linux $releasever – Updates
baseurl=http://mirror.centos.org/centos/4/updates/i386/
gpgcheck=1
4. 安装CentOS的GPG Key
# rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-4
5. 测试yum是否正常(下面是更新所有的rpm)
# yum update
*注意: 此方式更新所有已经安装的rpm,你不需要则可以取消
如果进行到第五步没有错误,那就基本正常了!
参考原文(英文):
Howto: Install yum On RHEL 4
Fedora是RedHat的开源计划,从RedHat9.0以后,RedHat不在发行桌面版,而由新的开源计划Fedora发行桌面版,发行周期6个月。CentOS (Community Enterprise Operating System)是在RHEL基础上由CentOS 社区重新编译的。
CentOS是Community ENTerprise Operating System的简称,我们有很多人叫它社区企业操作系统,不管你怎么叫它,它都是linux的一个发行版本。它是Red Hat Enterprise Linux(以下称之为RHEL),CentOS正是这个RHEL的克隆版本,RHEL是很多企业采用的linux发行版本,需要向RedHat付费才可以使用,并能得到付过费用的服务和技术支持和版本升级。这个CentOS可以像REHL一样的构筑linux系统环境,但不需要向RedHat付任何的费用,同样也得不到任何有偿技术支持和升级服务。
Red Hat公司的产品中,有RedHat Linux(如Redhat8,9)和针对企业发行的版本Red Hat Enterprise Linux,都能够通过网络FTP免费的获得并使用,但是在2003年的时候,Red Hat Linux停止了开发,这也是为什么没有Redhat10的原因,它的项目有Fedora Project这个项目所取代,并以Fedora Core这个名字发行并提供普通用户免费使用。Fedora Core这个Linux发行版更新很快,大约半年左右就有新的版本出来,目前的版本是Fedora Core 6,这个Fedora Core试验的韵味比较浓厚,每次发行都有新的功能被加入到其中,得到的成功结果将被采用道RHEL的发布中。虽说这样,频繁的被改进更新的不安定产品对于企业来说并不是最好的选择,大多数企业还是会选择有偿的RHEL产品。
Redhat有两大Linux产品系列,其一是免费的Fedora Core系列,主要用于桌面版本,提供了较多新特性的支持。另外一个产品系列是收费的Enterprise系列,这个系列分成:AS/ES/WS等分支。
CentOS是Community ENTerprise Operating System的简称,我们有很多人叫它社区企业操作系统,不管你怎么叫它,它都是linux的一个发行版本。它是Red Hat Enterprise Linux(以下称之为RHEL),CentOS正是这个RHEL的克隆版本,RHEL是很多企业采用的linux发行版本,需要向RedHat付费才可以使用,并能得到付过费用的服务和技术支持和版本升级。这个CentOS可以像REHL一样的构筑linux系统环境,但不需要向RedHat付任何的费用,同样也得不到任何有偿技术支持和升级服务。
Red Hat公司的产品中,有RedHat Linux(如Redhat8,9)和针对企业发行的版本Red Hat Enterprise Linux,都能够通过网络FTP免费的获得并使用,但是在2003年的时候,Red Hat Linux停止了开发,这也是为什么没有Redhat10的原因,它的项目有Fedora Project这个项目所取代,并以Fedora Core这个名字发行并提供普通用户免费使用。Fedora Core这个Linux发行版更新很快,大约半年左右就有新的版本出来,目前的版本是Fedora Core 6,这个Fedora Core试验的韵味比较浓厚,每次发行都有新的功能被加入到其中,得到的成功结果将被采用道RHEL的发布中。虽说这样,频繁的被改进更新的不安定产品对于企业来说并不是最好的选择,大多数企业还是会选择有偿的RHEL产品。
Redhat有两大Linux产品系列,其一是免费的Fedora Core系列,主要用于桌面版本,提供了较多新特性的支持。另外一个产品系列是收费的Enterprise系列,这个系列分成:AS/ES/WS等分支。
之前有提到《查看日志里root用户登录失败的ip尝试的次数》,服务器的安全问题是需要办法解决的。
fail2ban是检查各种软件的认证失败记录里找到相应的ip地址,禁止其继续访问此服务。
比如ssh服务,检查到5此失败认证就被禁止访问ssh了。
安装服务用yum很简单:
先检查iptables是否启动,必须的 chkconfig --list | grep "3:on"
启动防火墙 service iptables start
yum -y install fail2ban
service fail2ban start
如果当前没有受限的ip,应该有类似的结果:
也就是新开了一个chain防御ssh访问,优先截止受限ip,fail2ban-SSH的规则和系统规则不构成冲突,受限ip还可以访问别的服务的,比如可以访问网页。
尝试一下在另外一个ip恶意登录:
fail2ban是检查各种软件的认证失败记录里找到相应的ip地址,禁止其继续访问此服务。
比如ssh服务,检查到5此失败认证就被禁止访问ssh了。
安装服务用yum很简单:
先检查iptables是否启动,必须的 chkconfig --list | grep "3:on"
启动防火墙 service iptables start
yum -y install fail2ban
service fail2ban start
如果当前没有受限的ip,应该有类似的结果:
[root@aslibra ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-SSH tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-SSH (1 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-SSH tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-SSH (1 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0
也就是新开了一个chain防御ssh访问,优先截止受限ip,fail2ban-SSH的规则和系统规则不构成冲突,受限ip还可以访问别的服务的,比如可以访问网页。
尝试一下在另外一个ip恶意登录:
如果你的服务和我的问题类似,则不妨参考此项做法(只是临时迁移):
A数据库服务是在3306,数据库连接用的是hosts里的名称,要迁移到B数据库,但端口服务是3307
在不改PHP代码的前提下,可以这样:
1 先用iptables设置B服务器的3306端口转发到3307:
这里限制了eth1
2 相应的用户导入,如果不知道用户密码,可以导入相应的mysql/usr表里的相应记录,如果有表权限分配,则比较复杂了,这个多熟悉一下数据库操作才行
3 导出数据并导入,当然了,也需要创建相应的库
这里用户是u,密码是p,可以在此服务器访问目标数据库
4 修改hosts相应的记录为B的IP,OK
A数据库服务是在3306,数据库连接用的是hosts里的名称,要迁移到B数据库,但端口服务是3307
在不改PHP代码的前提下,可以这样:
1 先用iptables设置B服务器的3306端口转发到3307:
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 3306 -j DNAT --to-destination :3307
这里限制了eth1
2 相应的用户导入,如果不知道用户密码,可以导入相应的mysql/usr表里的相应记录,如果有表权限分配,则比较复杂了,这个多熟悉一下数据库操作才行
3 导出数据并导入,当然了,也需要创建相应的库
mysqldump -S /Data/mysqldb/3306/mysql.sock -uu -pp aslibra >aslibra.sql
mysql -h 192.168.1.8 -P3307 -uu -pp aslibra < aslibra.sql
mysql -h 192.168.1.8 -P3307 -uu -pp aslibra < aslibra.sql
这里用户是u,密码是p,可以在此服务器访问目标数据库
4 修改hosts相应的记录为B的IP,OK
MFS的使用情况可以用mfscgiserv启动webserver查看,很详细的。
但是如果系统的python版本过低,启动是正常,可是受访后,就挂掉了。
这个可以让程序放置在前台运行:
受访后挂掉,这个是2.3.4的python,会有 NameError: global name 'set' is not defined 的错误。
可以升级到新的python,安装到新的目录即可:
即可成功解决!
但是如果系统的python版本过低,启动是正常,可是受访后,就挂掉了。
这个可以让程序放置在前台运行:
[root@60 sbin]# /Data/apps/mfs/sbin/mfscgiserv -f
starting simple cgi server (host: any , port: 9425 , rootpath: /Data/apps/mfs/share/mfscgi)
Asynchronous HTTP server running on port 9425
Traceback (most recent call last):
File "/Data/apps/mfs/sbin/mfscgiserv", line 419, in ?
loop(server,HTTP)
File "/Data/apps/mfs/sbin/mfscgiserv", line 153, in loop
w = set(w) & set(client_handlers.keys()) # remove deleted sockets
NameError: global name 'set' is not defined
starting simple cgi server (host: any , port: 9425 , rootpath: /Data/apps/mfs/share/mfscgi)
Asynchronous HTTP server running on port 9425
Traceback (most recent call last):
File "/Data/apps/mfs/sbin/mfscgiserv", line 419, in ?
loop(server,HTTP)
File "/Data/apps/mfs/sbin/mfscgiserv", line 153, in loop
w = set(w) & set(client_handlers.keys()) # remove deleted sockets
NameError: global name 'set' is not defined
受访后挂掉,这个是2.3.4的python,会有 NameError: global name 'set' is not defined 的错误。
可以升级到新的python,安装到新的目录即可:
wget http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tgz
tar xfz Python-2.6.4.tgz
cd Python-2.6.4
./configure --prefix=/Data/apps/python
make && make install
/Data/apps/python/bin/python /Data/apps/mfs/sbin/mfscgiserv
tar xfz Python-2.6.4.tgz
cd Python-2.6.4
./configure --prefix=/Data/apps/python
make && make install
/Data/apps/python/bin/python /Data/apps/mfs/sbin/mfscgiserv
即可成功解决!
在虚拟机上对MFS进行测试了一下,方案值得考虑,不过速度可能有点限制。
此笔记记录一些碰到的问题:
1 速度的比较,小文件倒有很大优势的,大文件可能有速度问题
(虚拟机不可靠,仅参考一下,具体数据请看后面资料最后一条,里面有测试数据)
A 实际机器的读写速度
B 虚拟机(vmvare)的读写速度
C 虚拟机组建的MFS
2 fuse的安装,建议用2.7版本的
2.8的在编译时没有fuse.ko内核文件,2.7版本的可以
3 安装时默认支持mfsmount,但需要fuse支持
编译时如果看到这个,就没有办法作为client了
不妨使用yum更新,yum install fuse*
安装前面的fuse也许有帮助?待确认。。
4 必须有1G以上的空余才能写入文件
这个问题挺让人纳闷的,开始的时候为了方便,建立了一个tmpfs作为存储空间,才256M
但一直都无法写入文件,但能够写入文件名称,让人郁闷的
此笔记记录一些碰到的问题:
1 速度的比较,小文件倒有很大优势的,大文件可能有速度问题
(虚拟机不可靠,仅参考一下,具体数据请看后面资料最后一条,里面有测试数据)
A 实际机器的读写速度
[root@gx tmp]# dd if=/dev/zero of=tmp bs=10M count=50
50+0 records in
50+0 records out
524288000 bytes (524 MB) copied, 3.36305 seconds, 156 MB/s
50+0 records in
50+0 records out
524288000 bytes (524 MB) copied, 3.36305 seconds, 156 MB/s
B 虚拟机(vmvare)的读写速度
[root@aslibra Data]# dd if=/dev/zero of=tmp bs=10M count=50
50+0 records in
50+0 records out
524288000 bytes (524 MB) copied, 9.32125 seconds, 56.2 MB/s
50+0 records in
50+0 records out
524288000 bytes (524 MB) copied, 9.32125 seconds, 56.2 MB/s
C 虚拟机组建的MFS
[root@aslibra mfs]# dd if=/dev/zero of=tmp bs=100M count=5
3+0 records in
3+0 records out
314572800 bytes (315 MB) copied, 57.9101 seconds, 5.4 MB/s
3+0 records in
3+0 records out
314572800 bytes (315 MB) copied, 57.9101 seconds, 5.4 MB/s
2 fuse的安装,建议用2.7版本的
2.8的在编译时没有fuse.ko内核文件,2.7版本的可以
wget http://sourceforge.net/projects/fuse/files/fuse-2.X/2.7.5/fuse-2.7.5.tar.gz/download
tar xfz fuse-2.7.5.tar.gz
cd fuse-2.7.5
./configure && make && make install
tar xfz fuse-2.7.5.tar.gz
cd fuse-2.7.5
./configure && make && make install
3 安装时默认支持mfsmount,但需要fuse支持
编译时如果看到这个,就没有办法作为client了
******************************** mfsmount disabled ********************************
* fuse library is too old or not installed - mfsmount needs version 2.6 or higher *
***********************************************************************************
* fuse library is too old or not installed - mfsmount needs version 2.6 or higher *
***********************************************************************************
不妨使用yum更新,yum install fuse*
安装前面的fuse也许有帮助?待确认。。
4 必须有1G以上的空余才能写入文件
这个问题挺让人纳闷的,开始的时候为了方便,建立了一个tmpfs作为存储空间,才256M
但一直都无法写入文件,但能够写入文件名称,让人郁闷的





