youto`blog - linux
type: channel
link: http://www.youto.club/index.php/tag/linux/
items: 安装 Arch Linux
items: 1+X 初级实验
items: nginx 基础学习
items: apache 实验
items: ansible 学习
items: 网络服务
items: VSFTP 搭建

安装 Arch Linux
type: item
date: 2023-07-26T08:06:00+00:00
description: Arch Linux 1、获取镜像 http://mirrors.163.com/archlinux/iso/latest/ 2、安装前的准备 准备安装介质 启动到 Live 环境 验证引导模式 连接到互联网 更新系统时间 硬盘分区 格式化分区 挂载分区 # 验证引导模式 root@archiso ~ # [ -d /sys/firmware/efi/efivars/ ] && echo "Uefi" || echo "Bios" Uefi 磁盘 Uefi 磁盘分区选 GPT Bios 磁盘分区选 MBR grub 引导 # 获取 IP root@archiso ~ # ip addr | awk '/inet / {print $2}' | grep -v "127.0.0.1/8" 10.52.17.32/24 root@archiso ~ # ping www.baidu.com -c 2 PING www.a.shifen.com (36.152.44.96) 56(84) bytes of data. 64 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=1 ttl=57 time=6.32 ms 64 bytes from 36.152.44.96 (36.152.44.96): icmp_seq=2 ttl=57 time=6.75 ms --- www.a.shifen.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 5135ms rtt min/avg/max/mdev = 6.319/6.532/6.745/0.213 ms root@archiso ~ # timedatectl set-timezone Asia/Shanghai root@archiso ~ # timedatectl status Local time: Tue 2023-04-04 13:16:06 CST Universal time: Tue 2023-04-04 05:16:06 UTC RTC time: Tue 2023-04-04 05:16:06 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: yes NTP service: active RTC in local TZ: no {collapse} {collapse-item label="分区" close} root@archiso ~ # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 687.9M 1 loop /run/archiso/airootfs sda 8:0 0 149.1G 0 disk ├─sda1 8:1 0 149G 0 part │ └─ventoy 254:0 0 809.3M 1 dm └─sda2 8:2 0 32M 0 part mmcblk0 179:0 0 115.3G 0 disk ├─mmcblk0p1 179:1 0 500M 0 part ├─mmcblk0p2 179:2 0 2G 0 part └─mmcblk0p3 179:3 0 112.8G 0 part mmcblk0boot0 179:8 0 4M 1 disk mmcblk0boot1 179:16 0 4M 1 disk root@archiso ~ # fdisk /dev/mmcblk0 Welcome to fdisk (util-linux 2.38.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p Disk /dev/mmcblk0: 115.25 GiB, 123748745216 bytes, 241696768 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x4746e965…

1+X 初级实验
type: item
date: 2021-07-04T11:10:00+00:00
description: 私有云实训 一、本地 YUM 源管理 使用 VMWare 软件启动提供的 xserver1 虚拟机（配置虚拟机 xserver1 的 IP 为 `192.168.100.11`，主机名为 xserver1） 在虚拟机的/root 目录下，存在一个`CentOS-7-x86_64-DVD-1511.iso` 的镜像文件，使用这个镜像文件配置本地 yum 源， 要求将这个镜像文件挂载在`/opt/centos` 目录，请问如何配置自己的 local.repo 文件，使得可以使用该镜像中的软件包，安装软件。 请将 local.repo 文件的内容和执行 yum repolist 的返回结果（简要）写到下方。 echo "TYPE=Ethernet BOOTPROTO=static DEVICE=eno16777736 ONBOOT=yes IPADDR=192.168.100.11 GATEWAY=192.168.100.1 PREFIX=24" > /etc/sysconfig/network-scripts/ifcfg-eno16777736 [root@xserver1 ~]# hostnamectl set-hostname xserver1 [root@xserver1 ~]# bash [root@xserver1 ~]#cd [root@xserver1 ~]# mkdir /opt/centos [root@xserver1 ~]# mount -o loop CentOS-7-x86_64-DVD-1511.iso /opt/centos/ [root@xserver1 ~]# mkdir /etc/yum.repos.d/bak [root@xserver1 ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ echo "[centos] name=centos baseurl=file:///opt/centos gpgcheck=0 enabled=1" > /etc/yum.repos.d/local.repo [root@xserver1 ~]# yum clean all [root@xserver1 ~]# yum repolist Loaded plugins: fastestmirror centos | 3.6 kB 00:00:00 (1/2): centos/group_gz | 155 kB 00:00:00 (2/2): centos/primary_db | 2.8 MB 00:00:00 Determining fastest mirrors repo id repo name status centos centos 3,723 repolist: 3,723 二、FTP 安装使用 使用 xserver1 虚拟机，安装 `ftp 服务`，并配置 ftp 的共享目录为/opt。 使用VMWare 软件继续启动提供的 xserver2 虚拟机（配置虚拟机 xserver2 的 IP 为`192.168.100.12`，主机名为xserver2）， 并创建该虚拟机的 yum 源文件 `ftp.repo` 使用xserver1 的ftp 源（配置文件中的FTP 地址使用主机名）。 配置完成后，将xserver1节点执行 netstat -ntpl 命令（netstat 命令若不能用，则自行安装 net-tools 工具）的返回结果（简要）和将 xserver2 节点的 ftp.repo 文件内容写到下方。 [root@xserver1 ~]# yum instal vsftpd -y [root@xserver1 ~]# echo anon_root=/opt/ >> /etc/vsftpd/vsftpd.conf [root@xserver1 ~]# systemctl start vsftpd && systemctl enable vsftpd echo "TYPE=Ethernet BOOTPROTO=static DEVICE=eno16777736 ONBOOT=yes IPADDR=192.168.100.12 GATEWAY=192.168.100.1 PREFIX=24" > /etc/sysconfig/network-scripts/ifcfg-eno16777736 [root@localhost ~]# hostnamectl set-hostname xserver2 [root@localhost ~]# bash echo "[centos] name=centos baseurl=ftp://192.1…

nginx 基础学习
type: item
date: 2021-06-21T09:28:32+00:00
description: nginx 默认配置 user www www; #程序运行用户和组 worker_processes auto; #启动进程，指定 nginx 启动的工作进程数量，建议按照 cpu 数目来指定，一般等于 cpu 核心数目 error_log /home/wwwlogs/nginx_error.log crit; #全局错误日志 pid /usr/local/nginx/logs/nginx.pid; #主进程 PID 保存文件 worker_rlimit_nofile 51200; #文件描述符数量 events { use epoll; #使用 epoll 模型，对于 2.6 以上的内核，建议使用 epoll 模型以提高性能 worker_connections 51200; #工作进程的最大连接数量 } http{ #网站优化参数 server { #具体的某一网站的配置信息 listen 80; #监听端口 root html; #网页根目录（/usr/local/nginx/html） server_name www.atguigu.com; #服务器域名 index index.html; #默认加载页面 access_log logs/access.log; #访问日志保存位置 ......; location (.*)\.php$ { 用正则匹配具体的访问对象; } location { 跳转等规则; } } server { 虚拟主机; } } Nginx 的状态统计 1. 安装 nginx 时将 --with-http_stub_status_module 模块开启 2. 修改 nginx 配置文件（写入要访问的 server 标签中） location /nginx_status{ stub_status on; access_log off; } 3. 客户端访问网址:http://IP/nginx_status `Active connections` 表示当前的活动连接数 `server accepts handled requests` 表示已经处理的连接信息 三个数字依次表示已处理的连接数、成功的 TCP 握手次数、已处理的请求数 目录保护 1. 原理和 apache 的目录保护原理一样（利用上一个实验接着完成） 2. 在状态统计的 location 中添加： auth_basic "Welcome to nginx_status!"; auth_basic_user_file /usr/local/nginx/html/htpasswd.nginx; 3. 使用 http 的命令 htpasswd 进行用户密码文件的创建（生成在上面指定的位置） #htpasswd -c /usr/local/nginx/html/htpasswd.nginx user 4. 重启 nginx 并再次访问统计页面 基于 IP 的身份验证（访问控制） 1. 接着上一个实验完成操作 2. 在状态统计的 location 中添加： allow 192.168.88.1; deny 192.168.88.0/24; #仅允许 192.168.88.1 访问服务器 虚拟主机（基于域名） 1. 提前准备好两个网站的域名， 并且规划好两个网站网页存放目录 2. 在 Nginx 主配置文件中并列编写两个 server 标签，并分别写好各自信息 server { listen 80; server_name blog.atguigu.com; index index.html index.htm index.php; root html/blog; access_log logs/blog-access.log main; } server { listen 80; server_name bbs.atguigu.com; index index.html index.htm index.php; root html/bbs; access_log logs/bbs-access.log main; } 3. 分别访问两个不同的域名验证结果 反向代理 1. 在另外一台机器上安装 apache， 启动并填写测试页面 2. 在 nginx 服务器的配置文件中添加（写在某一个网站的 server 标签内） location / { proxy_pass http://192.168.88.100:80; #此处填写 apache 服务器的 IP 地址 } 3. 重启 nginx，并使用客户端访问测试 负载调度 1. 使用默认的 rr 轮训算法，修改 nginx 配置文件 upstream bbs { #此标签在 server 标签前添…

apache 实验
type: item
date: 2021-03-18T11:40:00+00:00
description: 配置文件位置 配置文件位置： 源码包安装： PREFIX/etc/httpd.conf（主配置文件） PREFIX/etc/extra/*.conf（子配置文件） rpm包安装： /etc/httpd/conf/httpd.conf 网页文件位置： 源码包安装： PREFIX/htdocs/ rpm包安装： /var/www/html/ 日志文件位置： 源码包安装： PREFIX/logs/ rpm包安装： /var/log/httpd/ 配置文件详解 注意：apache配置文件严格区分大小写 针对主机环境的基本配置参数 ServerRoot /usr/local/apache2 #apache主目录 Listen :80 #监听端口 LoadModule php7 #加载的相关模块 User Group #用户和组 ServerAdmin #管理员邮箱 ServerName #服务器名（没有域名解析时，使用临时解析。默认不开启） ErrorLog "logs/error_log #服务器错误日志 CustomLog "logs/access_log" common #访问记录日志 DirectoryIndex index.html index.php #默认网页文件名,优先级顺序 Include etc/extra/httpd-vhosts.conf #子配置文件中内容也会加载生效 主页目录及权限 DocumentRoot "/usr/local/apache2/htdocs" #网页文件存放目录（默认） <Directory "/usr/local/apache2/htdocs"> #定义指定目录的权限 Options Indexes FollowSymLinks None #没有任何额外权限 All #所有权限（除去MultiViews以外） Indexes #浏览权限（当此目录下没有默认网页文件时，显示目录内容） FollowSymLinks #准许软连接到其他目录 MultiViews #准许文件名泛匹配（需要手动开启模块才有效negotiation） AllowOverride None #定义是否允许目录下.htaccess文件中的权限生效 None #.htaccess中权限不生效 All #文件中所有权限都生效 AuthConfig #文件中，只有网页认证的权限生效 Require all granted（denied） #访问控制列表 </Directory> <IfModule dir_module> #此标签用来指定访问到指定目录时自动加载哪个页面文件 DirectoryIndex index.php index.html #可以写多个，但是有优先级之分 </IfModule> 实验 说明：以下实验均为源码安装apache ​ yum 安装需要去 /usr/share/doc/httpd-2.4.6/ 配置文件，拷贝到 http.d 1. 目录别名 当 apache 接受请求时，在默认情况下会将 DocumentRoot目录中的文件送到客户端 如果想将某一不 在 DocumentRoot 目录中的文件共享到网站上 可以通过建立别名的方式将 URL 指向特定的目录 编辑主配置文件 # vim /usr/local/apache2/conf/httpd.conf Include etc/extra/httpd-autoindex.conf #去掉注释，开启调用子配置文件 编辑子配置文件 # vim /usr/local/apache2/conf/extra/httpd-autoindex.conf alias /icons/ "/usr/local/apache2/icons/" 结构：别名 "真实目录" #真实目录的结尾要有/，否则报错 <Directory "/usr/local/apache2/icons"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> 可以根据模板编写一个自己需要的目录别名 重启服务 2.用户认证 有时候，我们需要给一些特殊的访问。设置一个用户认证机制，增加安全 比如我们的个人网站，一般都是有一个管理后台的，虽然管理后台本身就有密码 但为了更加安全，可以再设置一层用户身 份认证 编辑子配置文件 # vim /usr/local/apache2/etc/httpd.conf 在需要进行登录认证的目录标签中加入如下配置： <Directory "/usr/local/apache2/htdocs/admin"> #声明被保护目录 Options Indexes Fol…

ansible 学习
type: item
date: 2021-03-16T05:49:00+00:00
description: ansible inventory ANSIBLE_CONFIG ansible.cfg 项目目录 ./ansible.cfg 当前用户的家目录 /etc/ansible/ansible.cfg [root@manager ~]# cat /etc/ansible/ansible.cfg inventory = /etc/ansible/hosts #主机列表配置文件 library = /usr/share/my_modules/ #库文件存放目录 remote_tmp = ~/.ansible/tmp #临时py文件存放在远程主机目录 local_tmp = ~/.ansible/tmp #本机的临时执行目录 forks = 5 #默认并发数 sudo_user = root #默认sudo用户 ask_sudo_pass = True #每次执行是否询问sudo的ssh密码 ask_pass = True #每次执行是否询问ssh密码 remote_port = 22 #远程主机端口 host_key_checking = False #跳过检查主机指纹 log_path = /var/log/ansible.log #ansible日志 [privilege_escalation] #如果是普通用户则需要配置提权 become=True become_method=sudo become_user=root become_ask_pass=False 生成密钥 生成密钥名字为dsa ， 生成的时候会提示生成的密钥的路径以及密码，可以不输入，默认在 ~/.ssh/目录下 ssh-keygen -t dsa 将生成的公钥上传到指定的服务器中 ssh-copy-id -i ~/.ssh/id_dsa.pub user@192.168.0.201 创建工作目录 mkdir project1/ vim hosts [youto] 192.168.0.201 192.168.0.202 Ad-Hoc [ ping ] ansible youto -m ping -i hosts [查看磁盘信息] ansible youto -m shell -a "df -h" -i hosts command 不能支持管道符 playbook [][] 示例 检查yum语法 ansible-palaybook --syntax http.yml nfs.yaml nfs 的 配置文件 exports.j2 /data 192.168.0.201(rw) [共享文件夹] [允许访问主机] (权限) - hosts: 192.168.0.202 tasks: # yum 安装 nfs-utils - name: Install NFS Server yum: name=nfs-utils state=present # 分发 配置文件 - name: Configure NFS Server copy: src=./exports.j2 dest=/etc/exports backup=yes # 创建 组 - name: Create NFS Group group: name=nfss gid=666 # 创建 用户 - name: Create NFS User user: name=nfss uid=666 group=666 shell=/sbin/nologin create_home=no # 创建 共享文件夹 - name: Create NFS Data file: path=/data state=directory owner=nfss group=nfss recurse=yes # 开启 nfs 服务 - name: Service NFS Server service: name=nfs state=started enabled=yes - hosts: 192.168.0.201 tasks: # 创建 挂载目录 - name: Client Create NFS Data file: path=/nfs_tt state=directory # 挂载 - name: Client Mount NFS Server mount: src: 192.168.0.202:/data path: /nfs_tt fstype: nfs opts: defaults state: mounted 清空原来http软件 ansible youto -m yum -a "name=httpd state=absent" -i hosts http.yml tt.j2 (index.html 显示页面) httpd.conf.j2…

网络服务
type: item
date: 2021-03-16T05:40:00+00:00
description: 网络服务 网络服务管理 操作行为 CentOS 6 CentOS 7 启动指定服务 service [服务名] start systemctl start [服务名] 关闭指定服务 service [服务名] stop systemctl stop [服务名] 重启指导服务 service [服务名] restart systemctl restart [服务名] 查看指定服务状态 service [服务名] status systemctl status [服务名] 查看所有服务状态 service --status -all systemctl list-nuits 设置服务自启动 chkconfig [服务名] on systemctl enable [服务名] 设置服务不自启动 chkconfig [服务名] off systemctl disable [服务名] 查看所有服务自启动状态 chkconfig --list systemctl list-unit-files 网卡配置 [root@achapc ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none # 连接方式( dhcp/static ) DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=eth0 # 网卡名称 UUID=2045ca8b-6656-4597-a113-76091988dc38 DEVICE=eth0 # 设备名称 ONBOOT=yes # 是否开机加载 IPADDR=192.168.0.200 # IP地址 PREFIX=24 # 子网掩码 GATEWAY=192.168.0.2 # 网关 DNS1=210.28.144.8 # DNS IPV6_PRIVACY=no 注意：选项要大写，小写不生效 修改网卡名（Centos7） 1.修改网卡配置名文件 cp ifcfg-ens33 ifcfg-eth0 2.修改网卡配置文件内容 NAME=eth0 DEVICE=eth0 3.修改grub配置文件 GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0" 4.更新配置文件，并加载新的参数 grub2-mkconfig -o /boot/grub2/grub.cfg 5.重启 reboot TCP/IP 五层常见协议 应用层： FTP, HTTP, SMTP, Telnet, DNS 传输层： TCP, UDP 网络层： IP， ICMP，ARP 数据链路层： PPP 物理层：不常用 端口配置文件: /etc/service 端口号 服务名 功能 20/21 ftp 文件共享 22 ssh 安全远程管理 23 telent 不安全远程管理 25 smtp：简单邮件传输协议 发信 465 smtp(ssl) 发信 110 pop3：邮局1协议 收信 143 imap4 收信 993 imap4(ssl) 收信 80 www(http://) 网页访问 443 www(https://) 加密网页访问 3306 mysql 数据库连接端口 53 DNS 域名解析端口 SSH 用户密码验证 格式： ​ ssh 用户名@IP地址 ​ ssh root@192.168.0.200 -p 指定端口 密钥对登录验证 1.生成密钥对 ssh-keygen -t rsa -b 2048 2.将公钥上传至被控端 ssh-copy-id root@192.168.0.200 3.登录 ssh root@192.168.0.200 ssh 配置文件 位置： /ssh/sshd_confi 1.禁止使用密码登录 PasswordAuthentication no 2.禁止使用root远程登录 PermitRootLogin no 3.修改默认端口 Port 2233 4.限制ssh监听IP ListenAddress 192.168.0.201 scp 格式：scp 本地文件 用户@服务器IP:目录 scp /root/acha.txt root@192.168.0.200:/tm…

VSFTP 搭建
type: item
date: 2021-03-15T15:04:00+00:00
description: VSFTP 软件信息 服务端软件名： vsftpd 客户端软件名：ftp 服务名：vsftpd 端口：20、21、指定范围随机 配置文件：/etc/vsftpd/vsftpd.conf 登录验证方式 匿名用户验证 ​ 用户账号名称： ftp或anonymous ​ 用户账号密码： 无密码 ​ 工作目录： /var/ftp ​ 默认权限： 默认可下载不可上传，上传权限由两部分组成（主配置文件和文件系统） 本地用户验证 ​ 用户账号名称：本地用户（/etc/passwd） ​ 用户账号密码： 用户密码（/etc/shadow） ​ 工作目录：登录用户的宿主目录 ​ 权限：最大权限（drwx------） 安装 yum install -y vsftpd 匿名用户 注意： 在客户端登录后，默认情况下是可以下载的，但不能上传 实现可以上传 a. anon_upload_enable=YES b. 在/var/ftp/下创建上传目录 c. 修改上传目录的权限或所有者，让匿名用户有写入权限 vim /etc/vsftpd/vsftpd.conf 取消 anon_upload_enable=YES 注释 mkdir /var/ftp/upload chomd o+w /var/ftp/upload systemctl restart vsftpd 实现创建目录和文件其他操作 non_mkdir_write_enable=YES 允许创建目录 anon_other_write_enable=YES 开放其他写入权(删除、覆盖、重命名) vim /etc/vsftpd/vsftpd.conf 取消 non_mkdir_write_enable=YESS 注释 添加 anon_other_write_enable=YES 用户进入某个文件夹时，弹出相应的说明 a. 在对应目录下创建 .message 文件，并写入相应内容 b. 确认dirmessage_enable=YES是否启用 c. 尝试却换目录查看效果（同一次登录仅提示一次） vim /etc/vsftpd/vsftpd.conf 确认 dirmessage_enable=YES 是否启用 vim /var/ftp/upload/.message wecome ftp server!!! 实现上传的文件可下载 默认情况下开放上传权限后，上传的文件是无法被下载的，因为文件的其他人位置没有r权限 设置anon_umask=022，可以让上传的文件其他人位置拥有r权限， 然后才能被其他人下载 vim /etc/vsftpd/vsftpd.conf 添加 anon_umask=022 本地用户 实验需求与流程： 服务端需要创建用户并设置密码(所创建的用户，不需要登录操作系统，仅用来登录VSFTP) useradd -s /sbin/nologin username 将所有用户禁锢在自己的家目录下 注： 默认没有禁锢用户时，客户端登录后可以随意切换目录，查看文件所在位置和文件名 开启用户家目录限制， 限制所有用户不能随便切换目录 vim /etc/vsftpd/vsftpd.conf 取消 chroot_local_user=YES 注释 systemctl restart vsftpd 将部分用户禁锢在自己的家目录下 vim /etc/vsftpd/vsftpd.conf 取消 chroot_list_enable=YES 注释 取消 chroot_list_file=/etc/vsftpd/chroot_list 注释 将用户写进白名单 systemctl restart vsftpd 开启白名单功能，允许白名单中的用户随意切换目录 白名单文件所在位置（需自己创建） 配置文件： /etc/vsftpd/ftpusers 所敌人 修改被动模式数据传输使用端口 pasv_enable=YES pasv_min_port=30000 pasv_max_port=35000