基本操作:(以httpd服务为例)
设置服务开机自启动
systemctl enable --now httpd
启动/重启/关闭服务
systemctl start/restart/stop httpd
更改主机名
hostnamectl set-hostname server1.example.com
vim编辑器
一、 防火墙放行端口 1 2 3 4 5 6 http 80 tcp … dhcp 8899 tcp
allow:允许通过指定端口的网络流量。
deny:拒绝通过指定端口的网络流量。
reject:拒绝通过指定端口的网络流量,并发送错误响应包给客户端。
使用示例:# 格式:ufw allow/deny 端口/协议
开启或关闭ufw
开放端口
1 ufw allow <port>/<protocol>
例如,允许TCP协议的80端口通过ufw:
禁用端口
1 ufw deny <port>/<protocol>
二、ssh免密 对server1和server2配置免密,使俩台机器可以互相免密登录
1 2 3 4 ssh-key-gen -t rsa ssh-copy-id root@server1
三、网络配置 配置apt源并使之生效
1 2 3 4 5 6 vim /etc/apt/source.list deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse apt update
注:免密、网络、端口配置失败,后面题目将做不出来
四、配置虚拟主机
基于端口
基于域名
基于IP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 apt install apache2 -y systemctl start apache2 systemctl enable apache2 apt install ufw ufw enable ufw allow 80 [root@UOS /var/www] [root@UOS /var/www] [root@UOS /var/www] [root@UOS /var/www] [root@UOS /var/www] [root@UOS /var/www]
基于端口的虚拟主机 修改 /etc/apache2/sites-available/000-default.conf默认配置
若 /etc/apache2/sites-enabled/ vhosts.conf 配置了,则不使用默认配置
这是网页配置文件,决定网页在哪里
1 2 3 4 <VirtualHost *:8080> DocumentRoot /var/www/heml_1 </VirtualHost>
修改/etc/apache目录下的ports.conf文件,在Listen 80下面加上一条Listen 8080,监听8080端口
1 2 3 4 5 Listen 80 Listen 8080 systemctl restart apache2 打开192.168.22.138 验证
基于IP的虚拟主机 添加网卡,配置另一个IP,
nmtui 图形化配置
1 2 3 4 5 6 7 8 9 10 <VirtualHost 192.168.22.138:8080> DocumentRoot /var/www/heml_1 </VirtualHost> <VirtualHost 192.168.22.140:8080> DocumentRoot /var/www/heml_2 </VirtualHost> <VirtualHost 192.168.22.142:8080> DocumentRoot /var/www/heml_3 </VirtualHost>
1 2 3 systemctl restart apache2 打开 192.168.22.138 和 192.168.22.140 验证
基于域名的虚拟主机 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 vim /etc/hosts 192.168.22.138 www.uos1.com <VirtualHost *:8080> ServerName www.uos1.com DocumentRoot /var/www/heml_1 </VirtualHost> <VirtualHost *:8080> ServerName www.uos2.com DocumentRoot /var/www/heml_2 </VirtualHost> <VirtualHost *:8080> ServerName www.uos3.com DocumentRoot /var/www/heml_3 </VirtualHost>
三种方法一起使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <VirtualHost 192.168.22.138:80> DocumentRoot /var/www/html_1 </VirtualHost> <VirtualHost 192.168.22.140:80> DocumentRoot /var/www/html_2 </VirtualHost> <VirtualHost *:80> ServerName www.uos3.com DocumentRoot /var/www/html_3 </VirtualHost>
五、时钟同步 1 2 3 4 5 6 apt install chrony vim /etc/chrony/chrony.conf systemctl restart chrony systemctl enable chronyd
六、脚本编写 编写一个shell脚本,要求找出1..200内能被6整除的数字,并除以2后输出
vim script.sh
1 2 3 4 5 6 7 8 9 10 # !/bin/bash for i in {1..200} do if [ $(($i%6)) -eq 0 ] then result=$(($i/2)) echo $result fi done
1 2 chmod +x script.sh ./script.sh
七、Docker配置与应用 此题要求拉取服务器仓库上一个镜像,所以掌握Docker基本操作即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 镜像的基本操作命令 docker search uos docker pull uosproject/uos docker images docker save uosproject/uos:latest -o uos.tar docker load -i nginx.tar docker rmi nginx 镜像的导出和导入 docker save uosproject/uos > /tmp/uos.tar docker rmi uosproject/uos docker load < /tmp/uos.tar docker images 容器基本命令 docker run -it uosproject/uos bash docker ps -a docker stop 597b8cd3ca55 docker start 597b8cd3ca55 docker restart 597b8cd3ca55 docker logs 597b8cd3ca55 docker tag uosproject/uos:latest uosproject/txuos:v1 docker inspect uosproject/uos docker attach 597b8cd3ca55 docker ps docker exec -it 597b8cd3ca55 bash docker top 597b8cd3ca55
可以尝试搭建一个apache2容器或者nginx容器
八、数据库基本操作 在server1上,建立三个mariadb用户dbuser1/dbuer2/dbuser3 在server1上,建立三个数据库uosdb1,/uosdb2/uosdb3 一一对应授权: dbuser1只可访问uosdb1 dbuser2只可访问uosdb2 dbuser3只可访问uosdb3
九、ansible配置 下载ansible并配置,使server1可以管理server2
下载ansible配置ansible
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 vim /etc/ansible/ansible.cfg [defaults] inventory=/home/root/ansible/inventory remote_user=root host_key_checking=False [privilege_escalation] become=True become_method=sudo become_user=root become_ask_pass=False vim /etc/ansible/inventory server1 server2 [group1] server1 [group2] server2 [group1:children] group2
比赛的时候好像只需要配置主机清单inventory
若不清楚模块具体用法,安装ansible后可通过ansible-doc systemd查看用法(以systemd模块为例)
十、自动化安装 编写playbook,在所有控制节点安装php和mariadb
看需求,若安装软件包则是第一个tasks,此处用了一个循环,可以下载多个安装包,比赛的时候是php和mariadb这两个。
若安装软件包组,则为第二个tasks,软件包组有空格,要加个@
第三个tasks为更新所有软件包
- hosts 是指定任务运行的控制节点,all为所有,若只想在某个控制节点运行playbook,只需要写那个控制节点的主机名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [root@controller ansible ]$ vim package.yml - name: Install package hosts: all become: true tasks: - name: Update apt cache apt: update_cache=yes - name: Install mariadb and php apt: name={{ item }} state=present with_items: - mariadb - php - name: Enable service systemd: name: nginx.service enabled: yes state: started [admin@controller ansible ]$ ansible-playbook packages.yml
十一、替换文件内容 编写一个playbook,要求将被控段/var/www/html下的index.html文件替换成
this is file1
this is file2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [admin@controller ansible ]$ vim replace.yml - hosts: all tasks: - name: replace this is file1 replace: path: /var/www/html/index1.html regexp: '.*' replace: 'this is file1' - name: replace this is file2 replace: path: /var/www/html/index2.html regexp: '.*' replace: 'this is file2' [admin@controller ansible ]$ ansible-playbook replace.yml
除以上知识外,比赛还将涉及到基础服务配置(nginx、DHCP、)、NFS、逻辑卷、vdo等