安装 Centos Mini 之后需要做的一些事情

装上 vagrant 了.但是 centos 是 minimal 版的,所以需要做很多东西(不是 mini 版的也需要做很多事 囧rz).其实很多事情都是玩 vps 的时候做过的,但是人老了记性不好,每次都要 google. 所以我觉得还是记录下来比较好.

先添加源吧..啥也不说了 直接上阿里云的开源镜像吧..网易萎了..

1
2
3
4
5
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cd /etc/yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
yum clean all
yum makecache

修改 dns

虚拟机 nat 转发的网络 经常会碰到这种情况 PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.aliyun.com

1
2
3
4
5
http://mirrors.163.com/centos/6.5/updates/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.163.com'"
Trying other mirror.
http://mirrors.btte.net/centos/6.5/updates/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.btte.net'"
Trying other mirror.
http://mirrors.aliyun.com/centos/6.5/updates/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.aliyun.com'"

奇怪的是在真机上能直接打开上述地址 怀疑是 dns 解析问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@vagrant-centos65 yum.repos.d]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

#在这个文件最下面添加
DNS1=42.121.236.241
DNS2=8.8.8.8

[root@vagrant-centos65 yum.repos.d]# service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:
Determining IP information for eth0... done.
                                                           [  OK  ]
[root@vagrant-centos65 yum.repos.d]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search idreamsky.com vagrantup.com
nameserver 42.121.236.241
nameserver 8.8.8.8

重启 network 之后就能看到 dns 修改了.注意如果这里如果直接修改 /etc/resolv.conf 那么重启电脑 or 重启 network , resolv.conf 会恢复原状.因为它是根据 ifcfg-eth0来生成的..

如何刷新 dns cache

Linux下DNS缓存实现通常有两种方式:

  • 一种是用DNS缓存程序NSCD(name service cache daemon)负责管理DNS缓存。
  • 一种实现DNS缓存则是用Bind来架设Caching Name Server来实现。

如果是清除NSCD上的Cache,可重新启动NSCD服务来达成清除DNS Cache的效果。用这个命令: # service nscd restart 或是 #/etc/init.d/nscd restart

如果是清除BIND服务器上的CACHE,用这个命令: # rndc flush

如果你的DNS服务器是用dnsmasq实现的,用下面这个命令: $ sudo /etc/init.d/dnsmasq restart

注:DNSmasq是一个轻巧的,容易使用的DNS服务工具,它可以应用在内部网和Internet连接的时候的IP地址NAT转换,也可以用做小型网络的DNS服务。

Mac os x 刷新dns cache sudo killall -HUP mDNSResponder

DNS 参阅: here

sudo command 找不到命令

编译 nginx 的时候把 nginx 放在了/usr/local/bin 下 用 sudo 执行的时候提示找到不到命令 很奇怪 切换到 root 去执行 nginx 却可以 看了下 root 的path 明明有包含这个路径…

查了下资料后发现是 sudo 的原因

我们使用 sudo visudo 可以看到

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Preserving HOME has security implications since many programs
# use it when searching for configuration files. Note that HOME
# is already set when the the env_reset option is enabled, so
# this option is only effective for configurations where either
# env_reset is disabled or HOME is present in the env_keep list.
#
Defaults    always_set_home

Defaults    env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults   env_keep += "HOME"

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

这里每次调用 sudo 应用的环境变量是../sbin:/bin:/usr/sbin:/usr/bin 难怪找不到..

一个简单解决方案就是 vi ~/.bashrc

1
alias sudo="sudo env PATH=$PATH"

因为系统预装的 sudo 在编译时缺省使用了 —with-secure-path 参数,因此当前用户使用 sudo 时环境变量 $PATH 被覆盖,通过添加上面那行别名设置,就会在执行 sudo 时把当前的 $PATH 的值再套用上,达到想要的效果。

上面这种 alias 并不是最完美的方式 有时候我们可能会查看一些 sudo 的配置 比如 sudo -l 会翻译成 sudo env PATH=$PATH -l 但是这个命令是无效的…因为 -l 等参数必须放在env 前面..所以我们还是用sudo visudo手动修改 secure_path 的值把.

当然,最根本的解决办法还是重新编译安装 sudo,编译时不使用 —with-secure-path 参数即可。有兴趣可以试下

参阅:

locate: command not found

没有 locate…

1
2
# yum -y install mlocate
# updatedb

系统时间问题

时区数据文件在 /usr/share/zoneinfo 内,在该目录内会找到 /usr/share/zoneinfo/America/New_York 这个时区档。 而时区配置文件在 /etc/sysconfig/clock ,且目前的时间格式在 /etc/localtime ,所以你应该这样做:

1
2
3
4
5
6
7
8
9
10
11
12
[root@vagrant-centos65 ~]# date #查看当前时间
Mon Aug  4 10:21:42 UTC 2014
# utc时间 少了8小时 应该是时区不对
[root@vagrant-centos65 ~]# cat /etc/sysconfig/clock
ZONE="Etc/UTC"
[root@vagrant-centos65 ~]# echo "ZONE=\"Asia/Shanghai\"" > /etc/sysconfig/clock
[root@vagrant-centos65 ~]# cat /etc/sysconfig/clock
ZONE="Asia/Shanghai"
[root@vagrant-centos65 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp: overwrite `/etc/localtime'? y
[root@vagrant-centos65 ~]# date
Mon Aug  4 18:25:28 CST 2014

有时候可能对系统时间精度要求比较高 那么这个时候我们需要进行时间同步

1
2
3
4
5
6
7
8
9
# yum -y install ntp
# ntpdate cn.pool.ntp.org
# /etc/init.d/ntpd start
# chkconfig ntpd on

[root@vagrant-centos65 ~]# date; hwclock -r
Mon Aug  4 18:42:25 CST 2014
Mon 04 Aug 2014 06:42:24 PM CST  -0.048707 seconds
#软硬件时间一样 如果不一样 需要执行 hwclock -w 写入 bios

很多关于时区请看鸟哥文档

安装man pages

1
2
yum install man-pages
man 7 ascii

Comments