操作系统安装

安装镜像获取

可从 centos.org 下载 CentOS 安装镜像。我用的是 CentOS 7。

操作系统安装

可选方式有:

  1. DVD光盘安装
  2. USB安装
  3. 安装到虚拟机中

镜像地址设置

可从 centos.org 官网上查看有哪些可用的镜像地址。下面以将镜像地址设置为阿里云镜像来说明设置步骤:

  1. 备份 当镜像失效时,可重新使用原始镜像

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

  2. 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/ 此处用的是阿里云镜像

    • CentOS 5 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
    • CentOS 6 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
    • CentOS 7 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  3. 之后运行 yum clean all && yum makecache 生成缓存

另外需要说明的是,很多系统镜像在安装完成后默认是没有开启网络功能的,我们需要配置并开启网络功能后才能执行此步操作。

网络配置和管理

配置IP地址

目录 /etc/sysconfig/network-scripts 下有名为 ifcfg-eth0 的脚本,它配置了网络接口 eth0 的各项属性

HWADDR=00:0C:29:D4:D9:DD
TYPE=Ethernet
UUID=b9736563-22f5-42d5-9f41-9cd6c3e22683
ONBOOT=yes # 操作系统安装完成时,该选项默认为no,我们需要手工改为yes才能启用系统的网络功能
NM_CONTROLLED=yes
BOOTPROTO=static # 指定IP地址为静态IP(static)或动态IP(DHCP)
IPADDR=192.168.1.109 # IP地址(BOOTPROTO=static时有效)
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.1.1 # 网关
DNS1=202.96.128.86
DNS2=202.96.134.33

配置DNS

/etc 目录下有名为 resolv.conf 的脚本,由它来指定本机的 DNS 服务器

; generated by /sbin/dhclient-script
nameserver 202.96.128.166
nameserver 202.96.134.133

在 dhcp 模式下我们不用关注该文件,因为系统会自动帮我们找到合适的DNS域名服务器;但在 static 模式下,我们就需要自己来维护该脚本了。

主机名称配置及 host 绑定

一般来说,我们可以通过文件 /etc/sysconfig/network 来永久地配置本机的主机名称,内容如下:

NETWORKING=yes
HOSTNAME=centos66

不过在 CentOS7 中,主机名称的配置放到了 /etc/hostname 文件中。

在完成上面的配置之后,我们的主机名称除了能在命令提示符中显示之外,似乎没有其他用处。 我们希望主机名能替代具体的IP地址来使用,这就需要将主机名映射到具体的IP地址了。 主机在请求域名解析服务的时候会先查看本机的 /etc/hosts 文件,如果请求的域名在该文件中有匹配行, 那就直接返回该匹配行中的IP地址。/etc/hosts 文件中的内容形如:

127.0.0.1   rhel
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

常用命令

注意事项

安装 CentOS 7 时,选择了 minimal install 的话,是没有安装网络组件的。 所以,ifconfig 之类的命令式没有的,在配置好网络功能后可以通过 yum install -y net-tools 来安装网络组件。

另外也可以用 ip 命令来暂时替代 ifconfig 使用。

systemctl op network

op 可为:status/start/restart/stop

我们可使用该命令来管理 network 服务。

netstat

netstat 命令用于显示网络连接、路由表和网络接口的信息,可以让用户查看系统当前的网络连接情况。

network命令各选项所对应的功能:

  • -a 显示所有套接字的状态
  • -n 打印数字IP地址
  • -o 显示关联进程
  • -r 打印路由选择表

traceroute

traceroute命令用于追踪网络包的发送路径。

tcpdump

用于网络抓包。

用户管理

在安装好操作系统并配置完网络地址后,接下来,我们在系统中添加普通用户。

我们通过 useradd user 来添加用户;之后为该用户设置密码:passwd user

如果我们需要查看系统下的所有用户或组信息可用如下命令:

  • cat /etc/passwd 查看所有用户信息
  • cat /etc/group 查看所有组信息

有时候,普通用户需要临时做一些超级用户才有权限做的事情,例如,安装软件。 我们可以通过赋予普通用户 sudoer 身份的方式来达到此目的。 赋予普通用户 sudoer 身份只需在 /etc/sudoer 添加一行:

user    ALL=(ALL)    ALL

软件安装

版本管理软件

Git安装

一般我们直接通过 yum 安装:

yum install -y git

将本机的 SSH Key 注册到 GitHub

具体步骤如下:

  1. 查看本机是否已有 SSH Keys 如果在目录 ~/.ssh 下有 id_rsa.pub 文件,则表明本机已有 SSH Keys,此时可以跳过第 2 步。
  2. 生成新的 SSH Key 输入 ssh-keygen -t rsa -b 4096 -C "your_email@example.com",按照提示一步步往下走即可。
  3. 将 SSH Key 添加到 ssh-agent ssh-add ~/.ssh/id_rsa
  4. 将 SSH Key 添加到你的 GitHub 账户

执行完上面的操作我们就可以连接到个人的 GitHub 仓库了,我们可以先用如下命令测试一下:

ssh -T git@github.com

编译器

linux 平台下一般安装的编译器主要有 gcc/g++/clang/clang++

  • gcc/g++ 安装命令:yum install -y gcc gcc-g++
  • clang/clang++ 早期的 CentOS 版本不能通过 yum 的方式安装 clang,所以只能通过源码安装。 通过源码安装 clang 比较繁琐,依赖库多,编译也慢。而在 CentOS 7 中我们可以直接通过 yum 源安装。

Emacs

Emacs安装

Emacs 是可通过 yum 源来安装的,不过,在 CentOS 7 之前的版本中,yum 源只提供了 24.3 以下的版本。 此时,我们就需要通过源码来安装了。

源码安装步骤如下:

  1. 源码下载 打开链接 GNUEmacs ,下载 24.3 的版本。
  2. 依赖库安装 Emacs24.3 所需的依赖库在下面给出。
  3. 编译、安装 跟大部分 Linux 下开源软件的源码安装步骤一样:./configure && make && make install

Emacs24.3 所需的依赖库如下:

yum -y groupinstall "Development Tools"
yum -y install gtk+-devel gtk2-devel
yum -y install libXpm-devel
yum -y install libpng-devel
yum -y install giflib-devel
yum -y install libtiff-devel libjpeg-devel
yum -y install ncurses-devel
yum -y install gpm-devel dbus-devel dbus-glib-devel dbus-python
yum -y install GConf2-devel pkgconfig
yum -y install libXft-devel

Emacs 配置

参见 我的Emacs配置

一键安装

我们可以通过 Make 实现上述软件的一键安装,包括 Emacs 的自动配置。下面给出 Makefile 脚本:

.Phony:all
all:software

software:
    yum install -y gcc gcc-g++
    yum install -y clang
    yum install -y emacs

emacs:
    cd emacscfg && $(MAKE)

观察到,我们并没有在 Makefile 中写入 Git 的安装脚本。这是因为我们的 Makefile 文件是托管到 GitHub 中的, 所以,我们需要先安装好 Git 之后才能签出该脚本文件;所以在执行该脚本文件的时候 Git 已安装到了系统中。

用户自定义配置

bash脚本

当我们执行命令 ls -a 时,会发现如下几个文件:.bash_profile/.bashrc/.bash_logout/.bash_history

.bash_profile 是关联具体用户的,它会在相关用户登录时被执行。 我们可以在该文件中写入脚本程序来实现个性化配置。另外,使用 source 命令可使变更立即生效。

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs
PATH=$PATH:$HOME/bin:.
export PATH

# ssh start
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

.bashrc 该文件实际是通过 .bash_profile 来加载的,主要用于加载系统 /etc/bashrc 脚本以及配置命令别名等。

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

alias ll="ls -ls"
alias la="ls -a"
alias pa="ps -ejf"
alias g="git"

# User specific aliases and functions

git个性化配置

用户目录下有一个 .gitconfig 文件,我们可以通过修改该文件来实现我们的个性化定制。

一键配置

我们事先定义好个人的配置文件,然后,在 Makefile 写入安装程序,跟一键配置相关的 Makefile 脚本如下:

.Phony:all
all:conf

conf:
    cp ./bash/.bash_profile ~/
    cp ./bash/.bashrc ~/
    cp ./bash/.bash_logout ~/
    cp ./gitconf/.gitconfig ~/

总结

CentOS 是目前生产环境中常用的服务器系统,本文从开发人员角度出发,旨在构建基于 CentOS 7 的开发环境。 本文所涉及的各个操作,步骤总结如下:

  • step 1. 网络配置 CentOS 7 在 minimal 模式下安装完成时默认是关闭了网络功能的,我们需要将其打开并配置好网络地址,以便完成接下来的操作。

  • step 2. 添加普通用户 就算是自己用来练习的操作系统也不要总是工作在 root 用户下,一是可以避免误操作,二是在生产环境下大部分人都没有服务器的根用户密码。 添加了普通用户之后,我们可以通过远程工具连接服务器来完成接下来的操作。

  • step 3. yum 镜像地址设置 此步骤为可选,但在大陆使用原始的国外镜像地址貌似有点慢,所以强烈推荐使用国内镜像。

  • step 4. 手工安装 Git,并将本机的 SSH Key 注册到 GitHub 上的个人账户上

  • step 5. 签出我个人的 CentOS_Conf 仓库 该仓库下有我已经写好的 Makefile 安装脚本,执行 Make 即可进入自动安装。

执行完上面的操作之后,我们还需要手工安装一些必须得通过源码安装的软件。当前主要包括:

  • GNU Global GNU GLOBAL is a source code tagging system that works the same way across diverse environments, such as Emacs editor, Vi editor, Less viewer, Bash shell, various web browsers, etc.

本文作者ruleless, 欢迎评论、交流。
转载请务必标注出处: 安装 CentOS 后的系统配置及软件安装备忘


«Previous:   并发编程基础

»Next:         lisp遍历目录