站内公告:

我们的虚拟社区正式开通了

Main Menu

最新帖子

#11
Nginx服务器 / Ubuntu用Apt-get安装Nginx服务器
上次发布者 jvip_chen - 2023-6月-18 11:05 下午
1、添加nginx-Apt源
sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
2、安装nginx
sudo install apt-get install nginx
#12
Linux 系统 / Linux 系统安全启动
上次发布者 jvip_chen - 2023-5月-16 06:30 下午
什么是安全启动

"安全启动" 是 2012 年出现的 Windows 8 预装电脑里的 UEFI 功能。目前所有的 Ubuntu 64位(非32位)版本支持此功能。简而言之,安全启动工作原理是在固件中启用信任源机制,虽然其它实现方式是可能的,但在实践中通过 x509 证书来实现信任链。根证书( 根证书是由受信任的证书颁发机构 CA 颁发的证书)嵌入在固件中,使得它可以验证签名的引导加载程序,然后,签名的引导加载程序可以验证已签名内核或已签名的第二级引导加载程序等。为了使用安全启动,我们需要使用UEFI启动系统,而不是旧的 BIOS。
BIOS与UEFI有什么区别?

两者都可初始化计算机,任务是加载操作系统。BIOS 通过读取硬盘上的第一个扇区(主引导记录 MBR)并执行它来启动,相比之下,UEFI 通过从硬盘上的分区(称为 EFI 系统分区 ESP)加载EFI程序文件(使用 .efi 文件扩展名)来启动。


如何判断Linux系统是使用UEFI还是BIOS启动的?

最简单的方法是检查文件夹 /sys/firmware/efi 是否存在。
secureBoot:~$ ls /sys/firmware/efi/
config_table fw_platform_size runtime systab
efivars fw_vendor runtime-map vars
如果 Linux 计算机使用传统 BIOS 启动,则不会出现 /sys/firmware/efi 文件夹。
legacy:~$ ls /sys/firmware/efi
ls: cannot access /sys/firmware/efi: No such file or directory


如何判断Linux系统是否使用安全启动?

mokutil 命令用于管理机主密钥(MOK),这些密钥由 shim 层用于验证 grub2和内核映像,也可用于验证安全启动是否启用。
secureBoot:~$ mokutil --sb-state
SecureBoot enabled
或者也可以使用 mokutil 命令来查看当前所有已注册的密钥。
secureBoot:~$ mokutil --list-enrolled

未签名模块的特征是什么?

如果在启用了安全启动的计算机上编译并安装了无有效签名的 Kvaser 驱动程序模块,即使连上了 Kvaser 分析仪,在运行 listChannels 示例的时候也不会侦测到任何通道。
secureBoot:~$ ./listChannels
Canlib version 5.20
Found 0 channel(s).
可以使用 lsusb 命令验证 Kvaser 分析仪实际上是由 USB 子系统连接和识别的。
secureBoot:~$ lsusb | grep Kvaser
Bus 003 Device 008: ID 0bfd:0108 Kvaser AB
通过查找系统日志中的错误,并会发现类似错误 "所需密钥不可用"。
apr 19 16:05:38 mypc /usr/sbin/mhydra.sh[22789]: modprobe: ERROR: could not insert 'mhydra':
Required key not available
apr 19 16:05:38 mypc systemd-udevd[22776]: Process '/usr/sbin/mhydra.sh start' failed with exit code 1.
这需要签名模块使其在计算机上工作。在下篇文章中将介绍如何构建和签署 Kvaser 驱动程序模块,以便能够在启用了安全启动的 Linux 计算机上使用它们。
#13
在一个h5页面中通过websocket连接服务器,如果该h5页面是通过https来访问,需要注意wss连接是不能以ip加端口的方式来连接的。

比如页面https://domain.com/index.html中有如下js代码

var wsServer = 'wss://8.8.8.8:8888';
var websocket = new WebSocket(wsServer);
这样是连接不上websocket服务器的,因为wss不支持ip加端口的方式。

解决的办法是利用nginx的方向代理功能,将代码改成:

var wsServer ='wss://domain.com/wss';
var websocket = new WebSocket(wsServer);
同时nginx配置文件中,加入如下配置:

# server外面最上面加
upstream webSocket {
  server 8.8.8.8:8888;#需要代理到的socket服务器端口
}
# server里面加入
# 访问:wss://xxxx.com/wss
location /wss {
  proxy_pass https://webSocket/;#代理到上面的地址去
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "Upgrade";
}
这样就可以连接成功了。

注意将文中的域名、ip和端口替换成你自己的。
#14
PHP框架-Yii / Yii2 关闭和打开csrf 验证
上次发布者 jvip_chen - 2023-1月-09 10:46 上午
1.在Yii2配置中配置所有:所有的controller都将关闭csrf验证,如果设置成true,则将打开csrf验证。

'request' => [
    'enableCsrfValidation' => false,
],


2.在Yii2 controller中配置当前的controller添加变量,下面的设置将关闭csrf验证。

public $enableCsrfValidation = false;
#15
Linux 系统 / Linux 环境下 NFS 服务安装及配置
上次发布者 virtual - 2023-1月-06 02:29 下午
服务端:

确认是否安装
rpm -qa nfs-utils rpcbind

安装:
yum install -y nfs-utils rpcbind

服务端开机启动
systemctl start rpcbind
systemctl enable rpcbind
 
systemctl start nfs-server
systemctl enable nfs-server

配置

vim /etc/exports
 /mnt/share 172.18.0.0/16(rw,sync,insecure,no_subtree_check,no_root_squash)

常用选项:

  • rw 表示允许读写
  • ro 表示为只读
  • sync 表示同步写入到内存与硬盘中
  • no_root_squash表示当客户机以root身份访问时赋予本地root权限(默认是root_squash),如果不加那么客户端无法在里面编辑或写入文件,因为默认以nfsnobody的权限
  • root_squash 表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户
  • 其它常用选项:
  • all_squash 所有访问用户都映射为匿名用户或用户组
  • async 将数据先保存在内存缓冲区中,必要时才写入磁盘,速度快但会丢失数据
  • subtree_check(默认) 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限
  • no_subtree_check 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
举例:
其中客户机地址可以是主机名 ID 地址、网段地址,允许使用 "*" "?" 通配符;权限选项中的 rw 表示允许读写(ro为只读),sync表示同步写入,no_root_squash表示当客户机以 root 身份访问时赋予本地 root 权限(默认是root_squash,将为 nfsnobody 用户降权对待)。

当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格隔指定多个"客户机(权限选项)"即可。
例如,以下操作将 /var/ftp/public 目录共享给两个客户机,并分别给予只读、读写权限。


#启动服务 
service rpcbind start
 
sudo service nfs-server restart
sudo service nfs-server status

查看:
rpcinfo -p localhost
 
showmount -e 10.xx.xx.xx

# 客户端
yum install -y nfs-utils
showmount -e 172.18.0.13
mkdir -p /mnt/share
mount 172.18.0.13:/mnt/share /mnt/share -o proto=tcp -o nolock
df -h | grep 172.18.0.13

udp:

mount 172.18.0.13:/mnt/share /mnt/share
umount /mnt/share

fstab自动挂载设置
修改 /etc/fstab 配置文件,加入 NFS 共享目录的挂载设置(文件系统类型为nfs)。
挂载参数建议添加_netdev(设备需要网络)
若添加 soft、intr 参数可以实现软挂载,允许在网络中断时放弃挂载。这样客户机就可以在每次开机后自动挂载 NFS 共享资源了。

vim /etc/fstab

192.168.109.11:/opt/web /var/www/html           nfs     default,_netdev 0 0


#16
python更改下载源地址
python默认的pip源在国外,如果下载比较大的第三方库时可能会非常非常慢,甚至会报错,所以为了有一个更加友好的python使用体验,建议为python的pip换一下源。

临时使用pip源

在使用pip时候,后面加上参数-i 镜像地址,例如:

pip3 install pygame -i http://mirrors.aliyun.com/pypi/simple/
永久修改:

pip config set global.index-url http://mirrors.aliyun.com/pypi/simple/

[root@localhost bin]# ./pip config set global.index-url http://mirrors.aliyun.com/pypi/simple/Writing to /root/.config/pip/pip.conf工作中遇到的问题总结
WARNING: The repository located at mirrors.aliyun.com is not a trusted
WARNING: The repository located at mirrors.aliyun.com is not a trusted or secure host and is being ignored. If this repository is available via HTTPS we recommend you use HTTPS instead, otherwise you may silence this warning and allow it anyway with '–trusted-host mirrors.aliyun.com'.
ERROR: Could not find a version that satisfies the requirement Pillow3.4.2 (from versions: none)
ERROR: No matching distribution found for Pillow3.4.2
WARNING: The repository located at mirrors.aliyun.com is not a trusted or secure host and is being ignored. If this repository is available via HTTPS we recommend you use HTTPS instead, otherwise you may silence this warning and allow it anyway with '–trusted-host mirrors.aliyun.com'.

解决方法:根据错误提醒,添加 --trusted-host mirrors.aliyun.com 即可,如下

[root@localhost bin]# ./pip install -r requirements.txt --trusted-host mirrors.aliyun.com
#17
python3 开发 / 解决 mysql.connector.errors.NotS...
上次发布者 jvip_chen - 2023-2月-06 03:51 下午
环境
mysql:8.0.11
python:3.6

错误描述
mysql.connector.errors.NotSupportedError) Authentication plugin 'caching_sha2_password' is not supported解决方案:

pip install MySQL-connector-python
#18
Linux 系统 / timedatectl命令使用介绍
上次发布者 jvip_chen - 2023-2月-06 12:37 下午
timedatectl是Linux下的一条命令,用于控制系统时间和日期。可以用来查询和更改系统时钟于设定,同时可以设定和修改时区信息。这篇文章简单介绍一下如何使用timedatectl进行常见操作。

基础知识
关于RTC/系统时钟/NTP/时区等基本信息和设定的介绍,可参看如下文章,本文不再赘述。

https://blog.csdn.net/liumiaocn/article/details/79250793
常见用法
使用timedatectl可以进行如下常见操作

  • 查看当前时间/日期/时区:timedatectl或者timedatectl status
  • 查看所有可用时区:timedatectl list-timezones
  • 设置时区:timedatectl set-timezone "时区信息"
  • 设置UTC:timedatectl set-timezone UTC
  • 设置时间:timedatectl set-time HH:MM:SS
  • 设置日期:timedatectl set-time YYYY-MM-DD
  • 设置日期时间:timedatectl set-time "YYYY-MM-DD HH:MM:SS"
  • 设置硬件时钟为本地时间:timedatectl set-local-rtc 1
  • 设置硬件时钟为UTC时间:timedatectl set-local-rtc 0
  • 启动NTP时间同步(启用NTP服务或者Chrony服务):timedatectl set-ntp true
  • 禁用NTP时间同步:timedatectl set-ntp false
#19
Linux 系统 / chmod命令详细用法
上次发布者 jvip_chen - 2023-1月-28 04:24 下午
指令名称 : chmod

使用权限 : 所有使用者

使用方式 : chmod [-cfvR] [–help] [–version] mode file...
说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。

参数 :

mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本

范例 :

将档案 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt
将档案 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt
ex1.py 设定为只有该档案拥有者可以执行 :

chmod u+x ex1.py
将目前目录下的所有档案与子目录皆设为任何人可读取 :

chmod -R a+r *
此外chmod也可以用数字来表示权限如 chmod 777 file

语法为:chmod abc file

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。

范例:

chmod a=rwx file

chmod 777 file
效果相同
chmod ug=rwx,o=x file



chmod 771 file
效果相同
若用chmod 4755 filename可使此程序具有root的权限.
指令名称 : chown
使用权限 : root

使用方式 : chmod [-cfhvR] [–help] [–version] user[] file...

说 明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由 系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才 有这样的权限。

把计 :

user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群 体(group)-c : 若该档案拥有者确实已经更改,才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结 (link)进行变更,而非该 link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者 变更(即以递回的方式逐个变更)–help : 显示辅助说明–version : 显示版本

范例 :

将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :

chown jessie:users file1.txt
将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport :

chmod -R lamport:users *
-rw------- (600) -- 只有属主有读写权限。
-rw-r--r-- (644) -- 只有属主有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) -- 只有属主有读、写、执行权限。
-rwxr-xr-x (755) -- 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) -- 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) -- 所有用户都有文件读、写权限。这种做法不可取。
-rwxrwxrwx (777) -- 所有用户都有读、写、执行权限。更不可取的做法。

以下是对目录的两个普通设定:

drwx------ (700) - 只有属主可在目录中读、写。
drwxr-xr-x (755) - 所有用户可读该目录,但只有属主才能改变目录中的内容。

运行 .sh 文件类型的文件:
用file命令测试一下看是什么类型的
file xxxx.sh
如果是Bourne-Again shell script 可以sh xxxx.sh 或者chmod +x xxxx.sh 再./xxx.sh
一般 .sh 的直接添加x(可执行属性) chmod +x xxx.sh 然后./xxx.sh就可以了
chmod是一个改变用户拥有指定文件的权限的命令.r:只读,w:写,x执行.也可以用数字
#20
PHP环境搭建 / CENTOS YUM 安装PHP7或PHP8
上次发布者 jvip_chen - 2022-12月-15 05:18 下午
1.安装源

yum install epel-release
Centos 7

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Centos 8

yum install http://rpms.remirepo.net/enterprise/remi-release-8.rpm
Centos 9

yum install http://rpms.remirepo.net/enterprise/remi-release-9.rpm
2.安装YUM管理工具

yum install yum-utils
3. 查看PHP(可忽略此步骤)

yum search php73
 yum search php74
 yum search php80
 yum search php81

4.安装PHP


yum install php74-php-gd  php74-php-pdo php74-php-mbstring php74-php-cli php74-php-fpm php74-php-mysqlnd5.启动FPM

service php74-php-fpm start