导图社区 Linux复习
整理了Linux操作系统安装及基本操作,linux程序安装与账号权限这几个部分,希望能帮助大家理解记忆。
编辑于2024-04-28 16:53:13Linux复习
1.Linux操作系统安装及基本操作
CentOs系统的安装与初始化
理解分区标识,例如/dev/sdb1
/dev/磁盘接口类型+接口号+分区编号。sdb1代表scsi类型第二接口第一个分区(逻辑分区编号从5开始)
inode节点与块
inode区域:存储元数据的区域,文件字节数,权限,归属,时间戳,连接,数据块位置inode bitmap:inode使用情况,比如空闲inode block bitmap:块的使用情况,比如空闲inode与空闲块等信息。
由多个扇区组成,常见4KB一块,存放文件数据 和目录数据。
了解inode与块的配合实现对文件系统的创建修改,读取,删除操作的过程。
linux操作系统的启动过程
开机bios自检→MBR主引导记录→grub菜单→init/systemd系统初始化
运行级别0:关机。运行级别1:单用户模式。运行级别2:用户定义级别,同级别3。运行级别3:完整功能字符端。运行级别4:用户自定义级别,同级别3。运行级别5:完整功能图形化。运行级别6:重启系统。
初始化配置相关命令
修改服务启动项
systemctl enable/disable 服务
关闭selinux
setenforce O
切换/设定默认运行级别
init O-6,systemctl set-default graphical.target
Linux目录与文件操作命令
linux命令结构
命令格式:命令字选项参数
管道符:将多条命令连接到一起,前面命令的输出结果作为后面命令的输入信息,再次被后面的命令执行
目录文件的基本操作
查看及切换目录:pwd,cd,ls,du
创建目录和文件:mkdir,touch,ln
了解In创建软连接与硬链接的区别
复制,删除,移动目录和文件:cp.rm,mv
查找目录和文件:find
-type按类型查找,-size按大小查找,-name按名称查找
文件管理
查看检索文件内容
查看文件内容:cat,more,less,head,tail
检索文件内容:grep,显示包含关键字的行,可以配合管道符,检索命令输出结果。
压缩归档
gzip,bzip2:前者压缩比例要弱于后者,但速度较快。
tar:打包归档,可以在归档时使用压缩引擎
vi编辑器
命令模式:使用快捷键操作编辑器
进入输入模式:a、i、o
复制黏贴:yy,p
删除撤销:x,dd,u
输入模式:用键盘输入信息
末行模式:保存退出查找替换
保存与退出:“:w”、“:q”、“:wq”
查找替换:“/关键字”,s/old/new/g
2.linux程序安装与账号权限
安装应用程序
rpm安装包
查看:rpm-qa查看所有已安装rpm包
安装:rpm -ivh/uvh都可以安装
卸载:rpm -e卸载,如有依赖关系使用-nodeps选项
源码编译包
解包:tar zf包.tar -C/usr/src
配置: 在解包目录./configure--prefix=/usr/ocal/xxxx指定安装目录,无卸载,直接删除指定目录。
编译&编译安装:make & make install
账号与权限管理
账号与组管理
熟悉用户文件/etc/passwd和/etc/shadow
要求看懂每段的内容
创建用户useradd,修改用户usermod,删除用户userdel,设置密码passwd
-u指定UID,-C指定附加组,-s指定登录环境,e指定失效日期,-d指定家目录
创建组groupadd,用户加入组gpasswd-a/-M
权限与所有者管理
权限
权限分为r,w,x(读,写,执行)。读取权限对于目录为查看目录内对象,对于文件为查看文件内容。写权限对于目录为创建,删除,子对象,重命名,对于文件为修改文件内容。执行权限对于目录为可否切换到目录中,对于文件为是否可以将文件内容调入内存执行。
查看到的权限分三个部分,属主属组其他权限。权限可以用rwx表示也可以用8进制数字表示,例如-rwxr-xr-x也可以写作755
改变权限的方法用chmod ugoa+-=rwx或者chmod 750
归属
属主属组:在查询对象详细信息时,紧跟在权限后面的为属主,右边的是属组。例如-rwxr-x---root root代表root用户读写执行,root组读执行,其他人无权限
改变归属的方法使用chown 属主:属组。例如chown root:root
3.linux磁盘配额与进程管理
磁盘管理
分区与格式化
分区使用fdisk工具,进入工具后用n开始创建分区,选择分区类型,确定分区编号,设定分区大小。
格式化:传统文件系统创建使用mkfs命令,swap分区使用mkswap和swapon命令
挂载:格式化过的分区,还需要挂载到某个目录下,使用目录当做分区出入口才可以使用。
LVM动态逻辑卷
创建LVM
PV阶段:可以对分区也可以对整个磁盘转换为物理卷PV使用命令 pvcreate /dev/sdc或者pvcreate /dev/sdb2
VC阶段:将物理卷中的PE集合到一个组中,使用命令vgcreate /dev/sdc /dev/sdb2 testvg
LV阶段:从VG中取出空间组成逻辑卷,使用命令Ivcreate -L 500M -n testlv testvg
扩展LVM
扩展容量到VG中,首先要将新空间pvcreate,然后使用命令vgextend testvg /dev/sdd
扩展到LV卷,使用命令lvextend-L+100M/dev/g名/Iv名
刷新卷空间resize2fs 挂载点
磁盘配额
让分区支持配额功能,挂载分区添加属性mount-o uquota,gquota/dev/testvg/testlv /test
编辑用户的配额项:xfs_quota-x-c limit-u bsoft=N bhard=N isoft=N ihard=N 用户名挂载点
进程管理
查看进程:常用的查看进程的方法ps aux静态打印当前进程信息,top动态查看某条件的进程排名
管理进程:kill pid关闭某个进程,killall进程名,关闭所有进程,pkil基于某些条件关闭特定进程。ctrl+z可以将进程后台挂起,jobs查看后台挂起进程,fg/bg可以恢复进程在前台/后台继续运行
计划任务
一次性计划任务,使用at日期的方式,拟定一个时间执行哪些命令,使用ctrl+d的方式提交计划
周期性计划任务,使用crontab命令编辑周期性计划任务,编辑内容分为两部分时间周期与执行命令,例如:*****/bin/rm-f/tmp/,时间周期一次排列为:分 时 日 月 周
4.Linux网络基本配置
Linux网络设置
设置本机网络参数
查看网络信息
查看网络信息
查看网卡信息:使用ifconfig或者ip add命令
查看网关信息和首选DNS信息:route-n命令查看网关,/etc/resolv.conf文件查看首选DNS
查看开放端口与主机名:netstat -anpt/u查看端口信息,hostname查看完整主机名。
追踪路由节点与查询DNS解析:traceroute IP地址检查路由,nslookup www.xxx.com查看解析信息
设置网络信息
临时生效
设置IP地址:ifconfig网卡名字 IP地址子网掩码
设置默认网关与路由:route add default gw 网关IP地址
设置主机名:hostname 主机名,使用bash命令刷新环境生效
永久生效设置IP地址,网关,DNS:修改 /etc/sysconfig/network-scripts/ifcfg-XX文件
设置网卡状态BOOTPROTO=static
激活网卡ONBOOT=yes
IP,掩码,网关,DNS: IPADDR=192.168.4.11 NETMASK=255.255.255.0 GATEWAY=192.168.4.1 DNS1=114.114.114.114
DNS也可以直接修改/etc/resolv.conf文件格式为nameserver 202.106.0.20
设置主机名与本地解析
修改/etc/hostname文件内容
修改/etc/hosts文件格式为“域名 IP地址”
搭建DHCP服务
通过RPM方式安装DHCP软件
修改dhcpd.conf文件
subnet 192.168.3.0 netmask 255.255.255.0 #声明作用域,网络号和掩码 { range 192.168.3.100 192.168.3.200: #IP地址池分配范围 option domain-name-servers 202.106.0.20,114.114.114.114;#设置分配的DNS地址逗号分割 option routers 192.168.3.1; #分配的域名,组成完整主机名 option domain-name "chaitin.com"; #分配的网关IP地址 option broadcast-address 192.168.3.255; #网段厂播地址 default-lease-time 600; #默认租约时间,单位是秒 max-lease-time 7200; #最大租约时间,单位是秒 }
主机保留地址: host server2{ #定义主机名,不可重复 hardware ethernet 00:0c:29:0e:60:e8;#静态分配主机的网卡MAc地址fixed-address 192.168.3.222;#对应上述MAC地址所静态分配的IP地址 }
搭建DNS服务器
安装DNS相关软件
bind,bind-utils,bind-libs,bind-chroot
cp -rp /etc/named.*/var/named/chroot/etc/ cp -rp /usr/share/doc/bind-9.9.4/sample/var//var/named/chroot/var/ cp -rp /var/named/dynamic//var/named/chroot/var/named/
设置目录的权限归属 chown -R:named /var/named/chroot/var/named/ chown -R named /var/named/chroot/var/named/data/ chown -R named /var/named/chroot/ar/named/slaves/ chmod 640 /Var/named/chroot/var/named/named.* chmod -R 770 /var/named/chroot/var/named/data/ chmod -R 770 //ar/named/chroot/var/named/slaves/
修改主配置文件
修改named.conf文件内容 listen-on port 53 {127.0.0.1;}; → listen-on port 53 {any;}; listen-on-v6 port 53 {:1;}; → listen-on-v6 port 53 {any:}; allow-query {localhost;}; → allow-query {any;};
修改区域声明文件
声明正向区域 zone"xxxxxx.com"IN{ type master; file"xxxxxx.com.zone"; allow-update{none;}; };
声明反向区域 zone "3.168.192.in-addr.arpa" IN{ type master; file "3.168.192.in.zone"; allow-update{none;}; };
修改区域数据库
正想解析
复制样板文件 cd /var/named/chroot/var/named/ cp -p named.localhost xxxxxx.com.zone
修改xxxxxx.com.zone内容 $TTL 1D @ IN SOA xxxxxxx.com. tangrui.163.com.( 2020010801 ;serial 1D ;refresh 1H ;;retry 1W ;;expire; 3H) ;minimum IN NS nsl.xxxxxx.com. nsl IN A 192.168.3.1 wwww IN A 106.220.68.11
反向解析
复制样板文件 cd /var/named/chroot/var/named /cp -p named.loopback 3.168.192.in.zone
修改3.168.192.in.zone内容 $TTL 1D @ IN SOA alibaba.com. tangrui.163.com.( 2020010801 ;serial 1D ;refresh 1H ;retry 1W ;expire 3H) ;minimum IN NS nsl.alibaba.com. 1 IN PTR gjj.dns.alibaba.com.
SSH远程管理服务器
服务端设置
以密码形式登录
以密钥兑形式登录
linux可以通过ssh-keygen-t rsa命令生成秘钥兑,然后将公钥传输到服务端ssh-copy-id
windows需要通过终端软件生成openssl格式的密钥兑,然后将公钥传输到linux
需要在sshd_conf中设置 AuthorizedKeysFile ..ssh/authorized_keys 与RhostsRSAAuthentication yes
客户端连接
linux使用ssh 用户名@lP地址的方式登录
windows使用终端软件,选择连接协议为ssh协议
设置连接限制
/etc/hosts.allow加入允许主机 sshd:61.63.65.67,192.168.2.*
/etc/hosts.deny加入拒绝主机 sshd:ALL
5.Linux文件传输服务
samba服务
安装软件包
samba-winbind-modules,samba-winbind,samba,samba-winbind-clients
认证登录访问
创建samba专用账户 useradd test pdbedit -a -u test
统一权限控制,声明共享目录 [share] comment =everyone allow #描述 path =/share #本地被共享目录的位置 public = yes #所有人可以访问 read only =yes #目录为只读属性
个别权限控制,声明共享目录 [manager] comment =manager group allow path=/manger public=noread only =yes valid users=admin,@manager #哪些用户可以读取 write list=admin #哪些用户可以写入
设置访问白名单,在全局或者共享目录处输入 hosts allow =192.168.3.3
vsftpd服务
安装vsftpd软件:rpm -ivh vsftpd-3.0.2-10.el7.x86_64.rpm
匿名访问
在vsftpd.conf主配置文件中确保anonymous_enable=YES
匿名登录权限配置 write_enable=YESanon umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
系统认证访问
在vsftpd.conf主配置文件中确保local_enable=YES
授权访问白名单配置,在/etc/vsftpd/user list文件中加入允许账户 在vsftpd.conf主配置文件中设置 userlist_enable=YES与userlist_deny=NO
虚拟账户访问
创建独立认证数据库
创建vim/etc/vsftpd/vusers.list文件,奇数行 用户名,偶数行密码
转换文件格式 db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db
设置pam认证
可以修改原有vsftp的pam也可以新建pam
文件内容为 #%PAM-1.0 auth required pam_userdb.so db=/etc/vsftpd/vusers account required pam_userdb.so db=/etc/vsftpd/vusers
开启虚拟账户功能
主配置文件vsftpd.conf中 pam_service_name=vsftpd.vu guest_enable=YES guest_username=virtual
创建独立权限配置文件
创建虚拟账户配置文件 mkdir /etc/vsftpd/vusers_dir cd /etc/vsftpd/vusers_dir/ touch test1 touch test2
根据需求在与虚拟账户同名的文件中加入授权 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
YUM服务
挂载安装盘设置本地源
mount /dev/srO /media
创建repo文件输入内容 [test] name=test baseurl=file:///media enabled=1 gpgcheck=0
配合FTP充当网络YUM源
安装VSFTP,开启设置匿名只读访问,匿名的主目录为rpm包所在目录
使用ftp源的客户机创建repo文件 [ftp-yum] name=ftp-yum baseurl=ftp://192.168.3.1 enabled=1 gpgcheck=0
使用公网YUM源
直接下载公网的repo文件放到/etc/yum.repos/目录中
6.linux网站WEB服务
搭建Apache服务器
编译安装apache
下载httpd的tar安装包,然后解包到系统目录,例如tar zf httpd-2.2.15.tat -C /usr/src
配置选项&编译安装 cd/usr/src/httpd-2.2.15/ ./configure --prefix=/usr/loacl/httpd --enable-so --enable-rewrite --enable-charset-lite -enable-cgimake && make install
优化执行路径&启动服务
将执行文件复制到bin目录 In -s /usr/local/httpd/bin/* /usr/local/bin/
启动程序apachectl start 检查80端口,访问测试页面
配置Apache虚拟服务器
创建测试站点
mkdir -p /var/www/html/test echo "<hl>hello.www.test.com</hl>"> /var/www/html/test/index.html 修改hosts文件解析该域名
修改虚拟主机配置文件
目录授权
2.4版本前
<Directory "War/www/html"> Order Allow,Deny Allow from all </Directory>
2.4版本后
<Directory"/var/www/html"> AllowOverride none Require all denied </Directory>
虚拟主机配置
<VirtualHost 192.168.3.1:80> ServerAdmin tangrui@163.com DocumentRoot"//ar/www/html/test" ServerName www.test.com ErrorLog "logs/test.com-error_log" CustomLog "logs/test.com-access_log" common <NirtualHost>
启用虚拟主机配置
在httpd.conf文件中启用 Include conf/extra/httpd-vhosts.conf
使用awstats分析访问日志
安装awstats站点
tar zxf awstats-7.3.tar.gz my awstats-7.3 /usr/local/awstats chown -R root:root /usr/local/awstats
执行配置脚本
cd /usr/local/awstats/tools/ chmod u+x awstats* ./awstats_configure.pl 根据提示/usr/local/httpd/conf/httpd.conf→输入y→输入y→输入监控站点域名www.test.com+回车
修改配置文件
vim /etc/awstats/awstats.www.chaitin.com.conf修改内容 LogFile="/usr/local/httpd/logs/test.com-access_log" 创建存放日志分析文件的目录 mkdir /Nar/lib/awstats
访问分析页面
执行日志分析程序./awstats_updateall.pl now 如果是2.4需要修改分析页面访问权限,并且开启cgi LoadModule cgid_module modules/mod_cgid.so
访问url地址 http://www.test.com/awstats/awstats.pl?config=www.test.com
页面授权访问
白名单访问
2.4版本前
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None Order allow,deny Allow from 192.168.3.3 </Directory>
2.4版本后
<Directory"/usr/local/awstats/wwwroot"> Options None AllowOverride None <RequireAll> Require ip 192.168.3.2 </RequireAll> </Directory>
身份验证
创建认证用户
htpasswd -c /usr/local/httpd/.awspwd zhangsan
设置认证
2.4版本前
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None Order allow,deny Allow from 192.168.3.3 AuthName "chaitin's awstats" AuthType Basic AuthUserFile /usr/local/httpd/.awspwdrequire valid-user</Directory>
2.4版本后
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None <RequireAll> Require ip 192.168.3.2 AuthName "chaitin's awstats" AuthType Basic AuthUserFile /usr/local/httpd/.awspwdrequire valid-user</RequireAll> </Directory>
搭建Nginx服务器
编译安装nginx
安装运行依赖软件 yum -y install pcre-devel zlib-devel
创建执行账户 useradd -M -s /sbin/nologin nginx
编译安装 tar zxf nginx-1.6.0.tar.gz -C /usr/src/ cd /usr/src/nginx-1.6.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_modulemake && make install
优化执行路径&开启服务
In -s /usr/local/nginx/sbin/* /usr/ocal/sbin/
执行命令nginx,检查是否开启80端口
nginx的虚拟主机
创建测试站点
mkdir -p /Var/www/html/test echo "<hl>hello,www.test.com</hl>">/var/www/html/test/index.html 修改hosts文件解析该域名
修改nginx.conf文件 在http{}内,server{}外加入
server{ listen 80: server_name www.test.com; charset utf-8; access_log logs/test.access.log main; location/{ root /var/www/html/chaitin;index index.html index.htm; } } 注意如果开启日志,需要在文件开头启动main日志格式
nginx反向代理+Tomcat
安装tomcat中间件
重装java环境(此处使用简单方法,没有修改变量) tar zxf jdk-7u65-linux-x64.gz mv jdk1.7.0_65/ /usr/local/java rm -rf /usr/bin/java" In -s /usr/local/java/bin/* /usr/bin/ java -version
安装tomcat软件 tar zxf apache-tomcat-7.0.54.tar.gz mv apache-tomcat-7.0.54 /usr/local/ /usr/local/tomcat7/bin/startup.sh 检查是否开启8080端口 netstat -anpt | grep 8080
在网关设置nginx反向代理
开启转发功能 vim /etc/sysctl.conf net.ipv4.ip_forward =1 执行命令刷新系统控制 sysctl -p
安装好nginx后修改nginx.conf配置文件
在http{}里面server{}以外加入群集信息 upstream tomcat server{ server 192.168.3.2:8080 weight=1;#节点1的IP地址 server 192.168.3.3:8080 weight=1;#节点2的IP地址 }
在默认站点的localtion根目录中加入 location/{ proxy_pass http://tomcat_server; } 重载nginx配置文件 nginx -s reload
使用squid搭建缓存服务器
编译安装squid
解包安装
tar zxf squid-3.4.6.tar.gz -C /usr/src/ 配置 cd /usr/src/squid-3.4.6/ /configure -prefix=/usr/local/squid --sysconfdir=/etc --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify Chinese" --enable-nuderscore --enable-gnuregex 编译安装 make && make install
开启服务
useradd -M -s /sbin/nologin squid 修改安装目录的归属和权限 chown -R squid:squid /usr/local/squid/chmod -R 755 /usr/local/squid/ 开启服务 squid
传统正向代理
开启转发
vim /etc/sysctl.conf net.ipv4.ip_forward =1 刷新配置 sysctl -p
修改基本配置
修改主配置文件,开启传统代理 vim /etc/squid.conf 在http_access deny all配置行之上输入 reply_body_max_size 10 MB ttp_access allow all 重启服务 killall -9 squid squid
客户端修改浏览器的代理设置
透明代理
设置透明代理设置透明代理
修改squid的主配置文件 vim /etc/squid.conf 修改代理端口信息 http_port 192.168.3.1:3128 transparent 重启squid服务
设置iptables防火墙转发端口
iptables -F iptables -t nat -1 PREROUTING -i ethO -s 192.168.3.0/24 -p tcp -- dport 80 -j REDIRECT --to-ports 3128- iptables -t nat -I PREROUTING -i eno16777736 -s 192.168.3.0/24 -p tcp --dport 443 -j REDIRECT --to-ports 3128
ACL控制访问流
设置ACL条件
直接写在配置文件中 acl deny_lan src 192.168.3.2/32
单独设立文件 vim /etc/squid/ip _list 192.168.3.3/32 vim /etc/squid/ dns _list .4399.com .17173.com 然后在配置文件中声明 acl ip_list dst "/etc/squid/ip_list" acl dns_list dstdomain "/etc/squid/dns_list"
设置ACL策略
http_access deny ip_list http_access deny dns_list
配合sar分析访问流日志
安装sar软件
安装软件环境 um -y install gd gd-devel httpd
tar zxf sarg-2.3.7.tar.gz -C /usr/src /cd /usr/src/sarg-2.3.7/ ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/ sarg --enable-extraprotection make && make install
修改sar的主配置文件
vim /etc/sarg/sarg.conf 内容可新加也可以找到注释行进行修改 access_log /usr/local/squid/var/logs/access. log title "Squid User Access Reports" output_dir /var/www/html/sarg user_ip no topuser_ sort_ field BYTES reverse user sort field BYTES reverse exclude_hosts /usr/local/sarg/noreport overwrite_report no mail_utility mail.postfix charset UTF-8 weekdays 0-6 hours O-23 www document root /var/www/html 创建sarg域名排除文件 touch /usr/local/sarg/noreport 启动sarg生成报告 sarg
访问日志页面
访问http://192.168.3.1/sarg
7.linux脚本shell应用
基本语法
编写shell脚本
第一个shell脚本 vi/root/test.sh #!/bin/bash echo "hello the world"
执行shell脚本
chmod +x/root/test.sh /root/test.sh
重定向符
<:标准输入 >:标准输出重定向 >>:标准输出重定向追加 2>/2>>:错误输出/追加 &>/&>>:混合输出/追加
变量
声明变量
在脚本使用如下格式变量名=变量值
赋值时使用一些符号使变量值有特殊含义 双引号:允许通过$符号引用其他变量值 单引号:禁止引用其他变量值,$视为普通字符 反撇号:命令替换,提取命令执行后的输出结果
执行脚本时赋值 read[-p“提示信息"]变量名
全局变量 export变量名=变量值
调用变量
在脚本中使用$变量名这种格式调用变量
整数变量运算
expr变量1运算符变量2
加法运算:+ 减法运算:- 乘法运算:\* 除法运算:/ 求余运算:%
位置变量
位置变量为$1-$9
位置变量的使用是指运行脚本时,脚本执行参数有哪些,例如/root/test.sh 参数1 参数2 参数3对应的就是$1$2$3
预定义变量
$#:命令行中位置变量的个数 s":所有位置变量的内容 S?:上一条命令执行后返回的状态,当返回状态值 为O时表示执行正常,非O值表示执行异常或出错 SO:当前执行的进程/程序名
分支语法
条件表达式
表达式语法
test 条件表达式
[条件表达式]
文件测试
语法[选项文件或目录] -d:测试是否为目录 -e:测试目录或文件是否存在 -f:测试是否为文件 -r:测试当前用户是否有权限读取 -w:测试当前用户是否有权限写入 -X:测试当前用户是否有权限执行
整数比较
语法[整数1选项整数2]-eq:等于(Equal) -ne:不等于(Not Equal) -gt:大于(Greater Than) -It:小于(Lesser Than) -le:小于或等于(Lesser or Equal) -ge:大于或等于(Greater or Equal)
字符比较
语法 [字符串1=字符串2] [字符串1!=字符串2] [-z字符串]
=:字符串内容相同 !=:字符串内容不同,! 号表示相反的意思 -z:字符串内容为空
if条件表达式
单分支
if条件测试 then 条件满足执行命令 fi
双分支
if条件测试 then 条件满足执行命令 else 条件不满足执行命令 fi
多分支
if条件测试 then 条件1满足执行命令elif 条件测试2 then 不满足条件1但满足条件2执行命令 else 都不满足时执行命令 fi
循环语法
for语法
for变量名in取值列表 do 命令 done 循环次数由取值列表中的信息数目有关
while语法
while条件测试do 命令序列 done 满足条件测试时会一直循环
case语法
case变量值 in case模式1) 变量=模式1时执行命1 ;; 模式2) 变量=模式1时执行命2 ;; ...... *) 默认命令 esac
正则表达式
常用正则符号
利用中括号口来查找集合字符 查找行首A与行尾字符$ 查找任意一个字符.与重复字符” 查找连续字符范围{}
常用元字符 A、$、.、\、*、[ ]、[^]、[n1-n2]、{n}、{n,}、{n,m]
扩展元字符 +:重复一个或者一个以上的前一个字符 ?:零个或者一个的前一个字符 |:使用或者(or)的方式找出多个字符 ( ):查找“组”字符串 ( )+:辨别多个重复的组
sed工具
常见例句 在vsftpd.conf文件中,anon起始的行前面加入tab大空格 sed -i$'s/anon人t&/g'/etc/vsftpd/vsftpd.conf 在网卡文件中UUID开头的行首加上注释符号 sed -i"s/AUUID/#&/g"/etc/sysconfig/network-scripts/ifcfg-eno16777736 删除网卡文件中以UUID开头的行 sed -i'/AUUID/d'/etc/sysconfig/network-scripts/ifcfg-eno16777736 在ONBOOT开头的行下面加入一行信息IPADDR=192.168.3.1 sed -i/AONBOOT/\a IPADDR=192.168.3.1'/etc/sysconfig/network-scripts//ifcfg-eno16777736
awk工具
awk 选项‘模式或条件{编辑指令}文件1
例句 ifconfig | grep^e | head -1 | awk -F: ‘{print $1}’
8.linux下lamp平台
mysql
安装mysql
安装环境
安装ncurses-devel
安装cmake包 tar zxf cmake-2.8.6.tar.gz cd cmake-2.8.6 ./configure gmake && gmake install
创建mysql程序账户
groupadd 1500 mysql useradd -u 49 -M -s /sbin/nologin -g mysql
编译安装mysql
tar zxf mysql-5.5.22.tar.gz -C /usr/src cd /usr/src/mysql-5.5.22/ 配置mysql安装信息 cmake -DCMAKE INSTALL ·PREFIX=/usr/local/mysql- DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_ COLLATION=utf8_general_ci-DWITH_EXTRA_CHARSETS=all 编译&&编译安装mysqlmake && make install
初始化mysql
修改mysql主目录权限
chown -R mysql:mysql /usr/local/mysql
生成配置文件
cp /usr/src/mysql-5.5.22/support-files/my-medium.cnf /etc/my.cnf
初始化数据库
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/ usr/ocal/mysql --datadir=/usr/local/mysql/data
优化执行路径
In -s /usr/local/mysql/bin/* /usr/local/bin/
登录mysql
修改mysql管理员密码
mysqladmin -u root -p password
登录mysql数据库
mysql -u root -p
lamp实现论坛搭建
安装apache
安装mysql
安装PHP
安装加密环境
tar zxf libmcrypt-2.5.8.tar.gz -C /usr/src /cd /usr/src/libmcrypt-2.5.8/ ./configure make && make install In-s/usr/local/lib/libmcrypt.*/usr/lib/
tar zxf mhash-0.9.9.9.tar.gz -C /usr/src/ cd /usr/src/mhash-0.9.9.9/ ./configure make && make install In -s /usr/local/lib/libmhash*/usr/lib/
tar zxf mcrypt-2.6.8.tar.gz -C /usr/src/ cd /usr/src/mcrypt-2.6.8/ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ./configure make && make install
安装php依赖环境
yum -y install libxml2"
编译安装php
tar zxf php-5.3.28.tar.gz -C /usr/src /cd/usr/src/php-5.3.28/ ./configure --prefix=/usr/local/php5 --with- mcrypt -with-apxs2=/usr/local/httpd/bin/ apxs --with-mysql=/usr/local/mysql --with- config-file-path=/usr/local/php5 --enable- mbstring make && make install
生成PHP配置文件
cp /usr/src/php-5.3.28/php.ini-development/usr//ocal/php5/php.ini
确保apache启用了php模块后测试
modules/libphp5.so
检查httpd.conf文件是否存在 LoadModule php5_module
在AddType下加入 AddType application/x-httpd-php.php
重启httpd后建立测试页面访问
vim /usr/local/httpd/htdocs/test.php ?phpphpinfo(); ?>
9.linux防火墙iptables
编写iptables策略规则
iptables组成
规则链
INPUT:处理入站数据包 OUTPUT:处理出站数据包 FORWARD:处理转发数据包 POSTROUTINC链:在进行路由选择后处理数据包PREROUTINC链:在进行路由选择前处理数据包
规则表
raw表:确定是否对该数据包进行状态跟踪 mangle表:为数据包设置标记 nat表:修改数据包中的源、目标IP地址或端口 filter表:确定是否放行该数据包(过滤)
iptables基本语法
iptables[-t表名]选项[链名][条件][-j控制类型]
匹配后的行为,必须大写 ACCEPT:允许通过 DROP:直接丢弃,不给出任何回应 REJECT:拒绝通过,必要时会给出提示 LOC:记录日志信息,然后传给下一条规则继续匹配
常用选项 -A:在链的末尾追加一条规则 -1:在链的开头(或指定序号)插入一条规则 -L:列出所有的规则条目 -n:以数字形式显示地址、端口等信息 -v:以更详细的方式显示规则信息 -D:删除链内指定序号(或内容)的一条规则 -F:清空所有的规则 -P:为指定的链设置默认规则
匹配规则
通用匹配 可直接使用,不依赖于其他条件或扩展包括网络协议、IP地址、网络接口等条件
协议匹配:-p协议名 地址匹配:-s源地址、-d目的地址 接口匹配:-i入站网卡、-o出站网卡
例句 iptables -A FORWARD -s 192.168.1.11 -j REJECT
隐含匹配 要求以特定的协议匹配作为前提 包括端口、TCP标记、ICMP类型等条件
端口匹配:--sport源端口、--dport目的端口 TCP标记匹配:--tcp-flags检查范围被设置的标记 ICMP类型匹配:--icmp-type ICMP类型
例句 iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
显式匹配 要求以“-m扩展模块”的形式明确指出类型 包括多端口、MAC地址、IP范围、数据包状态等条件
多端口匹配:-m multiport--sports源端口列表 -m multiport--dports目的端口列表 IP范围匹配:-m iprange --src-range IP范围 MAC地址匹配:-m mac --mac-source MAC地址 状态匹配:-m state --state连接状态
NEW状态:说明这个数据包是收到的第一个数据包。 ESTABLISHED状态:只要发送并接到应答,一个数据表的状态就从NEW变 为ESTABLISHED,并且该状态会继续匹配这个连接后继数据包。 RELATED状态:当一个数据包的状态处于ESTABLISHED状态的连接有关系的时候,就会被认为是RELATED,也就是说一个连接想要是RELATED状态,首先要有一个ESTABLISHED的连接。 INVALID状态:不能被识别属于哪个连接状态或没有任何关系的状态,一般这种数据包都是被拒绝的。
例句 iptables -I INPUT -p tcp -m state -state ESTABLISHED -j ACCEPT
SNAT实现端口多路复用
在系统上开启转发功能
设置SNAT 让来自192.168.1.0网段的数据,转发到the0时候将源IP转换为ethO接口的IP地址
iptables -t nat -A POSTROUTING -s 192168.1.0/2 -o ethO -j MASQUERADE
DNAT实现服务器发布
在系统上开启转发功能
设置DNAT 当有流量访问eht0 218.29.30.31的80端囗时,这个 目标地址会被转换成192.168.1.6,端口号不变
iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192168.1.6
10.Linux容器docker
docker的基本使用
使用yum安装docker
设置阿里仓库源
访问cr.console.aliyun.com
注册登录后再镜像加速中找到你自己的地址
把地址写到文件/etc/docker/daemon.json 例如 "registry-mirrors":["https://93jlorg2.mirror.aliyuncs.com"]
从仓库下载镜像
搜索镜像 docker search centos
下载镜像 docker pull centos
查看本地镜像 docker images
删除镜像 docker rmi 镜像ID
将镜像启动为容器
docker run -itd [--name容器名称] 镜像名或ID 例如 docker run -itd --name nginx1 镜像名/镜像ID
查看容器 docker ps docker ps -a
进入容器
docker exec -it容器名或id /bin/bash
关闭开启删除
关闭/启动容器 docker stop/start 容器名或ID
删除容器 docker rm容器名或ID
制作离线镜像
使用修改过的容器差制作新镜像
docker commit 容器ID 镜像名称:新tag
查看镜像差异
docker diff 镜像ID
导出/导入离线包
docker save-o离线包名.tar镜像名:镜像tag(不推荐使用ID)
docker load -i tar包
docker的swarm群集
NTP服务器同步时间
在一台服务器中的 /etc/ntp.conf中追加信息 server 127.127.1.0 fudge 127.127.1.0 stratum 8 客户机同步时间 ntpdate 192.168.3.1
ssh无密码传输
确保主机可以通过主机名访问
修改hosts文件解析主机名
修改各节点主机名
测试主机名ping通
主节点上生成密钥兑
ssh-keygen
传送公钥到其他节点
ssh-copy-id -i/root/.ssh/id_rsa.pub root@192.168.6.105
swarm群集
创建群集
主节点创建群集管理者
docker swarm init --advertise-addr 192.168.3.1
其他节点加入群集
docker swarm join\ -token SWMTKN-1- 3vxn0lnobabqwngyxi67hxtf74qi00fciy86lfr2g931ziv2ro-Ovarhlmcqoe3pi4ak9qzo5deo\ 192.168.3.1:2377
查看节点 docker node ls
创建私有库
开启转发,设置mtu
主节点上配置 netipv4.ip_forward =1 net.ipv4.ip_forward_use_pmtu = 0 刷新配置 sysctl -p
复制到其他节点 scp /etc/sysctl.conf node2:/etc/ scp /etc/sysctl.conf node3:/etc/ 其他节点也刷新配置 sysctl -p
拉取registry:2镜像
docker pull registry:2 离线包 docker load -i registry2.tar
创建私有库目录
mkdir -p /opt/data/registry/
启动私有库容器
docker run -itd -p 5000:5000 -restart-always -v /opt/data/registry/:/var/lib/registry--name registry registry:2
发布私有库
修改 /usr/lib/systemd/system/docker.service
ExecStart=后面的选项最下面添加换行符和新选项--insecure-registry 192.168.3.1:5000
重启docker服务
systemctl daemon-reload service docker restart
将docker.service复制到各个节点
scp/usr/lib/systemd/system/docker.service node2:/usr//ib/systemd/system/ scp /usr/lib/systemd/system/docker.service node3:/usr/lib/systemd/system/
然后在每台节点上重启服务 systemctl daemon-reload service docker restart
上传镜像到私有库
docker tag nginx 192.168.3.1:5000/nginx
docker push 192.168.3.1:5000/nginx
检查 curl 192.168.3.1:5000//2/ catalog
安装swarm监视工具
拉取swarm镜像
docker pull docker.io/dockersamples/visualizer 或者本地加载 docker load -i./visualizer.tar
将swarm镜像上传到私有库
docker tag dockersamples/visualizer 192.168.3.1:5000//isualizer docker push 192168.6.105:5000/visualizer
在主节点开启镜像到容器
docker run -itd-p 8888:8080-e HOST=192168.3.1-e PORT=8080-v /ar/run/docker sock:/ar/run/docker. sock -name visualizer 192168.3.1:5000/Visualizar -
创建群集
docker service create -replicas 3 --network my-network -name web -p 80:80 192168.3.1:5000/nginx
查看web服务器节点状态
docker service ps web
修改群集中的容器数量
docker service scale web=5
访问群集监视器
访问http:/192.168.3.1:8888端口