热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安装CentOS后的系统配置及软件安装备忘

 安装CentOS后的系统配置及软件安装备忘html{font-family:Times,serif;font-size:12pt}.title{text-align:center

 

安装 CentOS 后的系统配置及软件安装备忘

 

Table of Contents

  • 1 Linux 自举过程
    • 1.1 启动第一步(加载BIOS)
    • 1.2 启动第二步(读取MBR)
    • 1.3 启动第三步(Boot Loader / Grup)
    • 1.4 启动第四步(加载内核)
    • 1.5 启动第五步(用户层init依据inittab文件来设定运行等级)
    • 1.6 启动第六步(init进程执行rc.sysinit)
    • 1.7 启动第七步(启动内核模块)
    • 1.8 启动第八步(执行不同运行级别的脚本程序(/etc/rc.d/rc.$RUNLEVEL # $RUNLEVEL为缺省的运行模式))
    • 1.9 启动第九步(执行/etc/rc.d/rc.local)
    • 1.10 启动第十步(执行/bin/login程序,进入登录状态)
  • 2 Linux 重要目录说明
  • 3 Make工具
  • 4 操作系统安装
    • 4.1 安装镜像获取
    • 4.2 操作系统安装
    • 4.3 镜像地址设置
  • 5 网络配置和管理
    • 5.1 配置IP地址
    • 5.2 配置DNS
    • 5.3 主机名称配置
    • 5.4 常用命令
      • 5.4.1 /etc/init.d/network restart
      • 5.4.2 netstat
      • 5.4.3 traceroute
      • 5.4.4 tcpdump
  • 6 用户管理
  • 7 软件安装
    • 7.1 版本管理软件
      • 7.1.1 Git安装
      • 7.1.2 将本机的 SSH Key 注册到 GitHub
    • 7.2 编译器
    • 7.3 Emacs
      • 7.3.1 Emacs安装
      • 7.3.2 Emacs 配置
    • 7.4 一键安装
  • 8 用户自定义配置
    • 8.1 bash脚本
    • 8.2 git
    • 8.3 一键配置
  • 9 总结

1 Linux 自举过程

1.1 启动第一步(加载BIOS)

当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。

1.2 启动第二步(读取MBR)

硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。

系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。

1.3 启动第三步(Boot Loader / Grup)

Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。

Boot Loader有若干种,其中Grub、lilo和spfdisk是常见的Loader。

我们以grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。

系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。

1.4 启动第四步(加载内核)

根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。

系统将解压后的内核放置在内存之中,并调用startkernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

1.5 启动第五步(用户层init依据inittab文件来设定运行等级)

内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。

其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:

  • 0: 关机
  • 1: 单用户模式
  • 2:无网络支持的多用户模式
  • 3:有网络支持的多用户模式
  • 4:保留,未使用
  • 5:有网络支持有X-Window支持的多用户模式
  • 6:重新引导系统,即重启

1.6 启动第六步(init进程执行rc.sysinit)

在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件,里面的脚本够你看几天的。

1.7 启动第七步(启动内核模块)

具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

1.8 启动第八步(执行不同运行级别的脚本程序(/etc/rc.d/rc.$RUNLEVEL # $RUNLEVEL为缺省的运行模式))

根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

1.9 启动第九步(执行/etc/rc.d/rc.local)

你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:

rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

1.10 启动第十步(执行/bin/login程序,进入登录状态)

此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。

2 Linux 重要目录说明

根目录()下一般有如下目录 * bin 可执行文件目录

  • sbin/ 与/bin/目录一样放置可执行文件,不过一般是root用户才用到的可执行文件。
  • usr/
  • boot/
  • etc/
  • proc/
  • dev/ 设备文件目录。
  • home/ 用户目录。
  • lib/ 或 lib64/ 库文件目录。
  • lost+found/ 回收目录。
  • media/
  • mnt/ 挂载设备对应的设备文件。
  • opt/
  • root/ root用户的用户目录。
  • selinux/
  • srv/
  • sys/ 系统目录。
  • tmp/ 临时目录。该目录的访问权限为0777,也就是说任何用户对该目录都有全部的访问权限。
  • var/

3 Make工具

我们可以利用 Make 工具帮助我们自动完成大部分繁琐且重复的配置及安装工作。大致上, Make 程序依如下流程工作:

if target is a leaf then
    return
fi

bExecuteCommand = false
if target isn not exists then
    bExecuteCommand = true
fi

for file in all dependency files; do
    make(file)
    if file is newer than target then
        bExecuteCommand = true
    fi
done

if bExecuteCommand then
    Execute Command
fi

4 操作系统安装

4.1 安装镜像获取

可从 https://www.centos.org/download/ 下载 CentOS 安装镜像。我用的是 CentOS 7。

4.2 操作系统安装

可选方式有:

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

4.3 镜像地址设置

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

  • step 1. 备份 当镜像失效时,可重新使用原始镜像
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    
  • step 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
    
  • step 3. 之后运行 yum clean all && yum makecache 生成缓存

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

5 网络配置和管理

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

yum install -y net-tools

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

5.1 配置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 # 网关

5.2 配置DNS

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

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

初始时,该文件为空,所以,如果我们在一开始就将网络接口配置为 static 方式(见 /etc/sysconfig/network-scripts/ifcfg-etho0 文件的 BOOTPROTO 选项),那么,我们还是不能访问外网。所以,我们可以先将 BOOTPROTO 选项配置为 dhcp,等到我们执行 /etc/init.d/network restart 命令自动生成了 DNS 服务器地址后,再将 BOOTPROTO 改为 static。

5.3 主机名称配置

vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=liuy

5.4 常用命令

5.4.1 /etc/init.d/network restart

若重新配置了IP和DNS可使用该命令使修改生效。

5.4.2 netstat

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

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

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

5.4.3 traceroute

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

5.4.4 tcpdump

用于网络抓包。

6 用户管理

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

添加用户的命令如下:

useradd user

之后为该用户设置密码:

passwd user

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

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

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

user    ALL=(ALL)    ALL

7 软件安装

7.1 版本管理软件

7.1.1 Git安装

yum install -y git

7.1.2 将本机的 SSH Key 注册到 GitHub

具体步骤如下:

  • step 1. 查看本机是否已有 SSH Keys 如果在目录 ~/.ssh 下有 idrsa.pub 文件,则表明本机已有 SSH Keys,此时可以跳过第 2 步。
  • step 2. 生成新的 SSH Key 输入如下命令:
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    按照提示一步步往下走即可。

  • step 3. 将 SSH Key 添加到 ssh-agent
    ssh-add ~/.ssh/id_rsa
    
  • step 4. 将 SSH Key 添加到你的 GitHub 账户

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

ssh -T git@github.com

7.2 编译器

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

7.3 Emacs

7.3.1 Emacs安装

  • 源码安装
    • step 1. 源码下载 打开链接 https://www.gnu.org/software/emacs/history.html ,下载 24.3 的版本。
    • step 2. 依赖库安装 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
      
    • step 3. 编译、安装 跟大部分 Linux 下开源软件的源码安装步骤一样:./configure && make && make install
  • yum 安装
    yum install -y emacs
    

7.3.2 Emacs 配置

参见 https://github.com/ruleless/emacscfg

7.4 一键安装

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

.Phony:all
all:software emacsconf

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

emacsconf:
    cd emacscfg && $(MAKE)

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

8 用户自定义配置

8.1 bash脚本

当我们执行命令 la ~ 时,会发下如下几个文件:

  • .bash_profile .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
    
  • .bash_logout
    # ~/.bash_logout
    
  • .bash_history 记录相关用户的历史命令。
    git st
    git add -A .
    git st
    

8.2 git

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

8.3 一键配置

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

.Phony:all
all:conf

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

9 总结

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

  • step 1. 网络配置。 CentOS 7 在 minimal 模式下安装完成时默认是关闭了网络功能的,我们需要将其打开并配置好网络地址,以便完成接下来的操作。
  • step 2. yum 镜像地址设置。 此步骤为可选,但在大陆使用原始的国外镜像地址貌似有点慢,所以强烈推荐使用国内镜像。
  • step 3. 添加普通用户。 就算是自己用来练习的操作系统也不要总是工作在 root 用户下,一是可以避免误操作,二是在生产环境下大部分人都没有服务器的根用户密码。添加了普通用户之后,我们可以通过远程工具连接服务器来完成接下来的操作。
  • step 4. 手工安装 Git,并将本机的 SSH Key 注册到 GitHub 上的个人账户上。
  • step 5. 签出我个人的 CentOSConf 仓库 地址: https://github.com/ruleless/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.

Date: 2015-12-06T20:45+0800

Author: ruleless

Org version 7.9.3f with Emacs version 24

Validate XHTML 1.0

推荐阅读
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 本文详细介绍了 Java 中 org.w3c.dom.Node 类的 isEqualNode() 方法的功能、参数及返回值,并通过多个实际代码示例来展示其具体应用。此方法用于检测两个节点是否相等,而不仅仅是判断它们是否为同一个对象。 ... [详细]
  • 构建个人多节点Linux环境(CodeSheep)
    本文介绍如何通过虚拟机搭建一个多节点的Linux环境,这对于学习、实验和项目部署都具有重要意义。文章详细讲解了网络IP设置、节点间通信等关键步骤。 ... [详细]
  • CentOS7通过RealVNC实现多人使用服务器桌面
    背景:公司研发团队通过VNC登录到CentOS服务器的桌面实现软件开发工作为防止数据外泄,需要在RealVNC设置禁止传输文件、访问粘贴板等策略过程&# ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍了在Windows系统中如何配置Nginx以实现高效的缓存加速功能,包括关键的配置文件设置和示例代码。 ... [详细]
author-avatar
ppoujjh
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有