Linux常用操作
Linux常用操作
Linux常用操作主要包含Shell命令行等命令
fail2ban封禁和解封指定IP
#fail2ban把IP加入黑名单
fail2ban-client set sshd banip 1.1.1.1
#fail2ban把IP从黑名单移除
fail2ban-client set sshd unbanip 1.1.1.1 返回1为成功,0即表示规则没有发生变化,即操作失败(说明IP本来就在列表或者不在列表中)
专注于Linux运维系统运维、熟悉PHP开发、电脑DIY、游戏主机,电子3C等领域、荥阳电脑爱好者。本站总结了日常工作中各种问题的解决方案。内容不定期更新中,敬请关注
Linux常用操作主要包含Shell命令行等命令
#fail2ban把IP加入黑名单
fail2ban-client set sshd banip 1.1.1.1
#fail2ban把IP从黑名单移除
fail2ban-client set sshd unbanip 1.1.1.1 返回1为成功,0即表示规则没有发生变化,即操作失败(说明IP本来就在列表或者不在列表中)
问题概览
CentOS7.9编译安装Python3.10运行python脚本的时候报Can‘t connect to Https URL Because the SSL module is not available.
当然,这个问题和python3 -c "import ssl" 报错是同一个问题
经排查发现是系统openssl版本过低导致的。
python3.10依赖的ssl 1.1.1以上的版本。
{message type="success" content="注意:其实在编译python3过程中,会输出openssl版本过低的信息,只不过没有突出显示,不仔细查看,难以发现。"/}
OK,发现问题之后,已经查明的原因,解决起来就容易多了。
我们重新编译安装Openssl,升级系统的openssl版本到1.1.1以上即可解决。
这里我们升级至 1.1.1w(openssl官网有更新的3.x ssl版本,但是我们服务器是centos7属于比较旧的版本,对 ssl 3.x兼容性有问题,所以先不用3.x的)
#安装前先检查Openssl的版本
openssl version
#OpenSSL 1.0.2k-fips 26 Jan 2017
yum install perl-core zlib-devel -y
cd /usr/local/src
wget -S “https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz”
tar -zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix=/usr/local/openssl
make && make install
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/local/openssl
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openss111w.conf
#然后再次检查openssl版本
openssl version
#OpenSSL 1.1.1w 11 Sep 2023 (Library: OpenSSL 1.1.1k FIPS 25 Mar 2021)
#openssl的目录路径
openssl version -d
》》 OPENSSLDIR: "/usr/local/openssl/ssl"openssl升级完成
yum install libffi-devel.x86_64 libdb-devel uuid-devel.x86_64 tk-devel.x86_64 zlib-static.x86_64 zlib-devel -y
cd /usr/local/src/
wget https://www.python.org/ftp/python/3.12.6/Python-3.12.6.tgz
tar -zxvf Python-3.12.6.tgz
cd Python-3.12.6
openssl version -d #这个命令找到openssl根目录
》》 OPENSSLDIR: "/usr/local/openssl/ssl" --with-openssl=参数填写这个路径
cd /usr/local/src/
cd Python-3.12.6
cat >> Modules/Setup<<EOF
SSL="/usr/local/openssl"
_ssl _ssl.c \
-DUSE_SSL -I"\$(SSL)"/include -I"\$(SSL)"/include/openssl \
-L"\$(SSL)"/lib -lssl -lcrypto
EOF
./configure --prefix=/usr/local/python3.12 --with-openssl=/usr/local/openssl/ssl && make && make install/usr/local/python3.12 -r "import ssl"
#不报错,则说明模块引入成功[root@centos-12 opt]# mkdir -p /var/www
[root@centos-12 opt]# cd /var/www/
[root@centos-12 www]# ls
[root@centos-12 www]# python3 -m venv myenv
[root@centos-12 www]# ls
myenv
[root@centos-12 www]# source myenv/bin/activate
(myenv) [root@centos-12 www]#
(myenv) [root@centos-12 www]# python
Python 3.12.8 (main, Dec 30 2024, 13:22:30) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>>
(myenv) [root@centos-12 www]# deactivate
[root@centos-12 www]#
[root@centos-12 www]# python
Python 2.7.5 (default, Nov 14 2023, 16:14:06)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> python3 -m venv myenv ## 使用Python venv模块创建了 名为myenv,当前目录下会生成一个myvenv目录
source myenv/bin/activate ## 激活进入 myenv虚拟环境
deactivate ## 退出虚拟环境
/var/www/myenv/bin/python3 ## 使用绝对路径直接引用Python虚拟环境
/var/www/myenv/bin/pip ## 使用绝对环境直接引用 虚拟环境中的pip 系统环境如下:
由于银河麒麟操作系统V10基于CentOS8,并且无法安装epel-release源,更没办法使用Remi源,所以本次安装的PHP8.2假设我们是编译安装的。具体安装教程可以参考另外一篇文章:
国产银河麒麟服务器版(Host)V10 编译安装PHP8.2.
PHP安装PDO_DM模块分为以下几步:
先从达梦官网下载iso程序镜像到/usr/local/src目录
之后按照以下命令执行:
[root@kylin-server-2 src]# cd /usr/local/src/
[root@kylin-server-2 src]# mkdir dmdbiso
[root@kylin-server-2 src]# ls
dm8_20240930_HG_kylin10_64.iso dmdbiso php-8.2.26 php-8.2.26.tar.gz
[root@kylin-server-2 src]# pwd
/usr/local/src
[root@kylin-server-2 src]# mount -o loop dm8_20240930_HG_kylin10_64.iso dmdbiso/
mount: /usr/local/src/dmdbiso: WARNING: source write-protected, mounted read-only.
[root@kylin-server-2 src]# ls dmdbiso/
'DM8 Install.pdf' DMInstall.bin
###下面3行设置系统环境,为达梦数据库安装做准备
[root@kylin-server-2 src]# useradd dmdba
[root@kylin-server-2 src]# export DM_INSTALL_TMPDIR=/usr/local
[root@kylin-server-2 src]# cd dmdbiso/
[root@kylin-server-2 dmdbiso]#
#开始安装
[root@kylin-server-2 dmdbiso]# ./DMInstall.bin -i
安装语言:
[1]: 简体中文
[2]: English
请选择安装语言 [1]: 1
解压安装程序.........
硬件架构校验通过!
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7546
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 7546
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
可打开文件数过少,建议至少设置为65536或更多。
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]: N
是否设置时区? (Y/y:是 N/n:否) [Y/y]: N
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]: 1
所需空间: 2170M
请选择安装目录 [/opt/dmdbms]: /usr/local/dmdbms
可用空间: 37G
是否确认安装路径(/usr/local/dmdbms)? (Y/y:是 N/n:否) [Y/y]: Y
安装前小结
安装位置: /usr/local/dmdbms
所需空间: 2170M
可用空间: 37G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否): Y
2024-12-27 10:16:39
[INFO] 安装达梦数据库...
2024-12-27 10:16:40
[INFO] 安装 基础 模块...
2024-12-27 10:16:46
[INFO] 安装 服务器 模块...
2024-12-27 10:16:48
[INFO] 安装 客户端 模块...
2024-12-27 10:16:51
[INFO] 安装 驱动 模块...
2024-12-27 10:16:53
[INFO] 安装 手册 模块...
2024-12-27 10:16:54
[INFO] 安装 服务 模块...
2024-12-27 10:16:54
[INFO] 移动日志文件。
2024-12-27 10:16:55
[INFO] 正在启动DmAPService服务...
2024-12-27 10:16:55
[INFO] 启动DmAPService服务成功。
2024-12-27 10:16:55
[INFO] 安装达梦数据库完成。
安装结束
[root@kylin-server-2 dmdbiso]# cd /usr/local/src/
[root@kylin-server-2 dmdbiso]# umount dmdbiso达梦数据库安装完成。
上图中有一部分提示我们ulimit参数没有优化,本文最后有优化ulimit参数方法。
达梦数据库目录如下:(yum install tree -y 安装tree命令)
[root@kylin-server-2 ~]# tree /usr/local/dmdbms -L 1
/usr/local/dmdbms
├── bin #pdo_扩展依赖的动态链接库目录
├── bin2
├── desktop
├── doc
├── drivers #驱动目录,达梦数据库php Pdo驱动模块文件就在这个路径下的php_pdo目录
├── include
├── jar
├── jdk
├── license_chs.txt
├── license_cht.txt
├── license_en.txt
├── log
├── samples
├── script
├── tool
├── uninstall
└── uninstall.sh
[root@kylin-server-2 ~]# ls /usr/local/dmdbms/drivers/php_pdo
libphp52_dm.so libphp54_dm.so libphp56ts_dm.so libphp72_dm.so libphp74ts_dm.so libphp82_dm.so php52ts_pdo_dm.so php55_pdo_dm.so php70ts_pdo_dm.so php73_pdo_dm.so php80ts_pdo_dm.so php83_pdo_dm.so
libphp52ts_dm.so libphp54ts_dm.so libphp70_dm.so libphp72ts_dm.so libphp80_dm.so libphp82ts_dm.so php53_pdo_dm.so php55ts_pdo_dm.so php71_pdo_dm.so php73ts_pdo_dm.so php81_pdo_dm.so php83ts_pdo_dm.so
libphp53_dm.so libphp55_dm.so libphp70ts_dm.so libphp73_dm.so libphp80ts_dm.so libphp83_dm.so php53ts_pdo_dm.so php56_pdo_dm.so php71ts_pdo_dm.so php74_pdo_dm.so php81ts_pdo_dm.so
libphp53_mysql.so libphp55ts_dm.so libphp71_dm.so libphp73ts_dm.so libphp81_dm.so libphp83ts_dm.so php54_pdo_dm.so php56ts_pdo_dm.so php72_pdo_dm.so php74ts_pdo_dm.so php82_pdo_dm.so
libphp53ts_dm.so libphp56_dm.so libphp71ts_dm.so libphp74_dm.so libphp81ts_dm.so php52_pdo_dm.so php54ts_pdo_dm.so php70_pdo_dm.so php72ts_pdo_dm.so php80_pdo_dm.so php82ts_pdo_dm.so本次php PDO_DM模块只需要关注
/usr/local/dmdbms/bin 和
/usr/local/dmdbms/drivers/php_pdo这两个目录下内容。
[root@kylin-server-2 ~]# echo "/usr/local/dmdbms/bin" > /etc/ld.so.conf.d/php-dm.conf
[root@kylin-server-2 ~]# ldconfig
ldconfig: /usr/local/dmdbms/bin/libxerces-c-3.1.so 不是符号链接
ldconfig: /usr/local/dmdbms/bin/libgeos_c.so.1 不是符号链接
#(这两条警告信息可忽略)
[root@kylin-server-2 ~]# 本次一并操作了 php的dm模块和PDO_DM模块
[root@kylin-server-2 ~]# cp /usr/local/dmdbms/drivers/php_pdo/libphp82_dm.so /usr/local/php82/lib/php/extensions/no-debug-non-zts-20220829/
[root@kylin-server-2 ~]# cp /usr/local/dmdbms/drivers/php_pdo/php82_pdo_dm.so /usr/local/php82/lib/php/extensions/no-debug-non-zts-20220829/[root@kylin-server-2 ~]# echo "extension=libphp82_dm" >> /etc/php82/php.ini
[root@kylin-server-2 ~]# echo "extension=php82_pdo_dm" >> /etc/php82/php.ini
[root@kylin-server-2 ~]# echo 'export PATH=$PATH:/usr/local/php82/bin' >> /etc/bashrc
[root@kylin-server-2 ~]# source !$
source /etc/bashrc{message type="error" content="如果测试中报以下错误,一定要及时排查。否则造成的一切后果自负
案例一、
如果测试报这个错误,一定要修复,一定不要重启服务器,会导致静态IP丢失,本人本地虚拟机亲测"/}
[root@kylin-server-2 ~]# php -m
php: relocation error: /usr/lib64/libcurl.so.4: symbol SSLv3_client_method version OPENSSL_1_1_0 not defined in file libssl.so.1.1 with link time reference{message type="warning" content="出现这个错误的原因是 /etc/ld.so.conf.d/php-dm.conf 执行这一步时,没有使用php-dm.conf文件名,而是自定义了其他文件名,由于文件名不同可能导致加载动态链接库顺序不一致,libssl.so类似这样的同名文件不同内容库,相互影响了。解决办法是:修改php-dm.conf(这里是你自己起的文件名,改成其他的或者干脆就跟作者一样使用 php-dm.conf 做名字然后ldconfig再次测试 php -m | grep -i dm)"/}
[root@kylin-server-2 ld.so.conf.d]# php -m | grep -i dm
dm
PDO_DM
#这里显示dm和PDO_DM模块已经被安装并且成功加载了。
## 然后使用以下脚本检测Pdo模块功能
[root@kylin-server-1 ~]# cd /tmp/
[root@kylin-server-1 tmp]# cat >> dm_db.php<EOF
-bash: EOF: 没有那个文件或目录
[root@kylin-server-1 tmp]# cat >dm_db.php<<EOF
<?php
try
{
//数据库链接字符串
$dn="dm:host=192.168.12.10;port=5236;dbname=PHP";
$pdo = new PDO($dn,"PHP","b5KJqM4F57"); //用户名 ,密码<br>
$query="SELECT * FROM PHP.\"tgs\""; //测试查询语句
$stmt = $pdo->query($query);
if(!$stmt)//如果出现了错误,获得错误信息
{
echo "<pre>";
echo $pdo->errorCode();
print_r($pdo->errorInfo());
echo "</pre>";
die();
}
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<pre>";
print_r($rows);
echo "</pre>";
}catch(PDOException $e){
print "Error: " . $e->getMessage()."<br/>";
}
EOF
[root@kylin-server-1 tmp]# php dm_db.php
<pre>Array
(
[0] => Array
(
[id] => 1
[name] => 来自PHP PDO_DM模块的检测
)
[1] => Array
(
[id] => 2
[name] => bbb1
)
)
</pre>[root@kylin-server-1 tmp]#
## 测试表需要自己创建,我这里是名为PHP模式下的tgs表,有id和name两列。查到此内容则表示测试OK.#先查看当前设置:
[root@kylin-server-2 ~]# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7546
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 7546
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@kylin-server-2 ~]# ulimit -SHn 65535
cat >> /etc/security/limits.conf<<EOF
* soft nofile 1024000
* hard nofile 1024000
* soft nproc 1024000
* hard nproc 1024000
* soft core unlimited
* soft stack 10240
EOF
## 再次查看ulimit设置
[root@kylin-server-2 ~]# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7546
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 7546
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
这里已经看到参数修改好了。ldconfig ##重载系统动态链接库
ldconfig -v ##查看重载链接库详细过程,并显示链接库名
ldd libssl.so ##查看libssl.so链接库依赖哪些库 很多游戏都依赖DirectX,每次都要网上搜索官网再下载相当麻烦,这里做了总结。
本站快捷下载:
https://download.qingpc.com/game/steam/dxwebsetup.exe
md5校验码:2cbd6ad183914a0c554f0739069e77d7
sha256校验码:2cf71d098c608c56e07f4655855a886c3102553f648df88458df616b26fd612f
官网下载地址:
https://download.microsoft.com/download/1/7/1/1718CCC4-6315-4D8E-9543-8E28A4E18C4C/dxwebsetup.exe
微软官网:https://www.microsoft.com/zh-cn/download/details.aspx?id=35
下载完成后,根据提示安装即可,安装过程中也会一并下载其他依赖包,耐心等待3-10分钟即可安装完成,具体根你的本地网络速度有关
银河麒麟V10高级服务器操作系统忘记root密码,如何重置
启动系统进入单用户模式
进入系统启动项,按e键
{message type="success" content="默认用户为:admin 密码:Kylin123123"/}

输入账户密码后进入编辑模式,找到linux开头的行,在行末尾加入rw init=/bin/bash console=tty0编辑完后,'ctrl+x'进入启动项。
编辑后结果如下图:
按'ctrl+x'启动进入密码重置界面
重置密码(需要有大小写特殊字符和数字组成的强密码),成功后,使用/usr/sbin/reboot命令重启启动
powercfg -lastwake
ipconfig /flushdns
sudo dscacheutil -flushcache
以管理员身份运行命令提示符
执行命令bcdedit /set hypervisorlaunchtype off
重启,运行vm即可
如果想要恢复hyper启动, bcdedit / set hypervisorlaunchtype auto
参考地址:
https://www.zhihu.com/question/38841757/answer/179656416
可以在控制面板或使用 Windows PowerShell 禁用 Hyper-V 虚拟机监控程序。
在控制面板中禁用 Hyper-V
若要在控制面板中禁用 Hyper-V,请执行以下步骤:
在“控制面板”中,打开“程序和功能”。
选择“启用或关闭 Windows 功能”。
展开 Hyper-V,展开 Hyper-V 平台,然后清除“Hyper-V 虚拟机监控程序”复选框。
“Hyper-V 虚拟机监控程序”复选框的屏幕截图。
要使用 Windows PowerShell 禁用 Hyper-V,请按照以下步骤操作:
打开提升权限的 PowerShell 窗口。
运行以下命令:
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor可用来查看系统一些硬件信息。命令行下执行即可,或者windows + r 快捷键。
本文主要总结了:中标麒麟安装达梦数据库的全过程
达梦数据库 是一款国产数据库。本文记录了在银河麒麟操作系统下,安装达梦数据库V8.0版本的全过程。
达梦官网:https://www.dameng.com/
在服务器上安装达梦数据库 典型安装
达梦数据库下载地址,需要账号登陆。
然后解压会得到:
dm8_20240930_HG_kylin10_64.iso
dm8_20240930_HG_kylin10_64.iso_SHA256.txt
dm8_20240930_HG_kylin10_64.README
可以把iso文件挂载到目录下即可安装;
这里以/usr/local/src/dbiso为例:
mount -t iso9660 -o loop dm8_20240930_HG_kylin10_64.iso /usr/local/src/dbiso,会得到以下文件:
其中:DMInstall.bin就是安装包,安装过程如下:
其中的报错会在最后统一列出。


按照图中安装即可,画横线的即需要填写的参数。
如果你需要输入key就按操作输入即可,还有时区设置。
安装刚开始遇到的问题
未检测到操作系统用户dmdba,请确认操作系统用户dmdba是否存在!
解决: 需要创建达梦dba账号
useradd dmdba安装程序临时目录(/tmp)可用空间为958M。安装程序需要至少2G的临时空间,请调整临时目录的空间或设置环境变量DM_INSTALL_TMPDIR来指定安装程序的临时目录。
解决
给DM_INSTALL_TMPDIR设置一个非/tmp目录即可,这是一个临时目录。
export DM_INSTALL_TMPDIR=/opt解压安装程序.........
硬件架构校验通过!
Exception in thread "main" org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
解决
这是因为 ./DMInstall.bin 默认使用图形界面安装,我们在命令行就会报这个错加上 -i,切换至交互命令行模式安装即可
./DMInstall.bin -icat >>/etc/bash.bashrc<<EOF
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/dmdbms/bin"
export DM_HOME="/usr/local/dmdbms"
EOF## 创建必须的目录结构
mkdir -p /data/database/dmdb && chown -R dmdba:dmdba /data/database/dmdb
cd /usr/local/dmdbms/bin && ./dminit path=/data/database/dmdb/ah_dazhang DB_NAME=ah_dazhang PAGE_SIZE=8 EXTENT_SIZE=16 MAIN_DBF_PATH=/data/database/dmdb/ah_dazhang/main.dbf SYSTEM_DBF_PATH=/data/database/dmdb/ah_dazhang/system.dbf ROLL_DBF_PATH=/data/database/dmdb/ah_dazhang/roll.dbf TEMP_DBF_PATH=/data/database/dmdb/ah_dazhang/temp.dbf LOG_SIZE=512 CASE_SENSITIVE=0 CHARSET=1 BUFFER=256 LOG_SIZE=512 SYSDBA_PWD=Ah_dazhang SYSAUDITOR_PWD=Ah_dazhangcd /usr/local/dmdbms/script/root && ./dm_service_installer.sh -t dmserver -p ah_dazhang -dm_ini /data/database/dmdb/ah_dazhang/ah_dazhang/dm.inisystemctl status DmServiceah_dazhang.service
systemctl start DmServiceah_dazhang.service
systemctl status DmServiceah_dazhang.service
##检查端口是否已经在监听
ss -ntlp | egrep "5236|4236"
## 看到有端口则说明,服务启动OKEND