系统版本
cat /etc/os-release
代码语言:javascript复制NAME="Anolis OS"
VERSION="8.8"
ID="anolis"
ID_LIKE="rhel fedora centos"
VERSION_ID="8.8"
PLATFORM_ID="platform:an8"
PRETTY_NAME="Anolis OS 8.8"
ANSI_COLOR="0;31"
HOME_URL="https://openanolis.cn/"
内核版本
uname -r
代码语言:javascript复制5.10.134-13.an8.x86_64
Anolis软件仓库
- BaseOS:BaseOS 软件包源,提供安装基础的所有核心包。
- AppStream:AppStream 软件包源,提供额外的多场景,多用途的用户态程序,数据库等。
- Extras:Extras软件包源,提供第三方仓库源。
- PowerTools:PowerTools 软件包源, 提供开发者需要的额外包。
- Plus:Plus 软件包源,提供社区滚动内核以及相应的组件。
- DDE:DDE 软件包源,提供 DDE 桌面环境以及相应的组件。
- kernel-5.10:5.10 内核源,提供 5.10 内核包以及相应的组件。
- HighAvailability:高可用软件包源,提供高可用功能所需的软件包。
Anolis 镜像仓
代码语言:javascript复制http://mirrors.openanolis.cn/anolis
MySQL 8.0.32 部署
1,安装mysql
代码语言:javascript复制dnf install mysql mysql-server
2,启动数据库
代码语言:javascript复制systemctl start mysqld && systemctl enable mysqld
3,初始化数据库
代码语言:javascript复制mysql_secure_installation
4,登录测试
代码语言:javascript复制mysql -uroot -p
5,查看MySQL版本信息
mysql -V
代码语言:javascript复制mysql Ver 8.0.32 for Linux on x86_64 (Source distribution)
重置root密码
代码语言:javascript复制alter user 'root'@'localhost' identified by "password";
flush privileges;
查看数据库用户权限和用户授权
代码语言:javascript复制select host,user,plugin,authentication_string from mysql.user;
SHOW GRANTS FOR 'zabbix'@'%';
PHP 8.0.26 安装
Anolis 8.8 系统php软件默认使用 php7.2 流模块,安装php8.0需要切换软件流模块。
1,查看php软件流模块
代码语言:javascript复制dnf module list php
2,切换php安装版本
代码语言:javascript复制dnf module install php:8.0
3,安装php软件包
代码语言:javascript复制dnf install php php-fpm php-mysqlnd php-cli php-gd php-mbstring php-xml php-bcmath php-ldap
dnf module 介绍
查看系统可用的软件包使用 dnf search NAME,dnf list NAME,命令只列出来已经启用的模块流的模块包,可选流的软件包并不在其中。dnf module list 系统可用的模块,并查看哪些流是默认的或已经启用。
安装软件包
软件包可以通过运行dnf install NAME命令按常规方式安装。任何传统的软件包,或者来自已启用模块的模块化软件包都可以通过这种方式安装。来自其他模块流的包可以通过启用模块流,然后安装单个包,或者直接使用dnf module install。
启用模块
启用一个模块流并使其软件包可供安装,对于已经安装过一个版本,再执行启用会报错
代码语言:javascript复制dnf module enable nginx:1.22
安装模块
代码语言:javascript复制dnf module install nginx:1.22
Nginx 编译安装
1,安装Nginx依赖软件包
代码语言:javascript复制dnf install libxml2 libxml2-devel libxslt-devel gcc gcc-c make pcre pcre-devel zlib zlib-devel openssl openssl-devel perl-ExtUtils-Embed gd-devel -y
2,创建nginx用户、用户组
代码语言:javascript复制groupadd nginx
useradd -s /sbin/nologin -M -g nginx nginx
3,编译 Nginx
代码语言:javascript复制下载Nginx 源码包
wget -P /mnt http://nginx.org/download/nginx-1.20.1.tar.gz
解压nginx压缩包
tar -zxvf /mnt/nginx-1.20.1.tar.gz -C /opt
进入到解压目录
cd /opt/nginx-1.20.1/
4,创建 nginx Makefile文件
代码语言:javascript复制./configure --user=nginx --group=nginx
--prefix=/usr/local/nginx/
--with-http_ssl_module
--with-http_flv_module
--with-http_stub_status_module
--with-http_gzip_static_module
--with-pcre
参数:--prefix=/usr/local/nginx/ 指定nginx 服务安装目录
5,编译安装
代码语言:javascript复制make && make install
6,Nginx 目录介绍
nginx 安装目录 /usr/local/nginx
修改目录文件属主属组
代码语言:javascript复制chown -R nginx:nginx /usr/local/nginx/
/usr/local/nginx目录有4个文件目录分别是conf、html、logs、sbin
- conf 配置文件目录
- html 网站的静态文件目录
- sbin 可执行(启动)文件目录
- logs 日志存储目录
7,配置nginx开机启动文件
代码语言:javascript复制cat << EOF >> /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx reload
ExecStop=/usr/local/nginx/sbin/nginx quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
8,启动并开机启动 nginx
代码语言:javascript复制systemctl start nginx.service && systemctl enable nginx.service
9,查看进程
代码语言:javascript复制ps -ef | grep nginx 或 ps -aux | grep nginx
10,nginx 软链接
启动、重启、关闭都需要进入/usr/lcoal/nginx/sbin下目录通过./nginx 执行,创建一个软链接到/usr/bin/nginx
代码语言:javascript复制ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
Nginx 添加编译模块
1,进入到解压目录
代码语言:javascript复制cd /opt/nginx-1.20.1/
2,重新创建Makefile文件
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_perl_module=dynamic --with-http_auth_request_module --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-debug --with-http_stub_status_module
3,执行make,生成二进制文件
代码语言:javascript复制make
执行make完毕后,objs目录下会生成新的nginx执行文件。
注意:不要执行make install,不要会覆盖原有/usr/local/nginx/目录下nginx二进制包。
4,替换nginx 执行文件
代码语言:javascript复制备份nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
复制新的ngin执行文件到/usr/local/nginx/sbin目录下进行替换
cp -f /opt/nginx-1.20.1/objs/nginx /usr/local/nginx/sbin/nginx
cp: overwrite '/usr/local/nginx/sbin/nginx'? y
5,检查配置
代码语言:javascript复制cd /usr/local/nginx/sbin
./nginx -t
6,重启nginx 验证
代码语言:javascript复制重载nginx配置文件
cd /usr/local/nginx/sbin/
./nginx -s reload
查看nginx 加载模块和版本
nginx -V
Nginx 编译安装版本升级
1,下载nginx升级包
代码语言:javascript复制下载Nginx 源码包
wget -P /mnt http://nginx.org/download/nginx-1.23.4.tar.gz
解压nginx压缩包
tar -zxvf /mnt/nginx-1.23.4.tar.gz -C /opt
进入到解压目录
cd /opt/nginx-1.23.4/
2,创建Makefile文件
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_perl_module=dynamic --with-http_auth_request_module --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-debug --with-http_stub_status_module
3,执行make,生成二进制文件
执行make命令,make 执行make完毕后,objs目录下会生成升级的nginx执行文件
4,升级替换nginx 执行文件
代码语言:javascript复制备份原版本nginx执行文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak01
替换二进制启动文件
cp -f /opt/nginx-1.23.4/objs/nginx/usr/local/nginx/sbin/
cp: overwrite '/usr/local/nginx/sbin/nginx'? y
重载nginx配置
nginx -s reload
Anolis 官方的镜像仓库缺失libssh2-devel、fping软件包需要编译安装
libssh2-devel 软件包
libssh2官方网站
https://libssh2.org/
代码语言:javascript复制下载libssh2源码压缩包
wget https://libssh2.org/download/libssh2-1.10.0.tar.gz
tar -zxvf libssh2-1.10.0.tar.gz
cd libssh2-1.10.0
/configure --prefix=/usr/local/libssh2
make && make install
创建 "libssh2.so.1" 的软链接 "/usr/local/libssh2/lib/libssh2.so.1"
ln -s /usr/local/libssh2/lib/libssh2.so.1 /usr/lib64/
fping软件包
fping 官方网站
https://fping.org/
代码语言:javascript复制下载fping软件包
wget https://fping.org/dist/fping-5.1.tar.gz
tar -zvxf fping-5.1.tar.gz
./configure --prefix=/usr/local/fping
make && make install
fping 执行文件
/usr/local/fping/sbin
fping测试
代码语言:javascript复制/usr/local/fping/sbin/fping ::1
SUID(Set User ID) SGID(Set Group ID)
SUID(Set User ID)和SGID(Set Group ID)是Linux系统中的两个权限特性。允许特定用户或组以文件以及执行程序的属主或属组的身份执行文件,而不是以当前用户的权限执行。
SUID允许一个可执行程序在执行时以文件所有者的身份运行,而不是执行该程序的用户的身份。
附加SUID权限
代码语言:javascript复制chmod u s /usr/local/fping/sbin/fping
撤销SUID权限
代码语言:javascript复制chmod u-s /usr/local/fping/sbin/fping
测试
代码语言:javascript复制su - zabbix -s /bin/sh -c "/usr/local/fping/sbin/fping ::1"
SGID允许一个可执行程序在执行时以文件组的身份运行,而不是执行该程序的用户的身份。例如,一个目录被设置为SGID,当用户在该目录下创建新文件时,新文件将继承该目录的组所有权。