Database Tools
mysql workbench | navicat 15 激活
PHP
开发环境 oneinstack
Javascript
开发环境 nvm
接口文档工具
showDoc php开发的几口文档管理工具,简介,支持shell脚本通过注释自动生成接口文档
YAPI YAPI是由去哪儿网移动架构组开发的可视化接口管理工具
参考链接 https://juejin.cn/post/6844903874046722055
IDE
vscode 常用插件
知识图谱
Database Tools
mysql workbench | navicat 15 激活
PHP
开发环境 oneinstack
Javascript
开发环境 nvm
接口文档工具
showDoc php开发的几口文档管理工具,简介,支持shell脚本通过注释自动生成接口文档
YAPI YAPI是由去哪儿网移动架构组开发的可视化接口管理工具
参考链接 https://juejin.cn/post/6844903874046722055
IDE
vscode 常用插件
此处物理机指普通的PC电脑和笔记本非服务器
基础知识
boot是可引导bai光盘,iso是国际标du准光盘格式(全世界zhi能读DVD的设备都支持),udf是统一光盘dao格式(Universal Disc Format,全世界能读DVD的设备绝大多数都支持)
通常电脑主板支持两种模式 UEFI和BIOS
UEFI
BIOS
UEFI Bios支持两种启动模式
Legacy+UEFI启动模式和UEFI启动模式,其中Legacy+UEFI启动模指的是UEFI和传统BIOS共存模式,可以兼容传统BIOS引导模式启动操作系统;UEFI启动模式只是在UEFI引导模式启动操作系统。
选定启动模式并安装操作系统,安装后只能使用设定的模式,用于启动操作系统;
操作系统安装时使用Legacy+UEFI模式,兼容在传统BIOS引导模式启动操作系统;
操作系统安装时使用UEFI引导模式,只能在UEFI引导模式启动操作系统。
Legacy+UEFI模式与UEFI模式的区别
1、Legacy+UEFI启动模式是基于某些电脑硬件设备和操作系统(如WinXP/7)还不支持基于UEFI BIOS的情况,考虑从传统BIOS引导模式启动。传统BIOS引导模式允许Hba,模块设备使用Rom选项。
2、UEFI启动模式用于操作系统自动从预启动的操作环境,加载到一种操作系统上,从而使开机程序化繁为简,节省时间。并且支持2T以上硬盘,加强对硬件的支持
boot.iso为网络安装版,dvd1为完整安装版
linux刻录
dd bs=4M if=ubuntu-19.10-desktop-amd64.iso of=/dev/sdc status=progress
2463842304字节(2.5 GB)已复制, 587.050253 s, 4.2 MB/s
记录了587+1 的读入
记录了587+1 的写出
2463842304字节(2.5 GB)已复制,587.361 秒,4.2 MB/秒
bs代表字节为单位的块大小 if镜像文件 of输出设备 status=progress 显示进度
刻录centos8时无法启动,iso文件正常是阿里云下载的使用file命令查看包含MBR分区信息,最后发现问题是文件系统问题,用linux刻录linux系统时推荐是ext4文件系统,也可能只有centos8的镜像有这个问题,其它版本和系统没有验证
file CentOS-8.2.2004-x86_64-dvd1.iso
CentOS-8.2.2004-x86_64-dvd1.iso: DOS/MBR boot sector; partition 2 : ID=0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 23800, 20380 sectors
在dd后,需要把优盘再次格式化为fat32文件系统,参考
出现isolinux.bin missing or corrupt错误
参考
是因为磁盘目录 of=/dev/sdc 末尾有数字需要去掉
Device Boot Start End Sectors Size Id Type
/dev/sdd4 * 256 125033618 125033363 59.6G c W95 FAT32 (LBA)
fdisk -l 显示的磁盘末尾有4 刻录时选择输出路径则为 of=/dev/sdd
windows使用软碟通刻录
启动时汇报启动脚本超时无法发现/dev/root,原因是软碟通会把U盘的标签就是驱动器名称会截断比如centos-8-2-2004-x86_64 截断成centos8-2与启动项的不一致,解决方法百度有很多。个人推荐刻录windows启动盘就用windows支持的文件系统使用windows系统刻录,同理linux就用linux支持的文件系统使用dd刻录
mysql-workbench
Workbench can't find libproj.so, some options may be unavailable.
/usr/bin/mysql-workbench-bin: symbol lookup error: /usr/lib/mysql-workbench/libwbprivate.so.8.0.16: undefined symbol:
_ZN7pcrecpp2RE4InitEPKcPKNS_10RE_OptionsE
ubuntu 安装mysql-workbench-comminuty 启动之后报上述错误,
原因是gtk绘图失败,安装所有有关gdk的更新(同理可安装gtk
sudo apt install gtk*
安装之后没有效果,还是失败,最后重装解决。
18.04及后续版本没有出现此问题
参考
centos
1.点击设备->安装增加功能->下载增加镜像,底部镜像按钮挂载VBoxGuestAddtions.iso 运行
2.运行后报错,没有安装内核,需要安装内核和gcc 并且保持kernel 和kernel-devel版本一致
yum install -y kernel-devel kernel-headers gcc make
yum -y upgrade kernel kernel-devel
reboot
uname -r //查看当前启动的内核版本
rpm -qa | grep kernel-[0-9] //查看全部的内核
yum remove xxxx //删除旧版本内核
或者可以使用下面两个命令中的一个安装和Linux内核版本匹配的kernel-devel
yum install -y "kernel-devel-uname-r == $(uname -r)"
yum install -y kernel-devel-xxxx
centos 8 报错
https://github.com/geerlingguy/packer-centos-8/issues/4
$ cat /var/log/vboxadd-setup.log
Building the main Guest Additions 6.0.12 module for kernel 4.18.0-80.7.1.el8_0.x86_64.
Error building the module. Build output follows.
make V=1 CONFIG_MODULE_SIG= -C /lib/modules/4.18.0-80.7.1.el8_0.x86_64/build M=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 -j1 modules
Makefile:958: *** "Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel". Stop.
make: *** [/tmp/vbox.0/Makefile-footer.gmk:111: vboxguest] Error 2
Could not find the X.Org or XFree86 Window System, skipping.
modprobe vboxguest failed
yum(dnf)install -y elfutils-libelf-devel elfutils-libelf-devel.x86_64
sh VBoxLinuxAdditions.run
ubuntu desktop
#先更新
sudo apt update && sudo apt upgrade
安装增加功能
同 centos 设备 >> 安装增强功能
#根据报错信息安装如下包
sudo apt install gcc make perl
#ubuntu24.04 需要安装bzip2
sudo apt install bzip2
点击挂在的光盘,运行增强程序
共享文件夹
挂载点要设置到登录用户的家目录/home/xxx/dirname 下,会自动创建文件夹,使用chmod和chown 修改权限无效
使用如下命令手动挂载方式,可以更改权限目录
sudo mount -t vboxsf downloads /home/www/share
ubuntu server
配置示例
基于oneinstack安装包生成的配置文件
php-fpm配置文件
位置/usr/local/php/etc/php/php-fpm.conf
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
log_level = warning
emergency_restart_threshold = 30
emergency_restart_interval = 60s
process_control_timeout = 5s
daemonize = yes
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
include = /usr/local/php/etc/php-fpm.d/*.conf
线程池配置目录
develop.conf
[develop]
//不同的线程池使用不同的sock文件
//nginx配置文件监听对应的sock
listen = /dev/shm/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = yangliuan
listen.group = yangliuan
listen.mode = 0666
user = yangliuan
group = yangliuan
pm = dynamic
pm.max_children = 6
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 6
pm.max_requests = 2048
pm.process_idle_timeout = 10s
request_terminate_timeout = 600
request_slowlog_timeout = 0
pm.status_path = /php-fpm_status
slowlog = var/log/slow.log
rlimit_files = 51200
rlimit_core = 0
catch_workers_output = yes
env[HOSTNAME] = yangliuan-TM1707
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
参考
通过虚拟机下载提取安装包(有的机房禁止访问外网)
yum install --downloadonly --downloaddir=rpm gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel krb5-devel
cd rpm
rpm -ivh autoconf-2.69-11.el7.noarch.rpm cpp-4.8.5-39.el7.x86_64.rpm gcc-4.8.5-39.el7.x86_64.rpm gcc-c++-4.8.5-39.el7.x86_64.rpm glibc-devel-2.17-307.el7.1.x86_64.rpm glibc-headers-2.17-307.el7.1.x86_64.rpm kernel-headers-3.10.0-1127.18.2.el7.x86_64.rpm keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm libcom_err-devel-1.42.9-17.el7.x86_64.rpm libkadm5-1.15.1-46.el7.x86_64.rpm libselinux-devel-2.5-15.el7.x86_64.rpm libsepol-devel-2.5-10.el7.x86_64.rpm libstdc++-devel-4.8.5-39.el7.x86_64.rpm libverto-devel-0.2.5-4.el7.x86_64.rpm m4-1.4.16-10.el7.x86_64.rpm openssl-devel-1.0.2k-19.el7.x86_64.rpm pam-devel-1.1.8-23.el7.x86_64.rpm pcre-devel-8.32-17.el7.x86_64.rpm zlib-devel-1.2.7-18.el7.x86_64.rpm krb5-devel-1.15.1-46.el7.x86_64.rpm
下载openssh8.3p1 和 openssl-1.1.9.tar.gz
wget -c https://ftp.openssl.org/source/openssl-1.1.1g.tar.gz
wget -c https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/openssh-8.3.tar.gz
解压并编译安装openssl
openssl version #查看当前版本,等升级完对比
OpenSSL 1.0.2k-fips 26 Jan 2017
mv /usr/bin/openssl /usr/bin/openssl_bak #备份
mv /usr/include/openssl /usr/include/openssl_bak #备份
tar -zxvf openssl-1.1.1g.tar.g
cd openssl-1.1.1g/
./config --prefix=/usr/local/ssl -d shared && make && make install
echo $? #echo $?查看下最后的make install是否有报错,0表示没有问题
0
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl #生成软链接
ln -s /usr/local/ssl/include/openssl /usr/include/openssl #生成软链接
ll /usr/bin/openssl #查看是否生成成功
/usr/bin/openssl -> /usr/local/ssl/bin/openssl
ll /usr/include/openssl -ld #查看是否生成成功
/usr/include/openssl -> /usr/local/ssl/include/openssl
#执行下面命令加载配置
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
/sbin/ldconfig
openssl version #查看确认版本
如果出现openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
#查找libssl.so.1.1的目录 然后生成软链接
find / -name "libssl.so.1.1"
/usr/local/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
解压并安装openssh
ssh -V #查看ssh版本
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
tar -zxvf openssh-8.3p1.tar.gz
cd openssh-8.3p1
chown -R root.root /root/openssh/openssh-8.3p1 #更改当前目录所属用户和用户组为root
rm -rf /etc/ssh/* #删除原先ssh的配置文件和目录
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/ssl/include --with-ssl-dir=/usr/local/ssl --with-zlib --with-md5-passwords --with-pam && make && make install #配置编译安装
#如果遇到权限问题 permission 0640 for xxxx 将报权限问题的目录都设为600
chmod -R 0600 /etc/ssh/ssh_host_ecdsa_key
echo $? #同上
0
#修改sshd配置
vim /etc/sshd_config
PermitRootLogin yes
UseDNS no
#从安装目录cp文件到目标位置
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
#设置执行权限
chmod +x /etc/init.d/sshd
#添加启动项
chkconfig --add sshd
systemctl enable sshd
#把原先的systemd管理的sshd文件删除或者移走或者删除,不移走的话影响我们重启sshd服务
mv /usr/lib/systemd/system/sshd.service /tmp/
#设置开机启动
chkconfig sshd on
#重启sshd
systemctl restart sshd.service
#查看sshd是否启动
netstat -lntp
#测试版本
ssh -V
OpenSSH_8.3p1, OpenSSL 1.1.1g 21 Apr 2020
参考
sudo apt install ffmpeg apt包
sudo snap install ffmpeg snap包
ffmpeg -version
安装sdl软件包
SDL(Simple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,
适用于 游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件
没有sdl包的情况下安装ffmpeg时,dnf会提示缺少libSDL2-2.0.so.0()
https://mirrors.aliyun.com/centos/8/PowerTools/x86_64/os/Packages/SDL2-2.0.10-2.el8.x86_64.rpm
安装rpmfusion仓库
dnf install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
如果没有rpmfusion这个仓库,安装ffmpeg时dnf会提示找不到匹配
dnf包管理工具安装ffmpeg
dnf install ffmpeg
ffmpeg -version
RPM Fusion存储库
参考 How to Install and Use FFmpeg on CentOS 7
#依赖epel存储库,安装epel存储库
sudo yum install epel-release -y
sudo yum update -y
#安装启用RPM Fusion
sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
#安装ffmpeg
sudo yum install ffmpeg ffmpeg-devel
#查看版本
ffmpeg -version
ffmpeg version 3.4.8 Copyright (c) 2000-2019 the FFmpeg developers
经测试这个仓库速度很慢
Nux Dextop YUM 存储库
参考 How to Install FFmpeg on CentOS
#依赖epel存储库,安装epel存储库
sudo yum install epel-release -y
sudo yum update -y
#安装Nux Dextop存储库
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
#安装ffmpeg
sudo yum install ffmpeg ffmpeg-devel -y
#查看版本
ffmpeg -version
ffmpeg version 2.8.15 Copyright (c) 2000-2018 the FFmpeg developers
经测试这个仓库速度有时候也很慢
源码编译安装ffmpeg
参考
Mapping
是定义文档及其包含的字段的存储和索引方式的过程,相当于关系型数据库中定义数据库和表结构的语句
核心数据类型 Core datatypes
复杂数据类型 Complex datatypes
Geo 数据类型 (地理位置)
专有数据类型 Specialised datatypes
Range 范围
https://www.elastic.co/guide/en/elasticsearch/reference/current/range.html
数组
在Es中数组不需要专门定义,任何字段都可以包含另个或多个值即数组,数组中的所有制都必须具有相同的数据类型。
多字段 Multi-fileds
为不同的目的以不同的方式为同一字段建立索引
设置多个字段可以使用不同方式索引,使用不同的analyzer
PUT my_index
{
"mappings": {
"properties": {
"city": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
},
"comment": {
"type": "text",
"fields": {
"english_comment": {
"type": "text",
"analyzer":"english",
"search_analyzer":"english"
}
}
}
}
}
}
Dynamic Mapping 自动创建Mapping
创建index时,不需要定义Mapping,Es根据数据类型自动判断创建类型,优点是方便,缺点是有时后自动创建类型不是你想要的数据类型。
Mapping 字段类型修改机制
1.新增字段
Dynamic 设置为true时,一旦新增字段的文档写入,Mapping也同时被更新
Dynamic 设置为false,Mapping不会被更新,新增字段的数据无法被索引,但是信息会出现在_source中。
Dynamic设置成Strict,文档写入失败
2.已有字段,一旦已经有数据写入,就不再支持修改字段定义
Lucene实现的倒排索引,一旦生成后,就不允许修改
3.如果希望改变字段类型,必须Reindex Api,重建索引,因为如果修改了字段的数据类型,会导致已经索引的数据数据无法被搜索,新增自担不会有这种影响。
PUT movies
{
"mappings":{
"_doc":{
"dynamic":"false"
}
}
}
自定义Mapping
1.参考API手册,纯手写
2.为了减少输入的工作量,减少出错概率,可以依靠以下步骤
四种不同界别的Index Options 配置,可以控制倒排索引记录的内容
Text类型默认记录postions,其它默认为docs
记录内容越多,占用存储空间越大
设置null_value 属性可以搜索null值
PUT users
{
"mappings":{
"properties":{
"firstName":{
"type":"text",
"index":false //不索引该字段
},
"bio":{
"type":"text",
"index_options":"offsets"
},
"mobile":{
"type":"text",
"null_value":"NULL"
}
}
}
}
精确值和全文本 Exact values vs Full Text
精确值不需要做分词处理
文档CRUD
Index | PUT my_index/_doc {“user”:”mike”,”comment”:”you know for search”} |
Create | PUT my_index/_create/1 {“user”:”mike”,”comment”:”you know for search”} POST my_index/_doc(不指定ID,自动生成) |
Read | GET my_index/_doc/1 |
Update | POST my_index/_update/1 {“doc”:{“user”:”mike”,”comment”:”you know, Elasticsearch”}} |
Delete | DELETE my_index/_doc/1 |
在单次API调用中执行多个索引编制或删除操作。这样可以减少开销,并可以大大提高索引速度。
支持四种类型操作 Index,Create,Update,Delete
在单次请求中对一个或多个索引进行查询
在单词API请求中执行多个search