Linux 基础知识


简要

作为了一个服务端开发人员而言,不仅有强大的内功而且也需要对一些工具和运维方面的知识。Linux毋容置疑是每一个后端开发人员必须熟悉或者精通的“大法“之一。随着自己的成长和技术的沉淀,会发现自己对Linux的认识依然停留在一个初级阶段。”发愤图强“必须解决这个根本问题。

Linux 杂记

虚拟机网络类型

先从linux安装说起吧,先来看一下虚拟机的网络连接方式的选择。我们先看一下VMmare网络类型:NAT、Bridged和Host Only

  • NAT(Network Address Translation,网络地址转换),虚拟机的网卡连接到物理机器上的VMware某个特定VMnet(一般是VMnet8)上,VMware NAT Service充当路由的的作用,负责将虚拟机发送到VMnet的包进行地址转换之后发送到实际网络地址,再将实际网络返回的包进行转换之后通过VMnet发送给虚拟机。VMware DHCP Service负责IP地址的分配。这种网络笔记适合家庭网络直连也不会与实际网络地址出现IP冲突。
  • Bridged(桥接模式),通过物理主机架设的一个”网桥”,从而连入实际网络,所以虚拟机被分配与物理主机相同网段的IP地址。
  • Host-Only(仅主机模式),虚拟机的网卡一般会连在VMnet1上,但是物理机器并不提供任何路由服务。所以一般这种模式下的网络模式,虚拟机是无法连接外网的,只能和物理机器进行通信。

硬盘和分区

  • 磁盘在使用之前必须先分区,磁盘分区有主分区、扩展分区和逻辑分区。一块磁盘最多可以有四个主分区,其中一个主分区的位置可以用扩展分区替换,在这个扩展分区可以划分多个逻辑分区。需要注意的是一块硬盘最多只能有一个扩展分区,扩展分布不能直接使用,必须划分逻辑分区才可以使用。
  • 分区数量>4,一般分区组合都是:3primary+1extend或2p+1e或者1p+1e. 磁盘分区命名和编号 在Linux系统中,磁盘设备对应于系统中的特殊文件,一般放在”/dev”目录中。
  • 系统的第一块IDE接口的硬盘的第一个分区:/dev/hda1
  • 系统的第一块IDE接口的硬盘的第五个分区:/dev/hda5
  • 系统的第二块SCSI接口的硬盘的第一个分区:/dev/sdb1
  • 系统的第二块SCSI接口的硬盘的第五个分区:/dev/sdb5 对于分区编号,数字1-4只能留给主分区或者扩展分区,逻辑分区的编号只能从5开始。分区要求 Linux系统要有下面三个分区:
  • ”/“(根)分区,用来存放系统和文件。
  • swap(交换分区)虚拟内存,一般物理内存小于8G,则为物理内存的1.5倍;当超过8G一般为8-16G即可。
  • /boot linux系统的引导分区,用来存放系统的引导分区。 分区方案
  • 对于网站集群架构中的某个节点服务器分区,建议做如下设置: /boot =====> 100MB~200MB swap =====> 一般物理内存小于8G,则为物理内存的1.5倍;当超过8G一般为8-16G即可。 / 剩余磁盘空间
  • 针对数据库或者存储功能 /boot =====> 100MB~200MB swap =====> 一般物理内存小于8G,则为物理内存的1.5倍;当超过8G一般为8-16G即可。 / 5~20GB /data 存储数据的分区。
  • 当然也可以设置/usr,/home、/usr和/var 这种方式下优点是当你系统出现损坏可以只需要重新安装操作系统到/就可以了,其他保持不变。缺点是维护起来比较麻烦。Linux安装基本的软件 linux在安装时应该选择最小化原则安装,下面安装完了之后可以补充安装一些组软件比如:
yum groupinstall "Compatibility libraries" "Base" "Development tools"
yum groupinstall "Dial-up Networking Support" "debugging tools"
#通过yum groupinfo 包组名来查看相应的安装信息。
yum groupinfo "Base"
yum grouplist

配置系统网络

你可以通过系统提供的setup来设置,或者通过/etc/sysconfig/network-scripts/ifcfg-eth0

emacs /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 ====第一块网卡设备名字
HWADDR=00:1C:42:1C:32:F8 ==== 以太网mac地址
TYPE=Ethernet ===上网类型
UUID=ed2baa48-ffeb-4ae1-baac-41c7690e5d7f === 通用唯一识别码
ONBOOT=yes == 在下次启动机器是否激活网络设备
NM_CONTROLLED=yes === 是否通过NetworkManager管理网络设备。
BOOTPROTO=dhcp ==== 启动协议,有三种方式none|bootp|dhcp,如果是静态的ip,需要设置成none;如果是动态获取的设置成dhcp。
IPADDR=10.2.1.12 === 静态ip地址
NETMASK=255.255.255.0 === 子网掩码
DNS2 = 8.8.8.8
GATEWAY=10.2.1.254 === 默认网关
DNS1 = 10.2.1.1
[root@localhost ~]# vi /etc/sysconfig/network
HOSTNAME=c64     #修改主机名,重启生效
GATEWAY=192.168.1.1    #修改默认网关,如果上面eth0里面不配置网关的话,默认就使用这里的网关了。
PEERDNS=yes #允许从DHCP处获得的DNS覆盖本地DNS
USERCTL=no #不允许普通用户修改网卡
修改DNS
[root@localhost ~]# vi /etc/resolv.conf   #修改DNS信息
nameserver 102.102.102.102
nameserver 8.8.8.8

设置完成之后,保存并重启etho
ifdown etho
ifup etho

注:要在ifcfg-etho设置相应的dns等,它会覆盖掉/etc/resolv.conf.

关闭selinux,清空iptables

selinux是对于强制访问控制的实现,但是大多数生产环境都是禁用掉的。我们先来禁用掉。

[root@brian ~]# sed –i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config   #修改配置文件则永久生效,但是必须要重启系统。
[root@brian ~]# grep SELINUX=disabled /etc/selinux/config
SELINUX=disabled     #查看更改后的结果
[root@brian ~]# setenforce 0 #临时生效命令
[root@brian ~]# getenforce      #查看selinux当前状态
Permissive

清空iptables,代码如下:

[root@brian ~]# iptables –F     #清理防火墙规则
[root@brian ~]# iptables –L     #查看防火墙规则
[root@brian ~]# /etc/init.d/iptables save   #保存防火墙配置信息

更新yum源

由于原始的源对于国内来说很慢,所以我们需要更新一下国内的源,我一般主要用163的源。

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo #下载163源
yum clean all  #清空yum缓存
yum makecache  #建立yum缓存
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*       #导入签名KEY到RPM
yum  upgrade -y   #更新系统内核到最新
yum install lrzsz ntpdate sysstat -y # 安装一些必要的软件
# 安装yum-priorities优先级源,优先级工具是yum-plugin-priroites插件,用于给yum源划分等级。1-99代表优先级,其中1代表优先级最高。
# 我们可以设置官方yum源最高设置为1,epel yum源次之设置为2,puppetlabs第三,需要设置相对应的repo文件最后priority=对应数字。
yum install yum-priorities
# 如果想使用优先级,需要先开启。
nano /etc/yum/pluginconf.d/priorities.conf
[main]
enabled = 1
# 设置相应的优先级
nano /etc/yum.repos.d/CentOS-Base.repo
priority=1
nano /etc/yum.repos.d/epel.repo
priority=2

Linux运行过程和运行级别

Linux默认7中运行级别,根据这7种运行级别来运行不同的工作模式。这7中运行级别分别为:

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动。
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆。
  • 运行级别2:多用户状态(没有NFS)。
  • 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式。
  • 运行级别4:系统未使用。
  • 运行级别5:X11控制台,登陆后进入图形GUI模式。
  • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。

运行级别工作原理

  • 在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service)。
  • 在/etc/rc.d下有7个名为rcN.d的目录,其中N代表从0-6对应系统的7个运行级别。
  • rcN.d目录下都是一些符号链接文件,这些链接文件都指向init.d目录下的service脚本文件,命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字。
  • 系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件 对于以K开头的文件,系统将终止对应的服务 对于以S开头的文件,系统将启动对应的服务
  • 查看运行级别用:runlevel
  • 进入其它运行级别用:init N
  • 另外init0为关机,init 6为重启系统。

Linux启动过程

开机BIOS自检->MBR引导->grub引导菜单->加载内核kernel->启动init进程->读取inittab文件,执行rc.sysinit,rc等脚本->启动mingetty,进入系统登陆界面。

总结

Linux博大精深,学习Linux在于不断的积累和经验。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Debian 9上安装Linux,Apache,MariaDB,PHP(LAMP)堆栈

“LAMP”堆栈是一组开源软件,通常安装在一起以使服务器能够托管动态网站和Web应用程序。这个术语实际上是一个缩写,代表L inux操作系统,带有A pache...

3262
来自专栏cloudskyme

搭建hadoop1.2集群

环境准备 我使用的是vmware workstation,首先安装ubuntu 12.04,安装完成后通过vmware的clone,clone出两个虚机,设置的...

3043
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装Munin监视工具

Munin是一个系统,网络和基础设施监控应用程序,通过Web浏览器以图形形式提供信息。它是围绕客户端 - 服务器架构设计的,可以配置为监控它所安装的机器(Mun...

1000
来自专栏云计算教程系列

如何在Ubuntu 13.10上从Binary Tarballs安装MariaDB

目前,MariaDB可以直接替代MySQL而不需要任何额外代码配置。本文将介绍如何在Ubuntu 13.10 VPS上安装MariaDB5.5.34 x86_6...

1153
来自专栏虚拟化云计算

oVirt之软件架构全剖析

本文是从软件架构设计的角度剖析oVirt的vdsm,另外还有一篇是从功能架构设计的角度剖析oVirt。

1934
来自专栏CaiRui

linux基础命令

1.mkdir 创建目录   mkdir -p 循环创建目录   touch 创建文件 2.ls 显示目录或文件   ls -ld=ll 以长目录式查看   l...

2448
来自专栏抠抠空间

django自带权限机制

权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活;用好权限机制,能让系统更加强大和健壮。因此,基于Django的开发,理清Django权...

1493
来自专栏JetpropelledSnake

Python Web学习笔记之Cookie,Session,Token区别

2507
来自专栏云计算教程系列

如何在Ubuntu上安装Buildbot

Buildbot是一个基于Python的持续集成系统,用于自动化软件构建,测试和发布。它使用Python的Twisted库来处理buildmaster和多个wo...

2216
来自专栏腾讯云Elasticsearch Service

Elasticsearch跨集群数据迁移之离线迁移

用户在腾讯云上自建的ES集群或者在其它云厂商购买的ES集群,如果要迁移至腾讯云ES,用户可以根据自己的业务需要选择适合自己的迁移方案。如果业务可以停服或者可以暂...

2.6K8

扫码关注云+社区

领取腾讯云代金券