Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/widuu/linux_course
linux基础教程-linux服务器基础教程
https://github.com/widuu/linux_course
Last synced: about 2 months ago
JSON representation
linux基础教程-linux服务器基础教程
- Host: GitHub
- URL: https://github.com/widuu/linux_course
- Owner: widuu
- Created: 2014-03-28T13:03:01.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2014-04-02T09:26:14.000Z (almost 11 years ago)
- Last Synced: 2023-08-21T19:58:08.970Z (over 1 year ago)
- Size: 180 KB
- Stars: 10
- Watchers: 2
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
###运行级别和启动流程
>只有了解linux的启动流程才能更好的去优化和配置Linux,譬如说一台服务器我为什么要保证3,5启动软件即可,是怎么启动的呢?
1. bios找到mbr主引导区,这个东西才512字节,深入的可以查询一下
2. 进入grub界面找启动内核
3. 读取kernel内核文件 /boot/vmlinuz-*
4. 读取init的镜像文件 /boot/initrd-*
5. init读取/etc/inittab
6. 读取启动级别(id:3:initdefault)
7. 读取/etc/rc.d/rc.sysinit,完成时间、主机名称,还要分区表/etc/fstab
8. 读取/etc/rc.d/rc脚本,通过脚本转换3级别,然后启动/etc/rc.d/rc3.d/下所有S来头的服务,不启动目录下K开头的服务
9. 进入登录界面---
#####我们服务器设置的一般控制inittab来控制是图形界面还是终端 sudo init 0 关机
>vim /etc/inittab #init启动时候加载的启动级别
0 关机
1 单用户
2 不支持nfs(网络文件系统)
3 终端页面
4 未被使用
5 图形界面
6 重启>当你是终端的时候你会发现你登录的是3级别,如果是X11图形界面的时候是5,可以修改`id:3:initdefault`,来修改启动级别
>如何设置开机启动和开机启动的原理
>我们如上还是终端启动,我们就进入/etc/rc.d/rc3.d 我们看到S开头和K开头,你可以理解成start和kill s开头的都启动K开头的都是不启动 ubuntu在 /etc/rc3.d/
#centos设置开机启动
>chkconfig mysql on #设置开机启动
>chkconfig --list|grep mysql #查看哪些启动级别,发现除了0,1,6关闭其他都开启
>cd /etc/rc.d && ls -l #rcx.d是启动级别
>cd rc3.d && ll|grep mysql #显示如下,当然你进入2,4,5也是一样的,这就是说为什么服务器要保证开机3,5启动
lrwxrwxrwx 1 root root 16 3月 14 19:22 S64mysqld -> ../init.d/mysqld#ubuntu设置开机启动
>sudo apt-get install dialog rcconf #安装rcconf
>sudo rcconf #出现图形界面可以设置>一般我们使用apt-get或者yum安装的,也就是仓库源安装的都可以使用`service XXX start`,其实这种东西存储在/etc/init.d/文件夹下,你可以自己写脚本,放到/etc/init.d/使用`chmod a+x xxx`给权限,然后`service xxx start`启动,譬如我们二进制安装的nginx,然后自己手动写个nginx启动脚本。
![rcconf](http://widuu.u.qiniudn.com/linux/rcconf.png)---
###压缩与解压
>这个我们需要会几个常用的压缩包的解压和压缩,解压是因为万一你有二进制包要安装,你带会解压吧!压缩-你要备份一个网站不可能一个文件一个文件备份吧~所以学习压缩,这里边我讲下常用的tar tar.gz常见,.tar.bz2我记得php下载官网好像就有这个格式,为什么还学zip,兄弟,因为windows平台对zip支持很好,万一你要下载网站日志到windows上分析呢~是吧~ widuu建议这几个必会
####tar压缩包
>tar cf file.tar file
#联想记忆
#c create
#f file>tar xf file.tar -C /data
#x extract 记住x
#-C 这是解压到哪里去#查看压缩包
>tar tf file.tar.gz####tar.gz压缩包
>tar czf file.tar.gz file
#联想记忆
#c create
#z gz
#f file>tar zxf file.tar.gz -C /data
#x extract 记住x
#-C 这是解压到哪里去#查看压缩包
>tar tf file.tar.gz
####zip压缩包>yum install unzip zip -y #安装包
>unzip file.zip #解压
>unzip -l file.zip #查看压缩包中的内容
>zip file.zip file #压缩####tar.bz2
>tar jxf file.tar.bz2 #解压
>>tar tf file.tar.bz2 #查看压缩包内容
>tar jcf file.tar.bz2 file #压缩###网络配置
####1. 修改ip 只能暂时的,重启就失效了
ifconfig eth0 192.168.1.1
ifconfig eth0 192.168.0.2 netmask 255.255.255.0
#修改dns
route add default gw 192.168.1.1####2. 修改网络配置文件
>现在用的最多的应该就是centos和ubuntu这两个吧,我就拿这两个做讲解,这个拖拖的你带会配置万一让你修改dhcp到static,我擦 修改错了,这个除了机房能控制,你购买的代理商都很难再弄上了~~~
#centos配置
>cd /etc/sysconfig/network-scripts/#centos配置
>vim /etc/sysconfig/netword-scripts/ifcfg-eth1 #针对自己的网卡
DEVICE=eth1 #网卡名称
TYPE=Ethernet #网卡类型
IPADDR=192.168.1.1 #IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.1.1 #网卡
DNS1=202.102.224.68 #DNS
DNS2=8.8.8.8
ONBOOT=yes #主机启动加载
NM_CONTROLLED=yes #实施生效,修改后不需要重启网卡立即生效
BOOTPROTO=static #静态ip>service network restart #重启网卡
>vim vim /etc/resolv.conf #修改DNS
nameserver 202.102.224.68
nameserver 8.8.8.8
#ubuntu 配置
>vim /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.108
netmask 255.255.255.0
gateway 192.168.1.1#修改dns
vim /etc/resolv.conf
nameserver 8.8.8.8#重启生效
/etc/init.d/networking restart
###防火墙设置####iptables
#开启防火墙
>service iptables start
#开机启动
>chkconfig iptables on
#保存策略文件在 /etc/sysconfig/iptables -- centos
iptabels [-t 表名]
>iptables -t nat -L #查看nat表
>iptables -L #查看防火墙,默认是filter
>iptables -F #删除防火墙 -X清除自定义链接 -Z清除所有链统计
>service iptables save #保存防火墙策略
>service iptables restart #重启
>iptables -I INPUT -s 0.0.0.0 -j ACCEPTiptables
-A 追加规则链 再最后加入此规则
-I INPUT 插入INPUT
-D 链 删除链
-P 如果策略值缺省就强制使用此策略链
-i 输入网卡
-o 输出网卡
-p 协议
-s 源 ip
-d 目标ip
-j 动作
iptables -A INPUT -i eth0 -p all -s 源ip --sport 源端口 -d 目标ip --dport 目标端口 -j 动作
#常用模块状态
>iptables -I INPUT 1 -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许192.168.1.109登录ssh端口
>iptables -A INPUT -i eth0 -p tcp -s 192.168.1.109 --dport 22 -j ACCEPT
#禁止这个IP访问我的80端口
>iptables -A INPUT -i eth0 -p all -s 192.168.1.108 --dport 80 -j ACCEPT
>iptables -D INPUT 1 #删除第一条规则>iptables -A INPUT -m mac --mac-source 00:00:00:00:00 -j DROP #禁止mac地址访问我
>iptables -t filter -P INPUT DROP #默认规则清除所有设置后的所有端口,注意哈,当初我学习的时候,第一个设置的,结果我自己上不去了(最后)####一般服务器简单设置实例
iptables -F
#内部网络使用
iptables -A INPUT -i lo -j ACCEPT
#状态连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#允许ssh
iptables -A INPUT -p tcp --dport 22 -s x.x.x.x -j ACCEPT
#允许mysql
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
#允许ftp
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#允许邮件服务器
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
#关闭掉其他所有
iptables -P INPUT DROP
#保存防火墙规则
service iptables save
#重启生效
service iptables restart
#####selinux
>sestatus #查看selinux的状态
>vim /etc/selinux/config
SELINUX=disabled #禁用selinux
>reboot #重启服务器才能生效###软件安装yum
####光盘安装
>这个如果是服务器的话,估计很少用到,也不可能谁没事就挂载个光盘来吧!当然你没事你可以做测试玩~
#####首先,你要挂载关盘
mount /dev/cdrom /media
#####修改源
#进入源仓库配置文件
cd /etc/yum.repos.d/#移除根仓库源 不然会首先找这个
mv CentOS-Base.repo CentOS-Base.repo.bak#修改配置信息
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/
#关闭签名
gpgcheck=0
#开启原件源仓库
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6#####安装软件
>rpm -ivh xxx.rpm #软件的时候,可能依赖包没安装,最可能的是你安装的依赖会很多,所以我们用yum
>yum list #查看软件列表
>yum install mysql #安装mysql 如果你感觉输入y比较烦,就yum install mysql -y
>rpm -qa|grep mysql#查看安装mysql的一些包和依赖包
>yum remove mysql #卸载,可能卸载掉一些依赖库,但是这些依赖库可能对你还很有用
>rpm -e xxxx #单个卸载 --nodeps 是强制卸载#####修改镜像源
>这个我们经常使用,因为我的服务器一般都在国内,一般安装好的都是centos的原有镜像,速度来说肯定没有国内快,所以我就换成国内的镜像源,一般我用的是163的,因为换太简单了,当然你也可以自己手动写,没有什么技术含量
>cd /etc/yum.repos.d/ #进入
>mv CentOS-Base.repo CentOS-Base.repo.bak #备份
>wget http://mirrors.163.com/.help/CentOS6-Base-163.repo #下载
>mv CentOS6-Base-163.repo CentOS-Base.repo
>yum makecache #清楚本地缓存
#按照这种格式就可以填写你自己的仓库源 其中$releasever是版本,我的环境是6,$basearch我的是i386
[base]
name=CentOS-$releasever - Base - 163.com #镜像源名称
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/ #镜像源地址
gpgcheck=1 #gbk签名
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #gpk签名地址
#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6>yum makecache
>yum list####查看服务器进程
>ps -ef |grep httpd #查看进程
>pstrese | grep httpd #从进程树查看>netstat -tunpl | grep 80
-t tcp
-u udp
>uptime #显示登录信息和平均负载
>who #显示正在登录的用户#####关闭进程
>pkill mysql
>kill -9 pid
###修改主机名称
>临时修改
hostname widuu>修改配置文件修改
vim /etc/sysconfig/network
###硬盘分区和挂载
>这个很重要的了,如果你用云主机或者其它的服务器的时候肯定都待有分区和挂载,因为我发现大部分都不会给你挂载的,譬如阿里云、金山云、电信云等
1.分区表配置文件
>vim /etc/fstab #分区配置文件表
/dev/cdrom /media iso9660 defaults 0 0mount -a #测试光驱挂载是否成功
fdisk /dev/sdb
p #查看当前分区表
l #查看linux支持的文件系统
n #增加新分区
w #保存分区>fdisk -l #查看文件分区,找到为分区的
![fdisk -l](http://widuu.u.qiniudn.com/linux/fdiskl.png)
>fdisk /dev/sdb #我们需要的分区/dev/sdb
![fdiskm](http://widuu.u.qiniudn.com/linux/fdiskm.png)>Command(m for help):m #寻求帮助
>Command action #增加一个分区,然后选择 e扩展分区 p主分区
e extended
p primary partition (1-4)
>p #分为主分区
>Partition number (1-4): 1 #主分区number
>First cylinder (1-1044, default 1): 1 #设置柱面
>Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +3076M #设置硬盘大小![fdiskp](http://widuu.u.qiniudn.com/linux/fdiskp.png)
>p #查看系统分区
>t #修改系统类型
>l #显示系统类型
![fdiskt](http://widuu.u.qiniudn.com/linux/fdiskt.png)>w #保存系统分区
>mkfs.ext4 /dev/sdb1 #格式化硬盘
>mkdir /data && mount /dev/sdb1 /data #挂载硬盘
>df -h #查看硬盘挂载状况
![fdisk](http://widuu.u.qiniudn.com/linux/fdisk.png)>vim /etc/fstab #设置开机挂载硬盘,添加如下
/dev/sdb1 /data ext4 defaults 1 2 #这个和如下一一对应
fs_spec fs_file fs_type fs_options fs_dump fs_pass
挂载的文件系统 挂载点位置 文件系统类型 参数选项 是否dump 无需启动扫描0 跟分区启动扫描1 其它2即可
>mount -a #测试一挂载,千万要测试,我记得我做的最低级错误就是写错了,结果主机重启了,你懂得起不来了,我擦 损失大了
>unmout /dev/sdb1 #卸载硬盘分区###用户权限管理
1. `ls -l`
2. `chmod a+x xxx.sh`
3. `sudo /usr/sbin/useradd widuu`###文件权限
>文件权限三种 r-w-x 可读,可写,可执行 ,针对与文件和目录是不同的
>文件的权限如下
![rwx](http://widuu.u.qiniudn.com/linux/rwx.png)
>上边我们切割一下
>d --文件类型 目录
>rwx|rwx|r-xm,每三个分成一组
- 第一组 是文件所有者,这里是root有可读可写可执行(u)
- 第二组 是root组的其它用户有可读可写可执行 (g)
- 第三组 是other用户,就是既不属于文件所有者用户也不属于用户所有组,可读可执行 (o)r w x --> 4 2 1 对应这4个值 ,你可以想成2的0次方,1次方,2次方
对于目录来说 x 可执行权限意思是可以切换进入到这个目录 也就是cd /filedir
对于目录来说 w 可写就是创建文件的权限或者创建文件夹的权限 mkdir test
对于目录来说 r 可读就是列出目录的权限 譬如 ls -l对于文件来说 x 可执行,譬如.sh脚本有没有执行的权利
对于文件来说 w 可写,就是写入,譬如vi demo.txt必须有w权限
对于文件来说 r 可读权限,就是more cat less tail等能不能读取数据>chmod 给文件或者目录权限
>chmod 0777 test.txt #test.txt的权限-rwxrwxrwx
>chmod u+rwx,g+rwx,o+rwx test.txt #同上的权限 +给权限 -是删除权限
>chmod a+x #所有用户追加x权限
>chmod -R 777 dir #递归添加dir目录所有权限>chown 分配用户和组
>chown www:www /var/www/html #给html目录 www用户和www用户组权限
>id 查看用户信息
>id xiaowei
uid=501(xiaowei) gid=501(xiaowei) groups=501(xiaowei)
>gpasswd -a xiaowei root #将xiaowei用户添加到root
>gpasswd -d xiaowei root #从root组中删除>usermod -L xiaowei #锁定xiaowei用户
>usermod -U xiaowei #解锁xiaowei用户>sudo 权限设置
>visudo
>xiaowei localhost=/usr/sbin/useradd #添加到文件中,给xiaowei有useradd权限
>sudo useradd xiaowei1 #可以添加用户了>添加删除用户
>groupadd xiaowei #添加用户组
>useradd -g xiaowei xiaowei #添加用户并且添加到用户组
>userdel -r xiaowei #删除用户###ACL权限分配
>一个公司里不可能让所有人都有root权限,所以在一些文件和文件夹处理,以及权限处理的时候就很棘手,这个时候我们就需要ACL给用户进行权限分配
1.加权限
>setfacl -m u:username:rwx filedir #设置ACL2.查看权限
>getfacl filedir #获取ACL
# file: filedir
# owner: root
# group: root
user::rwx
user:username:rwx
group::r-x
mask::rwx
other::r-x3.删除权限
>setfacl -b u:username filedir #删除u这个用户的acl权限
>setfacl -b filedir #删除filedir的ACL所有权限
4.分配权限>nginx有时候就是因为权限的问题造成了nginx对cpu的负载过高,我们可以直接使用ACL对其分配权限
#nginx执行的用户是www,我们要www有nginx文件夹的所有权限
#nginx的安装目录是/usr/local/nginx
>setfacl -m u:www:rwx -R /usr/local/nginx #-R 文件递归###任务计划
>我们有时候定时备份,或者说定时执行一些脚本这是我们必须会的
>crontab -e #编写定时计划
2 * * * * /sbin/init 0 #这里是每2分钟关机一次,当然你已经关机了
#分 时 日 月 周 脚本
>crontab -r #删除定时任务
>crontab -l #列出定时任务