sudo apt install apache2 mysql-server php php-mysql php-xml -y
git clone https://gitee.com/3dming/DiscuzL.git cp -a DiscuzL/upload/* /var/www/html/ vi /etc/mysql/mysql.conf.d/mysqld.cnf mysql -u root -p create database discuz; create user Soar@'%' identified by 'Soar1233456'; GRANT ALL ON *.* TO 'Soar'@'%'; FLUSH PRIVILEGES; exit; systemctl restart apache22022年4月25日星期一
2022年4月24日星期日
mysql 配置密码
sed -i 's/bind-address/#bind-address/g' /etc/mysql/mysql.conf.d/mysqld.cnf mysql -u root -p create user root@'%' identified by 'Soar123456!'; FLUSH PRIVILEGES; exit;
CentOS搭建Discuz论坛
Discuz 是基于PHP网页,在 Linux 和 windows 两平台均可部署的
准备LAMP环境
安装MySQL
# 下载安装repo源
[root@localhost ~]# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
[root@localhost ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# 安装
[root@localhost ~]# yum -y install mysql-server
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# chkconfig mysqld on
设置mysql登录密码[root@localhost ~]# mysqladmin -uroot password '123.com'
安装Apache组件
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
安装PHP
[root@localhost ~]# yum install php php-fpm php-mysql -y
[root@localhost ~]# vim /etc/php.ini
short_open_tag = On
[root@localhost ~]# systemctl start php-fpm
[root@localhost ~]# systemctl enable php-fpm
安装配置Discuz
下载Discuz
[root@localhost ~]# wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip
解压部署
[root@localhost ~]# unzip Discuz_X3.2_SC_UTF8.zip
[root@localhost ~]# cp -r upload/* /var/www/html/
[root@localhost ~]# chmod -R 777 /var/www/html
[root@localhost ~]# cd /var/www/html/config
[root@localhost config]# cp config_global_default.php config_global.php
[root@localhost config]# cp config_ucenter_default.php config_ucenter.php
[root@localhost ~]# systemctl restart httpd
访问http://192.168.1.14/install
按照步骤安装完成即可
CentOS部署Jumpserver堡垒机
硬件要求4G内存,双核cpu
cd /opt
yum -y install wget git
git clone --depth=1 https://github.com/jumpserver/setuptools.git
cd setuptools
cp config_example.conf config.conf
./jmsctl.sh install
访问http://192.168.1.14
CentOS使用yum安装MySQL5.7报检索密钥错误解决方法
使用yum安装MySQL时报错
yum -y install mysql mysql-server
yum -y install mysql-community-server
报错内容如下
warning: /var/cache/yum/x86_64/7/mysql57-community/packages/mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 检索密钥
源 "MySQL 5.7 Community Server" 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。
失败的软件包是:mysql-community-libs-compat-5.7.37-1.el7.x86_64
GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
处理方式有两种
- 到mysql官网下载校验文件
- 修改配置跳过校验
本文记录第二种方式
编辑文件/etc/yum.repos.d/mysql-community.repo
修改对应安装版本的gpgcheck=0
即可,默认值为1
[mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
再次安装即可
CentOS7安装完成后没有网络
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-ens33
输入命令:systemctl restart network
2022年4月17日星期日
docker 安装 vim
docker exec -it mysql bash
mv /etc/apt/sources.list /etc/apt/sources.list.bak
echo “deb http://mirrors.163.com/debian/ jessie main non-free contrib” >> /etc/apt/sources.list
echo “deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib” >>/etc/apt/sources.list
echo “deb-src http://mirrors.163.com/debian/ jessie main non-free contrib” >>/etc/apt/sources.list
echo “deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib” >>/etc/apt/sources.list
echo “deb http://mirrors.163.com/debian/ buster main” >> /etc/apt/sources.list
echo “deb http://mirrors.163.com/debian/debian-security buster/updates main” >>/etc/apt/sources.list echo “deb-src http://mirrors.163.com/debian/ buster-updates main” >>/etc/apt/sources.list
deb http://deb.debian.org/debian buster main
deb http://security.debian.org/debian-security buster/updates main
deb http://deb.debian.org/debian buster-updates main
sed -i ‘s/deb.debian.org/mirrors.163.com/g’ /etc/apt/sources.list
sed -i ‘s/security.debian.org/mirrors.163.com/g’ /etc/apt/sources.list
apt-get update -y
apt-get install vim -y
apt-get install wget -y
apt-get install curl -y
apt-get install unzip -y
Ubuntu20.04搭建 wordpress
sudo apt-get update -y
sudo apt-add-repository ppa:ondrej/php
sudo apt-get install nginx mysql-server php8.1-fpm php8.1-mysql -y
sudo apt install nginx=1.18.0-0ubuntu1.2
vi /etc/nginx/nginx.conf
vi /etc/nginx/conf.d/default.conf
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
tar zxvf latest-zh_CN.tar.gz
cp wordpress/wp-config-sample.php wordpress/wp-config.php
chown -R www-data.www-data wordpress
vi /usr/share/nginx/wordpress/wp-config.php
vi /etc/mysql/mysql.conf.d/mysqld.cnf
mysql -u root -p
create database Soar;
create user Soar@’%’ identified by ‘123456’;
GRANT ALL ON . TO ‘Soar’@’%’;
FLUSH PRIVILEGES;
exit;
systemctl restart nginx
server{
listen 80;
listen [::]:80;
server_name www.wenping.ga wenping.ga;
rewrite ^(.*) https://${server_name}$1 permanent;
}
server{
listen 443 ssl;
listen [::]:443 ssl;
server_name www.wenping.ga wenping.ga;#可用域名
ssl_certificate /root/cert.crt; #证书路径
ssl_certificate_key /root/private.key; #私钥路径
root /usr/share/nginx/wordpress;
index index.php index.html;
server_tokens off;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers “ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE”;
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on; #ensure your cert is capable
ssl_stapling_verify on; #ensure your cert is capable
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
}
Docker 安装和卸载
wget -qO- get.docker.com | bash
sudo apt install docker.io -y
docker pull teddysun/shadowsocks-libev
docker pull teddysun/caddy
docker run -d --net host --name caddy --restart always -v /etc/caddy:/etc/caddy -v /var/www/html:/var/www/html teddysun/caddy
docker run -d -p 80:80 --name caddy --restart=always -v /etc/caddy:/etc/caddy -v $(pwd)/site:/www teddysun/caddy
docker run -d -p 443:443 --name caddy --restart always --net host -v /root/caddy:/root/caddy -v /etc/site:/etc/site teddysun/caddy
docker pull teddysun/kms
docker run -d -p 1688:1688 --name kms --restart=always teddysun/kms
docker run -d --name freenom --restart always -v $(pwd):/conf -v $(pwd)/logs:/app/logs luolongfei/freenom
docker pull mysql:latest
docker search mysql
docker run -d --name mysql --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
docker exec -it mysql bash
docker exec -it wordpress bash
docker run --name=wordpress -p 80:80 -v /home/wordpress:/var/www/html -d --restart=always wordpress:latest
docker stop mysql && docker rm mysql && docker stop wordpress && docker image rm wordpress mysql
docker pull library/nginx
docker run -d --name nginx -p 80:80 library/nginx
docker run -itd --name nginx -p 80:80 -p 443:443 -v /home/www:/usr/share/nginx/html -v /home/logs:/var/log/nginx library/nginx
docker 卸载
dpkg -l | grep docker
apt remove --auto-remove docker.io -y
apt remove --purge docker -y
apt remove --purge docker-ce -y
apt remove --purge docker-* -y
2022年4月16日星期六
CenteOS7–基础学习
linux 命令行快捷键
tab 命令补全
Ctrl+a 光标移动到行首
Ctrl+e 光标移动到行尾
Ctrl+k 剪切光标到行尾
Ctrl+u 剪切光标到行首
Ctrl+w 剪切光标前一个单词
Ctrl+y 粘贴剪切的内容
Ctrl+c 终止终端在执行的任务
Ctrl+z 暂停执行在终端的任务
Ctrl+l 清空屏幕 等于clear
Ctrl+d 退出shell命令行
Ctrl+install 复制命令行的内容
shift+install 粘贴命令行的内容
!! 执行上一条命令
!pw 执行最近以pw开头的命令(pw可以设置为任何命令的开头)
!num 执行历史命令表num行的命令(num 表示为数字,即行号)
!$ 上一条命令的最后一个参数(相当于 Esc+.)
Esc+. 获取上一条命令的最后部分
开关机,重启
shutdown
-r 重启系统(后面接数字表示在多少分钟后重启,后面接now,表示立即重启)
-h 定时关机(后面接数字表示在多少分钟后关机,后面接now,表示立即关机)
-c 取消定时关机
关机命令:
halt
poweroff
init 0
重启命令:
reboot
init 6
文件和目录操作命令
pwd #显示当前所在位置
cd #切换目录
/ #切换到根目录
- #切换到上一次目录
~ #切换到家目录
.. #切换到上一层目录
tree #以树形结构显示目录
-a #显示所有问文件,包括隐藏文件
-d #只显示目录
-L #遍历目录的最大层数
-f #显示完整的路径名称
-i #不显示树枝部分
mkdir #创建目录
-p #递归创建
-v #显示创建的过程
-m #创建时指定目录的权限
touch #创建文件
-a #只更改指定文件的最后访问时间
-m #只更改指定文件的最后修改时间
-d #修改指定文件的时间属性
-r #使文件的时间属性与另外的文件相同
-t #自定是设置文件的时间格式
ls #显示目录下的内容及相关属性信息
-l #显示文件的详细信息
-a #显示隐藏文件
-h #人类可读
-t #以最后修改时间排序
-r #逆序
-F #在条目后面加上文件类型的指示符号
-d #显示目录本身信息
-i #显示索引节点信息
cp #复制文件或目录
-r #递归复制
-p #复制保持属性不变
-d #复制保持软连接
-a #全复制(等同于-rpd)
mv #移动文件或重命名
rm #删除
-r #删除目录
-f #强制删除,没有提示
rmdir #删除空文件
ln #硬链接与软连接
-s
find #查找目录下的文件(*****)
-f
-name
xargs #将标准输入换成命令行参数
rename #重命名文件
chattr #改变文件扩展属性
+i #上锁:使root用户也不能直接修改相应文件
-i #解锁
lsattr #查看文件扩展属性
file #显示文件类型
md5sum #计算和校验文件的MD5值
chown #改变文件或目录的用户和用户组
-R #递归更改目录下所有文件的属主属组权限
chown -R Alex01.Alex01 oldboy_dir
chmod #改变文件或目录的权限
chmod u+s / chmod 4755 文件信息 (特殊权限位:在属主权限位多出s信息)
作用: setuid权限位设置,将文件属主拥有的能力,分配给所有人
chmod o+t 目录信息 / chmod 1777 目录信息 (粘滞位: 创建一个共享目录)
作用: 可以将不同用户信息放置到共享目录中,实现不同用户数据可以互相查看,但是不可以互相随意修改
umask #显示或设置权限掩盖
文件过滤及内容编辑处理命令
cat #合并文件或查看文件
tac #反向显示文件内容
more #分页显示文件内容
less #分页显示文件内容
head #显示文件头部内容
tail #显示文件尾部内容
tialf #跟踪文件日志
cut #从文本中提取一段文字并输出
split #分割文件
paste #合并文件
sort #文本排序
uniq #去重
wc #统计文件的行数,单词数,字节数
diff #比较两个文件的不同
tr #替换或删除文字
vim #纯文本编辑器
三剑客
grep #文本过滤工具(查找过滤)
-r #在文件外查找文件内部的内容
-v #取反
-o #只输出匹配的内容
-i #不区分大小写
-E #扩展正则
sed #字节流编辑器(取行,替换)
-i #内存写入磁盘
-r #扩展正则
-n #默认不输出
sed -ri 's/搜寻的内容/替换成什么内容/g' file
#sed替换文件中的内容
awk #awk工具(取列)
-F #指定分隔符
NR #表示行号
$NF #表示最后的列数
$0 #表示一行的所有内容
$X #表示x列的内容
awk -F ":" 'NR=1 {print $1,$5,$NF}' file
#打印出文件第一行中,以:分割的第1列,第5列,最后一列的内容
# 三剑客常用的一些操作
1. 取ip
grep: ip a s eth0|grep -oE "[0-9]+.[0-9]+.[0-9]+.[0-9]+"
sed: ip a s eth0|sed -nr '3s#^.*et (.*)/24.*eth0$#\1#gp'
awk: ip a s eth0|awk 'NR==3'|awk -F "[ /]" '{print $6}'
2. 统计日志
awk -F '/' '{print $3}' /var/log/messages
awk '{url[$1]++}END{for(i in url)print i,url[i]}' test
3. 替换网卡ip
sed -ri.back 's/10.0.0.5/10.0.0.10/g'
4. 当前WEB服务器中联接次数最多的ip地址
netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -nr
linux信息显示与搜索文件命令
uname #显示系统信息
-a #查看所有
-r #查看版本信息
hostname #显示或设置系统的主机名
set-hosstname + 主机名 #永久修改主机名
主机名 #临时修改主机名
stat #显示文件或文件系统状态(查看文件时间)
du #统计磁盘空间使用情况(查看文件大小)
-sh #人类可读方式显示文件大小
du -sh ./* #递归排查block过大文件,清理空间
date #显示与设置系统时间
echo #显示一行文本
watch #监视命令执行情况
which #显示命令的全路径
whereis #显示命令及其相关文件的全路径
locate #快速定位文件路径
dmesg #系统启动异常诊断
文件备份与压缩命令
tar #打包备份
-zcvf #压缩文件,定义压缩文件名(文件名需要以tar.gz结尾)
-xvf #解压文件
-C #指定解压路径
gzip #压缩或解压缩
zip #打包和压缩工具
unzip #解压zip文件
scp #远程文件复制
rsync #文件同步工具
linux用户管理及信息查询
useradd #创建用户
-u 指定用户uid数值信息
-g 指定用户所属的主要组信息
-M 不创建家目录
-s 指定使用的shell方式
-G 指定用户所属的附属组信息
-c 添加指定用户注释说明信息
userdel #删除用户
-r 彻底删除用户以及用户的家目录
usermod #修改用户信息
-s 修改用户的登录方式
-g 修改用户的主要的组信息
-G 修改用户的附属组信息
-c 修改用户的注释信息
groupadd #创建用户组
-g 指定用户所属的主要组信息
groupdel #删除用户组
passwd #修改用户密码
passwd oldboy 123456 交互式设置密码
echo 123456|passwd --stdin oldboy 非交互设置密码
change #修改用户密码有效期
chpasswd #批量更新用户密码
su #切换用户
visudo #编辑sudoers文件
sudo #以令一用户身份执行命令
id #显示用户的全信息
w #显示已经登录的用户信息
who #显示已经登录的用户信息
users #显示已经登录的用户
whoami #显示当前登录用户的名字
last #显示用户登录列表
lastb #显示用户登陆失败的记录
lastlog #显示所有用户的最近登录记录
linux 磁盘与文件系统管理命令
fadisk #磁盘分区工具
parted #磁盘分区工具(2T以上)
mkfs #创建linux系统文件
fsck #检查并修复linux文件系统
dd #转换或复制文件
mount #挂载文件系统
umount #卸载文件系统
-lf #强制卸载
df #报告文件系统磁盘空间的使用情况
mkswap #创建交换分区
swapon #激活交换分区
swapoff #关闭交换分区
sync #刷新文件系统缓冲区
linux 进程管理命令
ps #查看进程
-aux
-ef
pstree #显示进程状态树
pgrep #查找匹配条件的进程
kill #终止进程
-9 #强制终止进程
pkill #通过进程名终止进程
killall #通过进程名终止进程
top #显示系统资源事实状况
nice #调整系统运行时的优先级
renice #调整系统运行中的进程的优先级
nohup #用户退出系统继续工作
strace #跟踪进程的系统调用
ltsce #跟踪进程调用库函数
runlevel #输出对当前运行级别
init #初始化linux 进程
service #管理系统服务(centos-7 使用 systemctl)
linux 网络管理命令
ifconfig #配置或显示网络接口信息
ifup #激活网络接口
ifdown #关闭网络接口
route #显示或管理路由表
arp #管理系统的arp缓存
ip #网络配置工具
netstat #查看网络状态
-lnutp
ss #查看网络状态
ping #测试主机之间网络的连通性
traceroute #追踪数据传输路由状况
arping #发送arp请求
telnet #远程登录主机
nc #多功能网络工具
ssh #安全的远程登录主机
wget #命令行下载工具
mail #发送和接受文件
nslookup #域名查询工具
host #域名查询工具
nmap #端口扫描器
tcpdump #监听网络流量
linux 系统管理命令
lsof #查看进程打开的文件
uptime #显示系统的运行时间及负载
free #查看系统内存信息
iftop #动态显示网络借口流量信息
vmstat #虚拟内存统计
mpstat #cpu信息统计
iostat #io信息统计
iotop #动态显示磁盘
sar #收集系统信息
chkconfig #管理开机服务
setup #系统管理工具
ethtool #查询网卡参数
rpm #rpm包管理工具 *****
-ivh 安装rpm包
-ql 查看rpm包的相关文件
-qa 查看是否安装这个包
-e 卸载
yum #自动化rpm包管理工具 *****
-y install 安装软件
provides 查看命令属于哪个包
repolist 查看yum源及仓库数量
remove 卸载(会卸载依赖)
clean all 缓冲数据
linux 系统常用内置命令
sourec #刷新文件
sourec file (等同于 . file)
alias #别名
alias rm="echo please-mv"
unalias #取消别名
unalias rm
history #查看历史命令
export #设置全局变量
export q=1231231
unset #清空变量
unset q
基础学习–目录结构
/lost #found系统修复
/bin #二进制命令所在的目录
/boot #系统引导程序所需要的文件目录
/dev #设备软目录
/etc #系统配置,启动程序
/home #普通用户家目录
/lib #启动系统和运行命令需要的共享库文件和内核模块存放
/mnt #临时挂载点
/opt #额外的软件包安装目录
/proc #系统的内核目录
/root #root的家目录,最高权限
/sbin #root使用的 二进制命令所在的目录
/tmp #临时存放目录
/usr #用户或协同软件应用程序目录
/var #存放日志的目录
/etc 目录下的重要配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 #网卡配置文件
/etc/resolv.conf #linux系统DNS客户端配置文件
/etc/hostname #主机名配置文件
/etc/hosts #本地DNS配置文件
/etc/fastb #开机自动挂载配置文件
/etc/rc.loacl #开机自启配置文件
/etc/inittab #系统启动运行级别配置文件
/etc/profile | /etc/bashrc #配置系统的环境变量|别名 文件
/etc/profile.d #用户登陆后执行的脚本所在的目录
/etc/issue #配置在用户登录端前显示的信息文件
/etc/motd #配置在用户登录端后显示的信息文件
/etc/redhat-release #声明redhat版本号和名称信息的文件
========================================================================================
/etc/passwd #记录系统用户信息文件
/etc/shadow #系统用户密码文件
/etc/group #组用户记录文件
/etc/gshadow #组用户密码信
修改/etc 目录下的重要配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
# 修改之后使用systemcet restart network 重启生效
/etc/resolv.conf
# 本地DNS配置文件
/etc/hostname
# 临时修改:
hostname 主机名
# 永久修改:(重启系统才能加载配置文件)
vim /etc/hostname (在配置文件里修改主机名)
# 通过命令:直接可以即临时修改,又永久修改
hostnamectl set-hostname 主机名
##### 网卡配置文件详解
[root@Huang ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet #网络类型:以太网
BOOTPROTO=none #是否开启网络 none:静态开启 dhcp:动态开启
NAME=eth0 #网卡逻辑名称
DEVICE=eth0 #网卡物理名称
ONBOOT=yes #是否开机启动
IPADDR=10.0.0.200 #ip地址
PREFIX=24 #子网掩码 (也可以写作:255.255.255.0)
GATEWAY=10.0.0.254 #网关
DNS1=223.5.5.5 #DNS
/proc 目录下的重要知识介绍
/proc/loadavg #系统的负载信息
/proc/memrino #系统的内存信息
/proc/cpuinfo #系统的cpu信息
/proc/mounts #系统的挂载信息
/usr 目录下的重要知识介绍
/usr/loacl #编译安装的默认文件路径
/usr/src #存放源码文件的目录
/var 目录下的重要知识介绍
/var/log #记录系统运行文件的日志所在目录
/var/log/messages #系统级别的日志文件
/var/log/secure #用户登录信息日志文件(安全,重复多次登录)
/var/log/dmesg #记录硬件信息加载情况的日志文件(也可以用 dmesg 命令查看)
基础学习–开机启动流程
CentOS-6启动流程
1. 按下电源
2. bios开机自检
3. mbr引导
4. grub菜单
5. 加载内核
6. 运行init进程
7. 读取/etc/inittab
8. 读取/etc/rc.sysinit初始化系统
9. 根据运行级别运行/etc/rc数字.d 下面的脚本
10. 启动mingetty显示登录界面
CentOS-7启动流程
1. 按下电源
2. bios开机自检
3. mbr引导
4. grub菜单
5. 加载内核
6. 运行systemd进程
7. systemd执行默认target配置(执行默认target配置文件/etc/systemd/system/default.target)
8. 并行启动各种服务(/usr/lib/systemd/system/ /etc/systemd/system/)
9. 启动mingetty显示登录界面
基础学习–CentOS-6/7 的区别
系统
项目 | CentOS6 | CentOS7 |
---|---|---|
1. 安装过程 | 6 一步一步 | 7随意 |
2. 默认的文件系统 | ext4 | xfs |
3. 启动流程 | 串行 | 并行 |
4. 运行级别 | runlevel | target |
5. 内核 | 2.6.32 | 3.10.0 |
6. 开机自启动服务 | chkconfig | systemctl enable/disable rsyncd |
7. 开启或关闭服务 | /etc/init.d/network stop/start | systemctl start/stop rsyncd |
8. 网卡命名 | eth0 eth1 | ens33 |
9. 普通用户uid | >=500 | >=1000 |
10.修改主机名 | hostname和/etc/sysconfig/network | hostnamectl和/etc/hostname |
11.修改字符集 | /etc/sysconfig/i18n | localectl 和/etc/locale.conf |
12.软件包名字 | tree-1.6.0-10.el6.x86_64 el6 C6 | tree-1.6.0-10.el7.x86_64 el7 C7 |
13.管理网卡主要服务: | network | NetworkManager network |
14.防火墙: | iptables | firewalld |
15.查看内存free -h | 可用内存需要看bufer/cache这一行的 | 可用内存直接看 ava |
16./etc/fstab | /根分区和/boot分区默认都是检查 | /根分区和/boot分区默认都是不检查 |
服务软件
项目 | CentOS6 | CentOS7 |
---|---|---|
1.rsync | 直接使用rsync用户即可 | 需要使用fake super = yes |
2.数据库 | yum源中默认是MySQL | yum源中默认是MariaDB |
3.时间同步 | ntpdate 或ntpd服务 | chrony |
基础学习–系统运行级别
查看系统运行级别方法:runlevel
[root@Huang ~]# runlevel
N 3
切换运行级别:
临时调整:
init 切换的运行级别
永久调整:
centos6:
# vi /etc/inittab
centos7:
# systemctl set-default rescue.target
检查默认运行级别:
# systemctl get-default
CentOS-6启动级别
启动级别:
00 系统的关机级别 init 0 进入到关机状态
01 系统的单用户模式 用于修复系统 或重置密码信息 没有网络
02 系统的多用户模式 没有网络
03 系统的多用户模式 正常系统运行级别多用户模式级别 有网络
04 预留级别
05 图形化界面级别
06 系统的重启级别
CentOS-7启动级别
启动级别:target目标
00 系统的关机级别 init 1 进入到维修模式 poweroff.target
01 系统的单用户模式 用于修复系统 或重置密码信息 rescue.target
02 系统的多用户模式 没有网络 multi-user.target
03 系统的多用户模式 正常系统运行级别多用户模式级别 有网络 multi-user.target
04 预留级别 multi-user.target
05 图形化界面级别 graphical.target
06 系统的重启级别 reboot.target
基础学习-vi/vim
# 命令模式
vi 文件信息
i --- 进入编辑模式
esc --- 退出编辑模式
:wq --- 保存并退出
:w
:q
:wq!--- 强制保存退出
:q! --- 强制退出
u --- 撤销操作
:noh--- 取消高亮
# 命令模式-->插入模式
i --- 表示从光标所在位置进入编辑状态
I --- 表示将光标移动到一行的行首,再进入编辑状态
o --- 在光标所在行的下面,新起一行进行编辑
O --- 在光变所在行的上面,新起一行进行编辑
a --- 将光标移动到右边的下一个字符,进行编辑
A --- 将光标移动到一行的行尾,进入到编辑状态
C --- 将光标到行尾内容进行删除,并进入编辑状态
cc --- 将整行内容进行删除并进入编辑状态
# 底行模式
: 输入一些命令
/ 进入搜索状态(向下搜索 n依次向下)
? 进入搜索状态(向上搜索 n依次向上)
:set nu 显示行号
:set nonu 取消显示行号
基础学习–系统符号/正则符号
系统符号
# 基础符号系列
美元符号:$
叹号符号: ! 取反
竖线符号: | 管道符号 前一个命令执行结果交给后面命令处理
井号符号: # 注释/root用户提示符
# 引号符号系列
'' 输出的信息,所见即所得
"" 和单引号功能类似 但对特殊信息会做解析
# 重定向符号
>或1> 标准输出重定向符号
2> 错误输出重定向符号
>>或1> 标准输出追加重定向符号
2>> 错误输出追加重定向符号
< 标准输入重定向符号
<< 标准输入追加重定向符号
# 路径信息系列
../ 上一级目录
./ 当前路径
~ 返回到家目录
- 两个目录之间进行快速切换
# 逻辑符号系列
&& 与逻辑符号 前一个命令执行成功, 再执行后面的命令
|| 或逻辑符号 前一个命令执行失败, 再执行后面的命令
系统通配符
* 模糊匹配所有内容 oldboy old ol o*
{} 生成序列信息 (生成一行序列)
正则符号
# 基础正则符号
^ 以什么开头的信息
$ 以什么结尾的信息
^$ 空行
. 匹配任意一个字符,且只有一个字符
* 匹配前一个字符连续出现了0次或者多次
.* 匹配任意所有信息
\ 转义符号
[ ] 匹配多个字符信息
[^] 排除符号
# 扩展正则符号
+ 匹配前一个字符连续出现了1次或者多次
| 并且符号,用于匹配多个信息
() 指定信息进行整体匹配
{} 可以指定字符连续匹配的次数
? 定义匹配前一个字符出现0或者1次
shell脚本的判断/比较 符号
判断比较符号
-gt >
-lt <
-eq ==
-ge >=
-le <=
-ne <>
基础学习–定时任务
# 用户定时配置文件
/var/spool/cron/用户名
crontab -l #用户定时任务查看
crontab -e #用户定时任务编辑
# 系统定时配置文件
/etc/crontab
# 定时任务日志文件
/var/log/cron
# 定时任务编写格式:
编写语法规范:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
* * * * * 具体做什么事情
分 时 日 月 周
# 特殊的时间设置:
*/5 * * * * 每隔5分钟
01-05 * * * * 每小时的1到5分钟
14,20 * * * * 每小时的14分和20分钟
# 定时任务设置注意事项:
1) 定时任务编写时需要加注释信息
2) 文件的路径尽量采用绝对路径
3) 命令信息最好也要用绝对路径
4) 编写定时任务尽量在后面加上重定向黑洞 &>/dev/null
5) 尽可能让命令不要产生正确或错误的输出信息
tar zcvf --> tar zcf
6) 多个定时任务命令,最好使用脚本实现
7) 定时任务中无法识别任务中的一些特殊符号
解决方式一: 利用转义符号
* * * * * /bin/date "+\%F \%T" >/tmp/time.txt
解决方式二: 利用脚本编写任务
vim /oldboy/date.sh
/bin/date "+%F %T"
* * * * * /bin/sh /oldboy/date.sh &>/dev/null
基础学习–linux磁盘分区方法
# 情况一: 磁盘分区实践--磁盘小于2T
1) 准备磁盘环境
准备了一块新的10G硬盘
2) 在系统中检查是否识别到了新的硬盘
检查是否有新的磁盘存储文件
[root@oldboyedu ~]# ll /dev/sdb
brw-rw----. 1 root disk 8, 16 Apr 28 08:54 /dev/sdb
3) 对磁盘进行分区处理(fdisk-- 进行分区处理 查看分区信息)
fdisk -l --- 查看分区信息
[root@oldboyedu ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x6c918c6d.
Command (m for help): 可以对磁盘进行分区了
Command action
d delete a partition *****
删除分区
g create a new empty GPT partition table
创建一个新的空的GPT分区表(可以对大于2T磁盘进行分区)
l list known partition types
列出可以分区的类型???
m print this menu
输出帮助菜单
n add a new partition *****
新建增加一个分区
p print the partition table *****
输出分区的结果信息
q quit without saving changes
不保存退出
t change a partition's system id
改变分区的系统id==改变分区类型(LVM 增加swap分区大小)
u change display/entry units
改变分区的方式 是否按照扇区进行划分
w write table to disk and exit *****
将分区的信息写入分区表并退出==保存分区信息并退出
开始分区:
1. 规划分4个主分区 每个分区1G
分区操作过程
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +1G
Partition 1 of type Linux and of size 1 GiB is set
分区操作检查:
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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
Disk label type: dos
Disk identifier: 0x3069f1dd
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 83 Linux
/dev/sdb3 4196352 6293503 1048576 83 Linux
/dev/sdb4 6293504 8390655 1048576 83 Linux
Command (m for help): n
If you want to create more than four partitions, you must replace a
primary partition with an extended partition first.
2. 规划分3个主分区 1个扩展分区 每个主分区1G 剩余都给扩展分区
删除分区
Command (m for help): d
Partition number (1-4, default 4): 1
Partition 1 is deleted
创建逻辑分区
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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
Disk label type: dos
Disk identifier: 0x3069f1dd
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 83 Linux
/dev/sdb3 4196352 6293503 1048576 83 Linux
/dev/sdb4 6293504 20971519 7339008 5 Extended
(有了扩展分区才能逻辑分区)
Command (m for help): n
All primary partitions are in use
Adding logical partition 5
First sector (6295552-20971519, default 6295552):
Using default value 6295552
Last sector, +sectors or +size{K,M,G} (6295552-20971519, default 20971519): +1G
Partition 5 of type Linux and of size 1 GiB is set
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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
Disk label type: dos
Disk identifier: 0x3069f1dd
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 83 Linux
/dev/sdb3 4196352 6293503 1048576 83 Linux
/dev/sdb4 6293504 20971519 7339008 5 Extended
/dev/sdb5 6295552 8392703 1048576 83 Linux
需求: 划分2个主分区 划分2个逻辑分区
sdb1 2G
sdb2 2G
sdb5 3G
sdb6 1G
4) 保存退出,让系统可以加载识别分区信息
让系统可以加载识别分区文件
partprobe /dev/sdb
# 情况二: 磁盘分区实践--磁盘大于2T
第一个里程: 准备磁盘环境
虚拟主机中添加一块3T硬盘
第二个里程: 使用parted命令进行分区
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
创建一个分区表 (默认为mbr)
print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found
partitions, or a particular partition
显示分区信息
mkpart PART-TYPE [FS-TYPE] START END make a partition
创建一个分区
quit exit program
退出分区状态
rm NUMBER delete partition NUMBER
删除分区
修改磁盘分区类型: mklabel gpt
分区方法: mkpart primary 0 2100G
第三个里程: 加载磁盘分区
partprobe /dev/sdc
03. 磁盘层次结构--格式化操作(创建文件系统)
mkfs.xfs /dev/sdb1
mkfs -t xfs /dev/sdb2
创建文件系统: 磁盘分区存储数据的方式
ext3/4 centos6
xfs centos7 格式效率较高 数据存储效率提升(数据库服务器)
[root@oldboyedu /]# mkfs.xfs /dev/sdb2
meta-data=/dev/sdb2 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
04. 磁盘层次结构--磁盘挂载应用
mount /dev/sdb1 /mount01
mount /dev/sdb2 /mount02
检查确认:
[root@oldboyedu /]# df -h
/dev/sdb1 1014M 33M 982M 4% /mount01
/dev/sdb2 1014M 33M 982M 4% /mount02
如何实现开机自动挂载:
方法一: 将挂载命令放入/etc/rc.local
[root@oldboyedu /]# tail -2 /etc/rc.local
mount /dev/sdb1 /mount01
mount /dev/sdb2 /mount02
系统开机加载rc.local流程:
加载/etc/rc.local --> /etc/rc.d/rc.local --> 以绝对路径方式执行
/etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
方法二: 在/etc/fstab文件中进行设置
UUID=e2fc8646-2b36-47cc-a35a-8c13208f4d0b / xfs defaults 0 0
UUID=34fc45ba-c38c-42bc-a120-90f9d5dd2382 /boot xfs defaults 0 0
UUID=62100743-6f8a-4f83-a37d-e2088c4830e2 swap swap defaults 0 0
挂载磁盘文件(存储设备) 挂载点 指定文件系统类型 挂载的参数 是否备份磁盘 是否检查磁盘
mount 挂载的磁盘文件 挂载点
[root@oldboyedu ~]# tail -2 /etc/fstab
/dev/sdb1 /mount01 xfs defaults 0 0
UUID=144738ff-0da3-4162-b574-40af379cbe9e /mount02 xfs defaults 0 0
# 如何调整swap分区大小
第一个历程: 将磁盘分出一部分空间给swap分区使用
dd if=/dev/zero of=/tmp/1G bs=100M count=10
第二个历程: 将指定磁盘空间作为swap空间使用
[root@oldboyedu tmp]# mkswap /tmp/1G
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=6dd70684-dec2-48cf-8fd9-f311548bbb4f
第三个历程: 加载使用swap空间
[root@oldboyedu tmp]# swapon /tmp/1G (开启swap)
swapon: /tmp/1G: insecure permissions 0644, 0600 suggested.
[root@oldboyedu tmp]# free -h
total used free shared buff/cache available
Mem: 1.9G 225M 575M 9.6M 1.2G 1.5G
Swap: 2.0G 0B 2.0G
[root@oldboyedu tmp]# swapoff /tmp/1G (关闭swap)
[root@oldboyedu tmp]# free -h
total used free shared buff/cache available
Mem: 1.9G 224M 576M 9.6M 1.2G 1.5G
Swap: 1.0G 0B 1.0G
[root@oldboyedu tmp]# rm /tmp/1G -f (删除swap)
基础学习–网络基础
ISO/OSI 七层模型
应用层 * 应用层程序接口规范
表示层 * 数据转换加密 压缩
会话层 * 控制网络连接建立或者终止
传输层 * 保证数据传输的可靠性
网络层 * 可以实现通过路由找到目标网络
数据链路层 * 可以实现通过交换找到真正目标主机
物理层 * 指定一些网络物理设备标准
七层模型的传输流程
TCP/UDP
TCP协议: 传输控制协议 --- 面向连接的网络协议
在线发送文件==面向连接
发送文件 --> 对端点击接收
优点: 数据传输可靠性高
缺点: 数据传输效率低
UDP协议: 用户报文协议 --- 无连接的网络协议
离线发送文件==无连接
发送文件 --> 直接发送了
优点: 数据传输效率高
缺点: 数据传输可靠性低
TCP三次握手,四次挥手
# 重要控制字段:
syn(1): 请求建立连接控制字段
fin(1): 请求断开连接控制字段
ack(1): 数据信息确认控制字段
TCP三次握手过程:
1) 第一次握手:
发送syn请求建立连接控制字段, 发送seq序列号信息(X), 第一个数据包的系列号默认为0
2) 第二次握手:
发送syn请求建立连接控制字段, 同时还会发送ack确认控制字段
发送seq序列号信息也为(Y), 还会发送ACK确认号(X+1)信息(对上一个数据序列号信息进行确认)
3) 第三次握手:
发送ack确认控制字段,发送seq序列号信息(X+1),发送ack确认号(Y+1)
TCP四次挥手过程:
1) 第一次挥手:
发送fin请求断开连接控制字段,发送seq序列号信息(X), 发送上一条数据信息的确认ACK
2) 第二次挥手:
发送ack确认控制字段
3) 第三次挥手:
发送fin请求断开连接字段, 发送ack确认字段
4) 第四次挥手:
发送ack控制字段
TCP的十一种状态集
TCP三次握手: 5种状态
00: 最开始两台主机都处于关闭状态 closed
01: 服务端将相应服务进行开启 closed --- listen
02: 客户端向服务端发出连接请求 closed --- syn_sent
03: 服务端接收到连接请求,进行确认 listen --- syn_rcvd
04: 客户端再次进行确认 syn_sent --- established
05: 服务端接收到确认信息 syn_rcvd --- established
TCP四次挥手: 6种状态
01: 客户端发送请求断开连接信息 established -- fin_wait1
02: 服务端接收断开连接请求,并进行确认 established -- close_wait
03: 客户端接收到了确认信息 fin_wait1 -- fin_wait2
04: 服务端发送ack和fin字段 close_wait -- last_ack
05: 客户端接收到请求断开连接信息,发送确认 fin_wait2 -- time_wait
06: 服务端接收到确认信息 last_ack -- closed
07: 客户端等待一段时间 time_wait -- closed
TCP 问题
# 为什么连接需要3次?
为了防止服务器端开启一些无用的连接增加服务器开销以及防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
# 为什么断开连接需要4次?
因为TCP是全双工通信的
(1)第一次挥手 因此当主动方发送断开连接的请求(即FIN报文)给被动方时,仅仅代表主动方不会再发送数据报文了,但主动方仍可以接收数据报文。
(2)第二次挥手 被动方此时有可能还有相应的数据报文需要发送,因此需要先发送ACK报文,告知主动方“我知道你想断开连接的请求了”。这样主动方便不会因为没有收到应答而继续发送断开连接的请求(即FIN报文)。
(3)第三次挥手 被动方在处理完数据报文后,便发送给主动方FIN报文;这样可以保证数据通信正常可靠地完成。发送完FIN报文后,被动方进入LAST_ACK阶段(超时等待)。
(4)第四挥手 如果主动方及时发送ACK报文进行连接中断的确认,这时被动方就直接释放连接,进入可用状态。
DNS 解析过程
1、在浏览器中输入www.baidu.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找baidu.com域服务器,重复上面的动作,进行查询,直至找到www.baidu.com主机。
6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
Ubuntu 20.04 搭建Discuz论坛
sudo apt install apache2 mysql-server php php-mysql php-xml -y git clone https://gitee.com/3dming/DiscuzL.git cp -a DiscuzL/upload/* /var...
-
sudo apt install apache2 mysql-server php php-mysql php-xml -y git clone https://gitee.com/3dming/DiscuzL.git cp -a DiscuzL/upload/* /var...
-
sed -i 's/bind-address/#bind-address/g' /etc/mysql/mysql.conf.d/mysqld.cnf mysql -u root -p create user root@'%' identified...
-
使用yum安装MySQL时报错 yum -y install mysql mysql-server yum -y install mysql-community-server 报错内容如下 warning: /var/cache/yum/x86_64/7/mysql57-c...