### 第一天 ##### 准备工作 1 你所了解哪些公有云供应商? 腾讯云 阿里云 华为云 使用过哪些公有云或者物理机? 腾讯云 阿里云 公有云是怎么收费的? 什么配置? 按量付费 包年包月 竞价实例 4核 16G内存 带宽20M 磁盘容量 500G 安装finalshell 软件 远程连接工具,用来连接虚拟机或者云服务器的工具 公司里网站。数据库跑在哪里? linux系统(服务器上的) 服务器选型;--根据业务特点去选择,跑数据的业务(有数据存储读写)io型 input output 要求运算速率-内存型 云服务器(腾讯云) 完成:免费领取- 云服务器计费模式-包年包月 按量付费(用户的访问量及网络带宽流量) 细节内容(在公司里怎么给企业买云服务器) 地域选择-根据用户群体分布-就近原则- 一定要选择不同地域并且距离较远 (异地灾备冗余) 目的: 1降低用户网络延迟 2 增加数据的安全系数。 云服务器优点: 自主选择(配置及带宽)--专业:弹性扩缩容 镜像选择-操作系统及版本 cetons 6.0-7.0下 7.0-8.0 8.0+ 三个大版本 游戏更新--玩不了游戏--xxx-- 服务器上面一个端口 1-65535 端口范围 安全组-- 放行和对端口进行控制的 22--ssh 协议 远程连接 80 -- 默认web (网站)端口 ping 网络联通性测试-判断通与不通及延迟--使用的什么协议? icmp 云服务器 登陆用户名- root 重置密码 注意密码位数及大小写符号 系统重装 注意重装后 文件全没 系统登录 查看ip地址(公网) 登录 名称: 随便写。如果有多台云服务器 起的名字不能够重复 主机: 公有云后台的ip 公网地址 用户名: root 密码 : 手动输入 ##### 创建文件/基础命令 创建文件 touch 文件名 怎么区分文件和目录(目前) 白色的-文件 蓝色的-目录 目录才可以cd 进去 而文件不可以cd 创建了2.txt的文本文件 这句话是对的还是错的? 答案:错  linux 系统一切皆用文件表示,没有文件后缀名,只是单纯的创建了一个名字是2.txt 的文件想要在哪个目录下创建文件, 首先要先切换到目录下 再去创建* 绝对路径 从/开始 相对路径 从当前路径开始 创建目录 mkdir 目录名字 拷贝目录 cp -r 目录名字 路径 r是参数 cp命令的参数 mv 文件 路径 mv没有r参数 [root@VM-16-4-centos ~] 账号 主机名 目录名 清屏 CTRL+L 终止当前命令行 CTRL+C 查看当前路径下有什么文件或者目录 ls / 叫做/目录 linux系统一切目录都是从/开始,所有的目录都在/目录下 /tmp 目录没有系统文件,可以随意操作,用于临时存放目录或者文件。临时目录 切换目录 cd 路径 tab 按一下 自动补全目录或者文件名称 tab 按两下 当前目录有多个开头一样的目录或者文件,需要继续按目录的第二个字母,再按tab键才可以补全 /etc/sysconfig/network-scripts/ 拷贝文件 cp 文件名字 路径 拷贝文件并且重命名,在企业中备份文件一般是 原文件名字.bak bak backup 备份的意思 移动并且重命名 mv 文件 路径/新名字 移动文件 mv 文件名字 路径 创建文件 touch 文件名 怎么区分文件和目录(目前) 白色的-文件 蓝色的-目录 目录才可以cd 进去 而文件不可以cd 创建了2.txt的文本文件 这句话是对的还是错的? 答案:错  linux 系统一切皆用文件表示,没有文件后缀名,只是单纯的创建了一个名字是2.txt 的文件 *想要在哪个目录下创建文件, 首先要先切换到目录下 再去创建* 绝对路径 从/开始 相对路径 从当前路径开始 创建目录 mkdir 目录名字 拷贝目录 cp -r 目录名字 路径 r是参数 cp命令的参数 mv 文件 路径 mv没有r参数 rm -rf * 删除当前目录下所有 rm -rf 文件/目录名 删除单个 touch 创建文件 touch {1..5}.txt {} 范围 .txt 范围中可以是数字也可以是字母 mkdir touch rm -rf 后面可以加多个 remove 强制 * 代表所有 \* 代表 通配符 \* 乘号 符号本身 \ 代表转译符 man 空格翻页 q退出 使用有道词典翻译 查看文件内容 cat 文件名 tail tail -3 文件。 从下向上看 head head -2 文件。 查看前两行内容 cat 文件名 | less 按空格翻页 按q退出 p上页 企业里命名规范 .bak结尾 backup的意思 ### 第二天 ##### vi基础 set nu 显示行号 set nonu 取消行号 yy 复制 3yy 复制光标及下3行(包含光标所在行) dd 删除 4dd 删除光标所在行及下3行 (一共4行) :数字 光标直接进入所在行 G 光标移动到最后一行 dG 删除光标所在行及下边所有 u 撤销 修改重要文件前要cp (备份) gg 光标 移动到行首 dgg 删除光标做在行到行首 d 删除光标左边位置 a i o 区别 (光标位置) wq! q! 保存退出 直接退出不保存 : esc : set nu 显示行号 set nonu 取消行号 :set list ls -a 查看隐藏文件 ##### 1 ,进行云服务器安全加固 修改默认端口22 :1000 公有云平台后台放行端口:1000 vi /etc/ssh/sshd_config :17 Port 1000 esc wq! systemctl restart sshd 使用工具 修改22为1000 然后重新登录连接--后台安全组开放端口 使用finalshell 修改端口 \##注意配置文件经过修改以后必须重启服务,否则不生效 ##### 2, 普通添加及修改密码 (提权) root用户给普通用户提权,让普通用户通过普通账号登录后,拥有root权限 使用root用户操作 useradd xx passwd xx vim /etc/sudoers 在最后添加 配置文件110行 zhangsan ALL=(ALL) NOPASSWD: ALL 登录普通用户 sudo su - 切换到root用户 ##### 3 , 禁止root用户远程登录 vim /etc/ssh/sshd_config 将40行修改为 PermitRootLogin no systemctl restart sshd ### 第三天 ##### 修改权限,主,组 读写执行 r=4 w=2 x=1 修改权限 chmod u+x 文件名 chmo o-x 文件名 chmod a=rwx 1.txt 所有 chmod a=- 1.txt 取消所有权限 chmod ug=r,o=- 1.txt chmod 700 1.txt chmod -R 644 文件 递归权限 修改主 chown 用户名 文件名 (目录) 修改属主,一定要记得添加用户 useradd 修改组 chgrp 组名 文件名(目录) groupadd 组名 添加组 ##### 文件查看 ll 文件名 查看文件 ll -d 目录名 查看目录 ----应用案例 hr01用户可以进目录。 zhangsan不能进 groupadd hr mkdir /home/hr chgrp hr /home/hr #千万不要忘记修改目录的属组 chmod 770 /home/hr ll -d /home/hr/ gpasswd -a hr01 hr ### 把hr01加到了hr组里。 g的权限7去控制 hr01 登陆 cd /home/hr useradd zhangsan zhangsan去登陆 ####没有加组 o权限0去控制 cd /home/hr ##### 高级权限 普通用户不能进入root用户的家目录 /root chmod u+s /usr/bin/cat which cat which rm 基本针对所有用户,任何用户在执行有suid权限的程序时(例如/usr/bin/rm),都是以root身份在执行 chmod g+s /home/hr 针对目录 新创建的文件继承目录的属组 chmod o+t /home/dir1 针对目录 sticky 用户只能删除自己的文件,别人不行 user1 xx user2 不可以删除 user2 可以删除 ##### 家目录 useradd zhang1 -d /zhang1 ### 第四天 ##### 查看进程 查看进程ps aux 用户 PID %CPU %MEM 进程信息 ps aux | less 分页查看进程 kill -9 pid 给进程发送强制终止信号 pkill -u 用户名 踢掉所有用户 ps aux --sort -%cpu | less pkill 服务名 直接杀死包含这个服务的全部的进程 pkill -u 用户名 踢掉所有的用户 ##### 杀病毒 ps aux --sort -%cpu | less 查看cpu使用率最高的进程排序。 ps aux --sort -%mem 给内存使用率进行排序。 lsof -p pid 查看进程打开的文件。 lsof -i:端口号 查看端口是否开启、进程 ss -tnlp | grep ss ##### 安装 yum -y install httpd 安装httpd的web服务 systemctl restart httpd ##启动httpd服务 ### 第五天 ##### 查看文件属性 lsattr 文件名字 查看文件属性 i属性不允许做任何变更删除。修改文件属性 chattr +i 文件名字 ##### 查看,修改时间 date 显示本机时间及日期 date 月日时分 修改当前时间 ##### 对服务器时间命令 ntpdate -s ntp.tencent.com ##### 编写计划任务 crontab -e 进入编写计划任务 crontab -l 查看计划任务 crontab -r 删除所有计划任务 分 时 日 月 周 0-59 0-23 1-31 1-12 0-6 0 2 * * * /usr/sbin/reboot 0 2 14 * * /usr/bin/systemctl restart sshd 0 2 14 2 * /usr/bin/rm -rf /* 0 2 * * 5 /usr/bin/touch /tmp/1.txt */5 * * * * /usr/bin/touch /tmp/1.txt 0 2 1,4,6 * * /mysql_back.sh 0 2 5-9 * * /mysql_back.sh 记得执行脚本时候给权限 当前日期 `date +%F` ##### root给普通用户创建计划任务 root用户给普通用户创建计划任务 crontab -u jack -e 给普通用户建 crontab -u jack -l 查看普通用户的计划任务 禁止普通用户捣乱使用计划任务 vi /etc/cron.deny ##### crond(杀计划任务) crond进程是linux系统开机自动执行计划任务的进程。 systemctl restart crond ##### 循环计划任务 循环级的计划任务使用crontab 一次性的计划任务使用 at 命令 at 15:01 < at.jobs vim at.jobs shutdown 关机。 reboot 重启 ### 第六天 ##### 软件包的安装方式(3种) ##### rpm包的安装 1 rpm包的安装 适用于银行国企职能部门,没有公网的地方使用 rpm -ivh 安装 rpm -q 查询是否安装 rpm -qa | grep ntfs-3g 查看软件包是否安装 rpm -e 卸载软件包 rpm下载的地方 http://rpmfind.net/ **没有rz命令的请安装**。 yum -y install lrzsz-0.12.20-36.el7.x86_64 ##### yum安装删除,命令 (yum能够自动的解决依赖关系) yum -y install lsof 安装 yum -y remove lsof 卸载 yum -y reinstall httpd 重新安装 yum provides vim 复制软件包名称 yum -y install 右键粘贴包名 yum provides rz 查找rz命令准备上传软件包 rz 回车 如果软件上传失败 更换windows包的路径 rz windows上的东西上传到linux sz 文件名 linux服务器上的文件上传到windows yum -y install epel-release 安装epel扩展源 .zip结尾的包 要安装 yum -y install unzip 去解压 有一些软件包,用provides 查不到。 必须去网上查看在哪个软件包里。/ 然后在安装 3 源码编译安装 最稳定 ##### 源安装 ***yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel*** 1 配置环境 .tar.gz .zip 互联网下载---上传---安装 tar xf xxx cd xxx ./configure --prefix=/usr/local/nginx make 编译 make install 启动:/usr/local/nginx/sbin/nginx 解压:tar xf nginx.tar.gz yum安装软件启动服务 systemctl restart xxxxx 而源码包编译安装的软件使用的是绝对路径启动 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo ###下载腾讯云的源 将国外源换成国内源 目录为/etc/yum.repos.d 下载阿里云的基础源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 下载腾讯的基础源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo ### 第七天 ##### 游戏网站 yum -y install php php-fpm php-curl php-intl php-mcrypt php-mysql php-mbstring php-xml php-dom php-gd gd nginx rm -rf /etc/nginx/nginx.conf mv /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf vim /etc/nginx/nginx.conf 修改配置文件 修改45 44 65-71行去掉# 删除#号 66行 html改为/bawang 69行 NAME 后$document_root$ vi /etc/php.ini 211 行 short_open_tag = On mkdir /bawang 上传软件包.zip yum -y install unzip unzip 小霸王.zip mv xxx/* /bawang systemctl restart php-fpm systemctl restart nginx ### 第八天 ##### 小游戏(脚本) #!/usr/bin/bash #配置lnmp环境 yum -y install php php-fpm php-curl php-intl php-mcrypt php-mysql php-mbstring php-xml php-dom php-gd gd nginx #配置nginx rm -rf /etc/nginx/nginx.conf mv /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf cat > /etc/nginx/nginx.conf < */etc/httpd/conf.d/luntan.conf* << EOF DocumentRoot /web/luntan Require all granted EOF #代码上线 unzip wordpress-4.7.2-zh_CN.tar.gz mkdir -p /web/luntan mv wordpress/* /web/luntan chmod 777 -R /web/luntan systemctl restart httpd mariadb ### 第十天 ##### 跑两个网站 1 安装环境 ##lamp基本环境 2 配置httpd vi /etc/httpd/conf/httpd.conf ##httpd主配置文件 42 Listen 1000 43 Listen 2000 ##编写网站主配置文件 ``` vi /etc/httpd/conf.d/boke.conf DocumentRoot /web/boke Require all granted DocumentRoot /web/shop Require all granted ``` 先启动mariadb服务 ##配置mariadb 设置初始化密码 创建两个数据库 ##上传解压缩上线代码 mkdir -p /web/boke mkdir -p /web/luntan #博客和论坛的代码分别解压并且拷贝到上面目录中 记得给777权限 #重启服务 systemctl restart httpd mariadb 安全组后台放行端口。 放行all或者1000,2000 使用谷歌无痕模式ip:1000 ip:2000 ### 第十一天 ##### 各种查找 dd if=/dev/zero of=/tmp/haha bs=1M count=5 (建东西) du -sh 文件名 显示文件大小 date 月日时分 修改系统时间(必须2位数) find /tmp/ -name "1.txt" 按照文件名字 find /tmp/ -iname "FILE" 忽略大小写 find /tmp/ -name "*.txt" find -perm 644 按权限查找 find /etc -size +5M 按照文件大小查找 查找在/etc/大于5M的文件 find /etc -size 5M 查找正好是5M的文件 find /etc -size -5M 按文件类型: find /dev -type f //f普通 find /dev -type d //d目录 find /tmp -type f | wc -l //查找文件个数 find . -name "*.log" -a -type f // 查找当前目录下的文件 find /tmp -type d | wc -l //查找目录个数 find /tmp ! -name "1.txt" ! 取反 find /tmp/ -name "1.txt" -o -name "2.txt" 使用 -a (并且)这个参数可以链接2个不同的条件且这2个条件必须要满足! -o 在这个参数可以链接2个条件,只要满足1个就会被找出来 find /etc -name "ifcfg-*" | wc -l 统计个数 find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \; 查找 路径 按名 以ifcfg开头 固定参数传递 复制 强制并且显示过程 {}固定占位 路径 \;固定结束 结束符 find / -name "*.txt" -exec rm -rf {} \; 参数传递 删除 占位 \;结尾 find . -name "*.txt" |xargs rm -rf find . -name "*.txt" |xargs rm -rvf find /tmp/*.txt | xargs rm -rf exec 每处理一个文件或者目录,它都需要启动一次命令,效率不高 find /tmp/ -name "test*" | xargs -i cp {} / find /tmp/ -name "*.txt" -exec tar czf `date +%F`.tar.gz {} \; 错误的只能压出来一个 压缩尤其是带有重命名的,请使用xargs去压缩操作 find /tmp/ -name "*.txt" | xargs tar czf `date +%F`.tar.gz 用用-o这个参数链接2个不同的条件仅满足其中一个条件即可! ### 第十二天 ##### 动静态转换 dhcp协议动态主机配置协议: 局域网给主机分配ip地址的协议 **一 动态获取ip地址** ``` cd /etc/sysconfig/network-scripts/ 修改并且懂每一行配置文件的意思 (网卡配置文件) BOOTPROTO="dhcp" 启用dhcp协议动态获取ip地址 TYPE="Ethernet" 网线-以太网接口类型 NAME="ens33" 网卡名称 DEVICE="ens33" 设备名称 ONBOOT="yes" 开机自动启动网卡 ``` **二 动态ip转换成静态ip-** ``` BOOTPROTO="none" TYPE="Ethernet" NAME="ens33" DEVICE="ens33" ONBOOT="yes" IPADDR=X.X.X.X NETMASK=255.255.255.0 GATEWAY=x.x.x.2 systemctl restart network 重启网卡(网络服务) ``` ##### 配置ens33 ``` vi /etc/sysconfig/network-scripts/ifcfg-ens33 DEVICE=ens33 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=none IPV6INIT=no USERCTL=no MASTER=bond0 SLAVE=yes ``` ##### 配置ens36 ``` cp ifcfg-ens33 ifcfg-ens36 (移动) DEVICE=ens36 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=none IPV6INIT=no USERCTL=no MASTER=bond0 SLAVE=yes ``` ##### 配置bond0 ``` vi /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=none IPADDR=192.168.248.128 PREFIX=24 IPV6INIT=no USERCTL=no GATEWAY=192.168.248.2 ``` (和ip地址前三位一样。 一个段,最后一位固定的数字2. 例如本机ip 192.168.23.100. gateway(网关). 192.168.23.2) **systemctl restart network 重启** ``` vi /etc/modprobe.d/bond0.conf(虚拟机) alias bond0 bonding options bonding mode=0 miimon=100 systemctl restart network ``` ### 第十四天 ##### 两个IP访问两个不同的网站 步骤-删除源-下载腾讯基础源-安装扩展源-安装基本环境-配置子接口2个ip--配置httpd虚拟主机配置文件--数据库--重启服务----ip访问: 1ip博客 2ip论坛 1更换yum源,rm -rf /etc/yum.repos.d/* curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo yum -y install epel-release 安装基本环境上一条 配置子接口和httpd及数据库 ``` DocumentRoot /web/boke Require all granted ``` **#安装环境** ``` yum -y install mariadb mariadb-server mariadb-libs php php-mysql php-gd php-fpm php-cli gd httpd unzip lrzsz systemctl stop firewalld ####关闭防火墙 setenforce 0 ##临时关闭selinux ``` 结果: 第一个ip访问博客 第二ip论坛 ##### 服务端&客户端 ( ``` 服务端) 服务名称vsftpd (linux客户端) 必须安装 lftp yum -y install vsftpd systemctl restart vsftpd 两边一定关闭防火墙和 selinux systemctl stop firewalld setenforce 0 cd /var/ftp/ FTP的共享默认目录 mkdir 2102 cd 2102 touch 1.txt 使用你的客户端 lftp x.x.x.x cd 2103 get 1.txt 下载到你进入ftp时候的目录 mirror 2102 下载目录 get 1.txt -o /tmp/ 下载必须指定路径 lftp xxx ``` **get 文件名字 -o 路径 下载到指定路径** **mirror 目录名字 下载目录** ##### 下载互传 开安全组 **server端口** yum -y install vsftpd systemtl restart vsftpd ``` vi /etc/vsftpd/vsftpd.conf anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES ``` systemctl restart vsftpd chmod 777 /var/ftp/2402 **client 端口** lftp x.x.x.x cd 2402 put 1.txt ### 第十五天 **cat >> <mairadb+ lap** 必须保证两台机器的防火墙和selinux关闭 更换国内源-安装epel源 dhcp自动获取ip地址 **数据库中:** ``` yum -y install mariadb mariadb-server systemctl restart mariadb mysqladmin -uroot password "123" mysql -uroot -p123 -e "create database boke;" GRANT ALL PRIVILEGES ON *.* TO 'root'@'x.x.x.x' IDENTIFIED BY '123' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` **lamp 中:** 安装环境,配置httpd服务 倒入源代码 ``` tar xf wordpress.tar.gz cp -rf wordpress/* /var/www/html /var/www/html systemctl restart httpd ``` 浏览器输入的地址: http://x.x.x.x(httpdip) 数据库名:boke 用户:root 密码:123 数据库地址: localhost(数据库的ip地址) ##### PXE+Kickstart无人值守安装操作系统 ``` systemctl stop firewalld setenforce 0 ``` ``` rm -rf /etc/yum.repos.d/* curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo yum -y install epel-release ``` ``` yum install -y dhcp tftp tftp-server syslinux wget vsftpd pykickstart ``` ``` vi /etc/dhcp/dhcpd.conf** ddns-update-style interim; ignore client-updates; authoritative; allow booting; allow bootp; allow unknown-clients; #A slightly different configuration for an internal subnet. subnet 192.168.248.0 netmask 255.255.255.0 { range 192.168.248.110 192.168.248.200; option domain-name-servers 192.168.248.2; option domain-name "server1.example.com"; option routers 192.168.248.2; option broadcast-address 192.168.248.255; default-lease-time 600; max-lease-time 7200; #PXE SERVER IP next-server192.168.248.134; # DHCP server ip filename "pxelinux.0"; } ``` ``` vi /etc/xinetd.d/tftp ``` ``` cp /usr/share/syslinux/{pxelinux.0,menu.c32,memdisk,mboot.c32,chain.c32} /var/lib/tftpboot/ mkdir /var/lib/tftpboot/pxelinux.cfg mkdir /var/lib/tftpboot/netboot ``` **虚拟机设置已连接** ``` mount /dev/cdrom /mnt/ cp -rf /mnt/* /var/ftp/pub/ cp /var/ftp/pub/images/pxeboot/vmlinuz /var/lib/tftpboot/netboot/ cp /var/ftp/pub/images/pxeboot/vmlinuz /var/lib/tftpboot/netboot/ ``` ``` vi /var/ftp/pub/ks.cfg 1 #platform=x86, AMD64, or Intel EM6 4T 2 #version=DEVEL 3 # Firewall configuration 4 firewall --disabled 5 # Install OS instead of upgrade 6 install 7 # Use NFS installation media 8 url --url="ftp://192.168.248.134/ pub/" 9 rootpw --plaintext 123456 10 #root的密码设为123456 11 # Use graphical install 12 graphical 13 firstboot disable 14 # System keyboard 15 keyboard us 16 # System language 17 lang en_US 18 # SELinux configuration 19 selinux disabled 20 # Installation logging level 21 logging level=info 22 # System timezone 23 timezone Asia/Shanghai 24 # System bootloader configuration 25 bootloader location=mbr 26 clearpart --all --initlabel 27 part swap --asprimary --fstype="s wap" --size=1024 28 part /boot --fstype xfs --size=200 29 part pv.01 --size=1 --grow 30 volgroup rootvg01 pv.01 31 logvol / --fstype xfs --name=lv01--vgname=rootvg01 --size=1 --grow 32 reboot 33 34 %packages 35 @core 36 wget 37 %end 38 39 %post 40 %end ``` ``` vi /var/lib/tftpboot/pxelinux.cfg/default default menu.c32 prompt 0 timeout 30 MENU TITLE Togogo.net Linux Training LABEL centos7_x64 MENU LABEL CentOS 7 X64 for newrain KERNEL /netboot/vmlinuz APPEND initrd=/netboot/initrd.img inst.repo=ftp://192.168.248.134/pub ks=ftp://192.168.248.134/pub/ks.cfg ``` **systemctl restart dhcpd vsf