小达博客源码
This commit is contained in:
commit
3617bcfaf0
7
.github/dependabot.yml
vendored
Normal file
7
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 20
|
||||
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
db.json
|
||||
*.log
|
||||
node_modules/
|
||||
public/
|
||||
.deploy*/
|
||||
_multiconfig.yml
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
47
_config.butterfly.yml
Normal file
47
_config.butterfly.yml
Normal file
@ -0,0 +1,47 @@
|
||||
canvas_fluttering_ribbon:
|
||||
enable: true
|
||||
mobile: true # false 手機端不顯示 true 手機端顯示
|
||||
# # 點擊出現愛心
|
||||
# click_heart:
|
||||
# enable: true
|
||||
# mobile: false
|
||||
fireworks:
|
||||
enable: true
|
||||
zIndex: -1 # -1 or 9999
|
||||
mobile: false
|
||||
# 美化頁面顯示
|
||||
beautify:
|
||||
enable: true
|
||||
field: site # site/post
|
||||
title-prefix-icon: '\f0c1'
|
||||
title-prefix-icon-color: "#F47466"
|
||||
# 加載動畫 Loading Animation
|
||||
preloader: true
|
||||
# enable: false
|
||||
# source
|
||||
# 1. fullpage-loading
|
||||
# 2. pace (progress bar)
|
||||
# source: 1
|
||||
# pace theme (see https://codebyzach.github.io/pace/)
|
||||
# pace_css_url:
|
||||
|
||||
# 图片格式 background: url(http://xxxxxx.com/xxx.jpg)
|
||||
# 顔色 background: '#49B202'
|
||||
# 留空 显示白色
|
||||
background: '#efefef'
|
||||
# background: url(https://i.loli.net/2019/09/09/5oDRkWVKctx2b6A.png)
|
||||
|
||||
highlight_theme: mac light
|
||||
highlight_copy: true
|
||||
highlight_lang: true # show the code language 是否显示代码块语言
|
||||
highlight_shrink: false #true代码框不展开,需点击 '>' 打开 false展开 none不显示'>'按钮,代码块展开
|
||||
code_word_wrap: true
|
||||
index_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/BBC19066-E176-47C2-9D22-48C81EE5DF6B.jpeg
|
||||
archive_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/67239FBB-E15D-4F4F-8EE8-0F1C9F3C4E7C.jpeg
|
||||
|
||||
|
||||
# Footer设置
|
||||
since: 2022
|
||||
footer_custom_text: Hi, welcome to my Xiaoda blog!
|
||||
# footer是否显示图片背景(与top_img一致)
|
||||
footer_bg: true
|
||||
0
_config.landscape.yml
Normal file
0
_config.landscape.yml
Normal file
111
_config.yml
Normal file
111
_config.yml
Normal file
@ -0,0 +1,111 @@
|
||||
# Hexo Configuration
|
||||
## Docs: https://hexo.io/docs/configuration.html
|
||||
## Source: https://github.com/hexojs/hexo/
|
||||
|
||||
# Site
|
||||
title: Xiaoda的博客
|
||||
#subtitle: 'XiaodaBlog'
|
||||
description: '欢迎访问小达的博客!'
|
||||
keywords: 编程
|
||||
author: Wen Yongda
|
||||
language: zh-CN
|
||||
timezone: 'Asia/Shanghai'
|
||||
|
||||
# URL
|
||||
## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project'
|
||||
url: http://example.com
|
||||
permalink: :year/:month/:day/:title/
|
||||
permalink_defaults:
|
||||
pretty_urls:
|
||||
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
|
||||
trailing_html: true # Set to false to remove trailing '.html' from permalinks
|
||||
|
||||
# Directory
|
||||
source_dir: source
|
||||
public_dir: public
|
||||
tag_dir: tags
|
||||
archive_dir: archives
|
||||
category_dir: categories
|
||||
code_dir: downloads/code
|
||||
i18n_dir: :lang
|
||||
skip_render:
|
||||
|
||||
# Writing
|
||||
new_post_name: :title.md # File name of new posts
|
||||
default_layout: post
|
||||
titlecase: false # Transform title into titlecase
|
||||
external_link:
|
||||
enable: true # Open external links in new tab
|
||||
field: site # Apply to the whole site
|
||||
exclude: ''
|
||||
filename_case: 0
|
||||
render_drafts: false
|
||||
post_asset_folder: true
|
||||
marked:
|
||||
prependRoot: true
|
||||
postAsset: true
|
||||
relative_link: false
|
||||
future: true
|
||||
highlight:
|
||||
enable: true
|
||||
line_number: false
|
||||
auto_detect: false
|
||||
tab_replace:
|
||||
# wrap: true
|
||||
hljs: true
|
||||
prismjs:
|
||||
enable: false
|
||||
preprocess: true
|
||||
line_number: false
|
||||
tab_replace: ''
|
||||
|
||||
# Home page setting
|
||||
# path: Root path for your blogs index page. (default = '')
|
||||
# per_page: Posts displayed per page. (0 = disable pagination)
|
||||
# order_by: Posts order. (Order by date descending by default)
|
||||
index_generator:
|
||||
path: ''
|
||||
per_page: 10
|
||||
order_by: -date
|
||||
|
||||
# Category & Tag
|
||||
default_category: uncategorized
|
||||
category_map:
|
||||
tag_map:
|
||||
|
||||
# Metadata elements
|
||||
## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
|
||||
meta_generator: true
|
||||
|
||||
# Date / Time format
|
||||
## Hexo uses Moment.js to parse and display date
|
||||
## You can customize the date format as defined in
|
||||
## http://momentjs.com/docs/#/displaying/format/
|
||||
date_format: YYYY-MM-DD
|
||||
time_format: HH:mm:ss
|
||||
## updated_option supports 'mtime', 'date', 'empty'
|
||||
updated_option: 'mtime'
|
||||
|
||||
# Pagination
|
||||
## Set per_page to 0 to disable pagination
|
||||
per_page: 10
|
||||
pagination_dir: page
|
||||
|
||||
# Include / Exclude file(s)
|
||||
## include:/exclude: options only apply to the 'source/' folder
|
||||
include:
|
||||
exclude:
|
||||
ignore:
|
||||
|
||||
# Extensions
|
||||
## Plugins: https://hexo.io/plugins/
|
||||
## Themes: https://hexo.io/themes/
|
||||
# theme: landscape
|
||||
theme: butterfly
|
||||
|
||||
# Deployment
|
||||
## Docs: https://hexo.io/docs/one-command-deployment
|
||||
deploy:
|
||||
type: 'git'
|
||||
repo: https://gitee.com/wenyongda/xiaoda-blog.git
|
||||
branch: master
|
||||
33
package.json
Normal file
33
package.json
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "hexo-site",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "hexo generate",
|
||||
"clean": "hexo clean",
|
||||
"deploy": "hexo deploy",
|
||||
"server": "hexo server"
|
||||
},
|
||||
"hexo": {
|
||||
"version": "6.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"cheerio": "^0.22.0",
|
||||
"hexo": "^6.3.0",
|
||||
"hexo-asset-image": "^1.0.0",
|
||||
"hexo-deployer-git": "^3.0.0",
|
||||
"hexo-generator-archive": "^2.0.0",
|
||||
"hexo-generator-category": "^2.0.0",
|
||||
"hexo-generator-index": "^3.0.0",
|
||||
"hexo-generator-json-content": "^4.2.3",
|
||||
"hexo-generator-tag": "^2.0.0",
|
||||
"hexo-renderer-ejs": "^2.0.0",
|
||||
"hexo-renderer-marked": "^6.0.0",
|
||||
"hexo-renderer-pug": "^3.0.0",
|
||||
"hexo-renderer-stylus": "^2.1.0",
|
||||
"hexo-server": "^3.0.0",
|
||||
"hexo-theme-landscape": "^0.0.3",
|
||||
"hexo-theme-volantis": "^5.7.6",
|
||||
"save": "^2.9.0"
|
||||
}
|
||||
}
|
||||
4
scaffolds/draft.md
Normal file
4
scaffolds/draft.md
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
title: {{ title }}
|
||||
tags:
|
||||
---
|
||||
4
scaffolds/page.md
Normal file
4
scaffolds/page.md
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
title: {{ title }}
|
||||
date: {{ date }}
|
||||
---
|
||||
5
scaffolds/post.md
Normal file
5
scaffolds/post.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
title: {{ title }}
|
||||
date: {{ date }}
|
||||
tags:
|
||||
---
|
||||
273
source/_posts/Docker.md
Normal file
273
source/_posts/Docker.md
Normal file
@ -0,0 +1,273 @@
|
||||
---
|
||||
title: Docker
|
||||
date: 2021-03-23 10:30:31
|
||||
author: 文永达
|
||||
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/67239FBB-E15D-4F4F-8EE8-0F1C9F3C4E7C.jpeg
|
||||
---
|
||||
# Docker
|
||||
|
||||
---
|
||||
|
||||
Docker:海豚,身上背着一堆集装箱
|
||||
|
||||
场景:
|
||||
|
||||
传统的服务器 Docker
|
||||
1G左右 几十兆几百兆
|
||||
CentOS占CPU Docker CPU引擎占用低
|
||||
1-2分钟 几秒
|
||||
安装软件 安装方便
|
||||
部署应用 部署应用,挂载,数据卷
|
||||
多个应用放到一起 每个应用服务都是一个容器,相互隔离
|
||||
一个独立的操作系统 必须依赖于操作系统,推荐使用Linux
|
||||
|
||||
## docker安装:
|
||||
|
||||
```shell
|
||||
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
|
||||
# 另一种方式
|
||||
curl -sSL https://get.daocloud.io/docker | sh
|
||||
# 如上述两种方式都不行
|
||||
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
|
||||
# 查看所有可安装版本
|
||||
yum list docker-ce --showduplicates | sort -r
|
||||
# 安装
|
||||
yum install docker-ce-18.03.1.ce
|
||||
|
||||
```
|
||||
|
||||
1、镜像:image。一个镜像代表一个软件。如:redis镜像,mysql镜像,tomcat镜像。。
|
||||
特点:只读
|
||||
2、容器:container。一个镜像只要一启动,称之为启动了一个容器。
|
||||
3、仓库:repository。存储docker中的镜像具体位置
|
||||
远程仓库:在全球范围内有一个远程仓库
|
||||
本地仓库:当前自己机器中下载的镜像存储位置
|
||||
|
||||
Docker配置阿里云镜像加速
|
||||
https://www.cnblogs.com/LUA123/p/11401962.html
|
||||
|
||||
## 查看docker 信息
|
||||
|
||||
```shell
|
||||
docker info
|
||||
```
|
||||
|
||||
## 查看docker 镜像 image
|
||||
|
||||
```shell
|
||||
docker images
|
||||
```
|
||||
|
||||
## docker 安装镜像 image
|
||||
|
||||
MySQL 5.7
|
||||
|
||||
```shell
|
||||
docker pull mysql:5.7
|
||||
```
|
||||
|
||||
## docker 移除镜像 image
|
||||
|
||||
若已有镜像用于容器,请先将容器删除
|
||||
|
||||
```shell
|
||||
docker rm -f <CONTAINER ID>
|
||||
```
|
||||
|
||||
```shell
|
||||
docker image rm hello-world
|
||||
docker rmi hello-world
|
||||
```
|
||||
|
||||
```shell
|
||||
# 第一个8080是外部海豚上的 第二个8080是内部集装箱上的
|
||||
docker run -p 8080:8080
|
||||
```
|
||||
|
||||
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
|
||||
-d: 后台运行容器,并返回容器 ID;
|
||||
-i: 以交互模式运行容器,通常与 -t 同时使用;
|
||||
-P: 随机端口映射,容器内部端口随机映射到主机的端口
|
||||
-p: 指定端口映射,格式为:主机 (宿主) 端口:容器端口
|
||||
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
|
||||
--name="nginx-lb": 为容器指定一个名称;
|
||||
--dns 8.8.8.8: 指定容器使用的 DNS 服务器,默认和宿主一致;
|
||||
--dns-search example.com: 指定容器 DNS 搜索域名,默认和宿主一致;
|
||||
-h "mars": 指定容器的 hostname;
|
||||
-e username="ritchie": 设置环境变量;
|
||||
--env-file=[]: 从指定文件读入环境变量;
|
||||
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定 CPU 运行;
|
||||
-m : 设置容器使用内存最大值;
|
||||
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
|
||||
--link=[]: 添加链接到另一个容器;
|
||||
--expose=[]: 开放一个端口或一组端口;
|
||||
--volume , -v 绑定一个卷
|
||||
|
||||
docker启动容器
|
||||
|
||||
```shell
|
||||
docker start <container id>
|
||||
```
|
||||
|
||||
docker停止容器
|
||||
|
||||
```shell
|
||||
docker stop <container id>
|
||||
```
|
||||
|
||||
docker重启容器
|
||||
|
||||
```shell
|
||||
docker restart <container id>
|
||||
```
|
||||
|
||||
## docker启动MariaDB
|
||||
|
||||
拉去mariadb镜像
|
||||
|
||||
```shell
|
||||
docker pull mariadb:10.2
|
||||
```
|
||||
|
||||
```shell
|
||||
docker images
|
||||
docker run --name mariadb10.2 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.2
|
||||
```
|
||||
|
||||
## dockerRedis主从复制集群搭建
|
||||
|
||||
拉取redis4.0.11镜像
|
||||
|
||||
```shell
|
||||
docker pull redis:4.0.11
|
||||
```
|
||||
|
||||
编辑redis.conf
|
||||
|
||||
redis-master.conf
|
||||
|
||||
```shell
|
||||
vim /root/mysoftware/docker-file/redis/redis-master.conf
|
||||
bind 0.0.0.0 #让redis可以被任意ip访问
|
||||
daemonize yes #让redis服务后台运行
|
||||
# 如需设定密码
|
||||
requirepass masterpassword # 设定密码
|
||||
```
|
||||
|
||||
redis-slave1.conf
|
||||
|
||||
```shell
|
||||
vim /root/mysoftware/docker-file/redis/redis-slave1
|
||||
bind 0.0.0.0 #让redis可以被任意ip访问
|
||||
daemonize yes #让redis服务后台运行
|
||||
# 如需设定密码
|
||||
requirepass masterpassword # 设定密码
|
||||
# 设置主机地址端口 redis5.0以上为 replicaof <master-IP> <master-port>
|
||||
slaveof <master-IP> <master-port>
|
||||
# 查看master ip
|
||||
docker inspect <container id>
|
||||
# 主库有密码必需要配置,<master-password>代表主库的访问密码
|
||||
masterauth <master-password>
|
||||
```
|
||||
|
||||
运行redis容器
|
||||
|
||||
redis-master
|
||||
|
||||
```shell
|
||||
# 运行服务
|
||||
docker run -it --name redis-master -v /usr/docker/redis/redis-master.conf:/usr/etc/redis/redis.conf -v /usr/docker/redis/data/:/data -d -p 35379:6379 redis:4.0.11 /bin/bash
|
||||
# 进入容器
|
||||
docker exec -it redis-master bash
|
||||
# 加载配置
|
||||
redis-server /usr/local/etc/redis/redis.conf
|
||||
# 如报错
|
||||
mkdir -p /usr/redis/bin
|
||||
# 测试连接
|
||||
redis-cli -a <master-password>
|
||||
```
|
||||
|
||||
redis-slave1
|
||||
|
||||
```shell
|
||||
# 运行服务
|
||||
docker run -it --name redis-slave1 -v /usr/docker/redis/redis-slave1.conf:/usr/etc/redis/redis.conf -v /usr/docker/redis/data/:/data -d -p 35380:6379 redis:4.0.11 /bin/bash
|
||||
# 进入容器
|
||||
docker exec -it redis-slave1 bash
|
||||
# 加载配置
|
||||
redis-server /usr/local/etc/redis/redis.conf
|
||||
# 如报错 Can't chdir to '/usr/redis/bin': No such file or directory
|
||||
mkdir -p /usr/redis/bin
|
||||
# 测试连接
|
||||
redis-cli
|
||||
# 查看主从信息
|
||||
info Replication
|
||||
# 密码认证
|
||||
auth <slave-password>
|
||||
```
|
||||
|
||||
## dockerRedis哨兵高可用集群搭建
|
||||
|
||||
## docker的镜像迁移到另一台服务器
|
||||
|
||||
```shell
|
||||
# 找到想要移动的docker容器ID
|
||||
dockerCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
58ac9237b040 redis:4.0.11 "docker-entrypoint.s…" 5 hours ago Up 2 hours 0.0.0.0:6380->6379/tcp redis-slave1
|
||||
454bb484f90a redis:4.0.11 "docker-entrypoint.s…" 5 hours ago Up 2 hours 0.0.0.0:6379->6379/tcp redis-master
|
||||
ps -a
|
||||
|
||||
# 提交变更,并且把容器保存成镜像,命名为redis-master
|
||||
docker commit 454bb484f90a redis-master
|
||||
# 把redis-master镜像保存成tar文件
|
||||
docker save redis-master > /root/mysoftware/docker-file/redis/redis-master.tar
|
||||
# 拷贝到新的机器,执行load命令
|
||||
docker load < ./redis-master.tar
|
||||
```
|
||||
|
||||
## 修改运行中的docker容器的端口映射和挂载目录
|
||||
|
||||
方法一:删除原有容器,重建新容器
|
||||
|
||||
参考以上移除容器,启动容器
|
||||
|
||||
方法二:修改配置文件,重启docker服务
|
||||
|
||||
容器配置文件路径:
|
||||
|
||||
/var/lib/docker/containers/[[hash_of_the_container]/hostconfig.json]
|
||||
|
||||
其中的hashofthecontainer是docker镜像的hash值,可以通过docker ps或者docker inspect containername查看。(CONTAINER ID就可以看出来)
|
||||
|
||||
可以到/var/lib/docker/containers目录下,ls -l
|
||||
|
||||
```json
|
||||
{"Binds":["/usr/docker/redis/redis-slave2.conf:/usr/local/etc/redis/redis.conf"],"ContainerIDFile":"","LogConfig":{"Type":"json-file","Config":{}},"NetworkMode":"default","PortBindings":{"6379/tcp":[{"HostIp":"","HostPort":"6381"}]},"RestartPolicy":{"Name":"no","MaximumRetryCount":0},"AutoRemove":false,"VolumeDriver":"","VolumesFrom":null,"CapAdd":null,"CapDrop":null,"Dns":[],"DnsOptions":[],"DnsSearch":[],"ExtraHosts":null,"GroupAdd":null,"IpcMode":"shareable","Cgroup":"","Links":null,"OomScoreAdj":0,"PidMode":"","Privileged":false,"PublishAllPorts":false,"ReadonlyRootfs":false,"SecurityOpt":null,"UTSMode":"","UsernsMode":"","ShmSize":67108864,"Runtime":"runc","ConsoleSize":[0,0],"Isolation":"","CpuShares":0,"Memory":0,"NanoCpus":0,"CgroupParent":"","BlkioWeight":0,"BlkioWeightDevice":[],"BlkioDeviceReadBps":null,"BlkioDeviceWriteBps":null,"BlkioDeviceReadIOps":null,"BlkioDeviceWriteIOps":null,"CpuPeriod":0,"CpuQuota":0,"CpuRealtimePeriod":0,"CpuRealtimeRuntime":0,"CpusetCpus":"","CpusetMems":"","Devices":[],"DeviceCgroupRules":null,"DiskQuota":0,"KernelMemory":0,"MemoryReservation":0,"MemorySwap":0,"MemorySwappiness":null,"OomKillDisable":false,"PidsLimit":0,"Ulimits":null,"CpuCount":0,"CpuPercent":0,"IOMaximumIOps":0,"IOMaximumBandwidth":0}
|
||||
```
|
||||
|
||||
重启docker服务,再启动容器服务就可以了。
|
||||
|
||||
```shell
|
||||
systemctl restart docker
|
||||
docker ps -a
|
||||
docker start <container id>
|
||||
```
|
||||
|
||||
## docker安装code-server
|
||||
|
||||
```shell
|
||||
# 拉取镜像
|
||||
docker pull codercom/code-server
|
||||
# 创建宿主机目录
|
||||
mkdir /usr/docker/codeserver
|
||||
# 创建配置文件
|
||||
vim /usr/docker/codeserver/config.yaml
|
||||
|
||||
bind-addr: 127.0.0.1:8080
|
||||
auth: password
|
||||
password: 123456
|
||||
cert: false
|
||||
|
||||
# 创建并启动容器 # -u 表示以 root用户运行
|
||||
docker run -d -u root -p 8088:8080 --name code-server -v /usr/docker/codeserver/config.yaml:/root/.config/code-server/config.yaml -v /usr/docker/codeserver:/home/code codercom/code-server
|
||||
```
|
||||
28
source/_posts/Hexo.md
Normal file
28
source/_posts/Hexo.md
Normal file
@ -0,0 +1,28 @@
|
||||
---
|
||||
title: Hexo
|
||||
date: 2022-11-18 10:30:31
|
||||
author: 文永达
|
||||
---
|
||||
|
||||
# Hexo
|
||||
|
||||
启动本地开发服务器
|
||||
|
||||
```shell
|
||||
hexo server
|
||||
# or
|
||||
hexo s
|
||||
```
|
||||
|
||||
清空本地缓存
|
||||
|
||||
```shell
|
||||
hexo clean
|
||||
```
|
||||
|
||||
发布到Git上
|
||||
|
||||
```shell
|
||||
hexo g -d
|
||||
```
|
||||
|
||||
27
source/_posts/Jenkins.md
Normal file
27
source/_posts/Jenkins.md
Normal file
@ -0,0 +1,27 @@
|
||||
---
|
||||
title: Jenkins
|
||||
date: 2022-11-09 10:30:31
|
||||
author: 文永达
|
||||
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/B18FCBB3-67FD-48CC-B4F3-457BA145F17A.jpeg
|
||||
---
|
||||
# Jenkins
|
||||
|
||||
```powershell
|
||||
# 删除文件夹
|
||||
rmdir /q /s C:\Program" "Files\nginx-1.23.2\html\dist
|
||||
# 复制文件夹到指定目录
|
||||
xcopy /y /e /i C:\Users\Administrator\Documents\source\XiaoDaERP-Vben\dist C:\Program" "Files\nginx-1.23.2\html\dist
|
||||
# 发送文件(文件夹)到Linux远程服务器上
|
||||
pscp -r -l root -pw Wyd210213 C:\Users\Administrator\Documents\source\XiaoDaERP-Vben\dist 8.140.174.251:/usr/local/nginx/html
|
||||
```
|
||||
|
||||
```shell
|
||||
docker run -d -p 80:80 -p 443:443 --name nginxweb --privileged=true
|
||||
-v /usr/local/nginx/html/:/usr/share/nginx/html
|
||||
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
|
||||
-v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d
|
||||
-v /usr/local/nginx/logs:/var/log/nginx nginx
|
||||
|
||||
|
||||
ps aux | grep "nginx: worker process" | awk '{print $1}'
|
||||
```
|
||||
535
source/_posts/Linux.md
Normal file
535
source/_posts/Linux.md
Normal file
@ -0,0 +1,535 @@
|
||||
---
|
||||
title: Linux
|
||||
author: 文永达
|
||||
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/00E0F0ED-9F1C-407A-9AA6-545649D919F4.jpeg
|
||||
|
||||
---
|
||||
# Linux
|
||||
|
||||
---
|
||||
|
||||
## 简介
|
||||
|
||||
在linux系统中,没有盘符的概念。
|
||||
一个盘。/根目录
|
||||
没有图形化界面
|
||||
通过指令操作
|
||||
|
||||
linux指令是可以传参数的。
|
||||
|
||||
在Linux系统下,万事万物皆文件。
|
||||
|
||||
## Linux的文件结构(19个)
|
||||
|
||||
bin:存放的是二进制的可以执行文件。(重点)
|
||||
sbin:存放的是二进制的可以执行文件。super,只有root用户才能访问
|
||||
etc:存放系统配置文件(重点)
|
||||
usr:用来存放共享的系统资源
|
||||
home:家目录(重点)
|
||||
root:就是root用户的家目录
|
||||
dev:存放设备文件
|
||||
|
||||
## Linux指令
|
||||
|
||||
ip addr(ip a):查看主机的ip地址
|
||||
clear:清屏
|
||||
cd:进入指定的目录
|
||||
ls:列出当前目录下的所有文件及目录
|
||||
ls -l:给ls指令传了一个参数l。等同于ll。列出当前目录下的所有文件及目录的详情。
|
||||
ls bin:ls后可以接目录名,要么接绝对路径。
|
||||
tab键:提示作用。自动补全。
|
||||
cd (cd ~):代表回到家目录
|
||||
pwd:查看当前所在的目录
|
||||
方向键↑和↓:浏览历史指令
|
||||
|
||||
mkdir:创建目录
|
||||
mkdir -p:创建多级目录
|
||||
cp aa.txt init:复制粘贴。把aa.txt复制到init目录下
|
||||
cp -r init spring:复制粘贴。把init目录以及包含的文件复制到spring目录下
|
||||
mv aa.txt xiaoqiang.txt:重命名。把aa.txt重命名为xiaoqiang.txt。
|
||||
mv bb.txt spring:移动。把bb.txt移动到spring目录。
|
||||
mv -f spring aaaaa:在覆盖前不提示
|
||||
mv -r aaaaa bbbbb:强行覆盖。前提是被覆盖的目录和覆盖的目录要结构相同。(慎用)
|
||||
rm xiaoqiang.txt:删除xiaoqiang.txt
|
||||
rm -f spring.xml:强行删除spring.xml,没有确认提示
|
||||
rm -r init:递归删除init目录
|
||||
rm -rf bbbbb:递归删除bbbbb并且没有确认提示(慎用)
|
||||
rmdir aa:删除空目录aa(用的很少)
|
||||
rm -rf *:删除所有的目录及文件(慎用)
|
||||
|
||||
cat:显示文本文件的内容(一部分)。.java,.py,.c++,.xml,.html,.js,.css
|
||||
more:分页显示文本文件的内容。只能向下查看,不能向上翻页。
|
||||
less:分页显示文本文件的内容。上下翻页。通过PgUp和PgDn进行上下翻页,↑和↓一行一行的查看。输入q退出查看。
|
||||
top -n 10 xxxx:查看文本文件的前10行
|
||||
tail -n 10 xxxx:查看文本文件的后10行
|
||||
tail -f xxxx:实时监控文本文件的变化
|
||||
Ctrl + c:几乎可以退出所有的操作
|
||||
echo:打印输出一句话。也可以用作向文本文件内写入信息。会自动追加并换行。
|
||||
|
||||
### 压缩:
|
||||
|
||||
1、打包,把多个文件打成一个包。
|
||||
2、压缩,把文件占用的大小进行压缩。
|
||||
|
||||
tar命令:用来进行压缩和解压缩的。
|
||||
-c 建立一个压缩文件(打包)
|
||||
-x 解开一个压缩文件(解包)
|
||||
-z 是否需要使用gzip压缩
|
||||
-v 压缩过程中是否显示文件日志
|
||||
-f 使用的文件名
|
||||
tar -cf:只打包,不压缩,不显示日志
|
||||
tar -xf:解压文件,不显示日志
|
||||
tar -cvf:只打包,不压缩,显示日志
|
||||
tar -xvf:解压文件,显示日志。
|
||||
tar -zcvf:打包压缩,显示日志
|
||||
tar -zxvf:解压(最常用)
|
||||
|
||||
### 系统服务:
|
||||
|
||||
systemstl:操作系统服务。
|
||||
status:查看某个服务的状态
|
||||
stop:终止某个服务
|
||||
start:启动某个服务
|
||||
restart:重启某个服务
|
||||
|
||||
```shell
|
||||
systemctl status mysqld
|
||||
```
|
||||
|
||||
网络服务:network
|
||||
防火墙服务:firewalld
|
||||
Mysql:mysqld
|
||||
systemctl status network
|
||||
|
||||
## 文件详情:(以home目录为例)
|
||||
|
||||
d:说明当前文件是一个目录(- 代表的是文件)
|
||||
rwx:r,可读;w,可写;x,可执行。(代表当前文件的创建者的权限)
|
||||
r-x:代表的是和文件创建者的同组的用户的权限
|
||||
r-x:代表的是其他用户
|
||||
2:链接数
|
||||
root:创建者
|
||||
root:创建者所在的组
|
||||
6:文件占用空间的大小(字节)
|
||||
Apr 11 2018:最后一次修改时间
|
||||
home:文件名或目录名
|
||||
|
||||
## 进程管理
|
||||
|
||||
ps 查看前台进程
|
||||
ps -aux 查看所有进程详细信息 UID 用户 PID 进程ID
|
||||
ps -ef 查看所有进程详细信息 UID 用户 PID 进程ID PPID 父进程ID
|
||||
父进程id为1 为系统进程
|
||||
top 动态显示进程
|
||||
ps -aux|grep network 查看所有进程详细信息,并搜索network进程
|
||||
kill 根据PID,终止进程
|
||||
kill -9 强制终止
|
||||
|
||||
## vi命令 编辑器
|
||||
|
||||
i 切换到编辑模式
|
||||
ESC 切换到命令模式
|
||||
:wq 保存并退出
|
||||
:q 不保存退出
|
||||
:w 保存
|
||||
:q! 强制不保存退出
|
||||
:wq! 强制保存退出
|
||||
a 在光标后插入
|
||||
A 在光标当前行的行尾插入
|
||||
i 在光标前插入
|
||||
I 在光标当前行的行头插入
|
||||
:set nu 显示行号
|
||||
:set nonu 取消显示行号
|
||||
gg 到文本的第一行
|
||||
G 到文本的最后一行
|
||||
u 后退一步 相当于 Ctrl + z
|
||||
Ctrl + r 前进一步
|
||||
Shift + zz 保存退出 跟:wq一样
|
||||
起始行号,结束行号 del 删除对应范围内的行
|
||||
|
||||
安装vim编辑器
|
||||
|
||||
```shell
|
||||
yum install -y vim
|
||||
```
|
||||
|
||||
## 配置网络
|
||||
|
||||
```shell
|
||||
cd /etc/sysconfig/network-scripts
|
||||
vi ifcfg-ens33
|
||||
|
||||
TYPE=Ethernet
|
||||
PROXY_METHOD=none
|
||||
BROWSER_ONLY=no
|
||||
BOOTPROTO=dhcp
|
||||
DEFROUTE=yes
|
||||
IPV4_FAILURE_FATAL=no
|
||||
IPV6INIT=yes
|
||||
IPV6_AUTOCONF=yes
|
||||
IPV6_DEFROUTE=yes
|
||||
IPV6_FAILURE_FATAL=no
|
||||
IPV6_ADDR_GEN_MODE=stable-privacy
|
||||
NAME=ens33
|
||||
UUID=08913b58-0bc2-42c5-8b59-6782e0029d7b
|
||||
DEVICE=ens33
|
||||
ONBOOT=yes
|
||||
|
||||
# 修改ONBOOT=yes
|
||||
systemctl restart network
|
||||
|
||||
ip addr
|
||||
```
|
||||
|
||||
## 软件安装
|
||||
|
||||
rpm 本地安装
|
||||
yum centos安装软件 需要源
|
||||
|
||||
安装screenFetch
|
||||
|
||||
```shell
|
||||
#使用wget 下载安装包
|
||||
wget https://github.com/KittyKatt/screenFetch/archive/master.zip
|
||||
#使用unzip解压,unzip需要安装
|
||||
yum install unzip
|
||||
unzip master.zip
|
||||
#移动
|
||||
mv screenFetch-master/screenfetch-dev /usr/bin/screenfetch
|
||||
```
|
||||
|
||||
## 用户
|
||||
|
||||
who am i 查看当前用户
|
||||
who --count 查看当前登录用户数量
|
||||
exit 退出登录
|
||||
groupadd 创建用户组
|
||||
groupdel 删除用户组
|
||||
useradd xiaoqiang -g user 创建一个用户xiaoqiang,并指定用户组user
|
||||
passwd xiaoqiangf 给xiaoqiang用户指定密码
|
||||
su 切换用户 从root切换到其他用户不需要输入密码 如果从其他用户切换到root用户,需要输入密码
|
||||
|
||||
### 权限管理
|
||||
|
||||
Linux 下文件有三种权限 r 读 w写 x可执行
|
||||
|
||||
---
|
||||
|
||||
```shell
|
||||
chmod 755 file
|
||||
```
|
||||
|
||||
## 安装MySQL
|
||||
|
||||
有些Linux会自带MariaDB数据库,所以需要先卸载
|
||||
|
||||
列出安装的MariaDB的包
|
||||
|
||||
```shell
|
||||
rpm -qa | grep mariadb
|
||||
```
|
||||
|
||||
得到查看到的包名
|
||||
|
||||
卸载包 后面加上包名
|
||||
|
||||
```shell
|
||||
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
|
||||
```
|
||||
|
||||
自此下载MariaDB已经完成了
|
||||
|
||||
切换到home目录下
|
||||
|
||||
```shell
|
||||
cd /home/
|
||||
```
|
||||
|
||||
安装 wget 并下载yum库
|
||||
|
||||
```shell
|
||||
yum install wget -y
|
||||
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
|
||||
rpm -Uvh mysql80-community-release-el7-1.noarch.rpm
|
||||
cd /etc/yum.repos.d/
|
||||
vim mysql-community.repo
|
||||
```
|
||||
|
||||
选择要安装的MySQL版本
|
||||
|
||||
```shell
|
||||
[mysql57-community]
|
||||
name=MySQL 5.7 Community Server
|
||||
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
|
||||
enabled=0 // 将这里的0改为1
|
||||
gpgcheck=1
|
||||
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
|
||||
|
||||
[mysql80-community]
|
||||
name=MySQL 8.0 Community Server
|
||||
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
|
||||
enabled=1 //将这里的1改为0
|
||||
gpgcheck=1
|
||||
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
|
||||
```
|
||||
|
||||
enabled=0为禁用对应版本的YUM库,enabled=1为启用,默认8.0的配置为enabled=1,安装5.7的话,我们就把8.0的enabled=1修改为enabled=0,然后把5.7的enabled=0修改为enabled=1
|
||||
|
||||
安装MySQL并启动
|
||||
|
||||
```shell
|
||||
yum install mysql-community-server
|
||||
service mysqld start
|
||||
```
|
||||
|
||||
第一步安装成功之后,然后启动MySQL
|
||||
|
||||
如果失败了,提示GPG
|
||||
|
||||
RPM 维护一个单独的密钥环,因为它是一个系统范围的应用程序,而用户的 GPG 公钥环是一个用户特定的文件。要将 MySQL 公钥导入 RPM 密钥环,首先获取密钥,然后使用 rpm --import 导入密钥
|
||||
|
||||
```shell
|
||||
# centos
|
||||
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
|
||||
|
||||
# Ubuntu:
|
||||
wget -q -O - https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 | apt-key add -
|
||||
|
||||
yum install mysql-community-server
|
||||
```
|
||||
|
||||
查看MySQL初始密码
|
||||
|
||||
```shell
|
||||
sudo grep 'temporary password' /var/log/mysqld.log
|
||||
```
|
||||
|
||||
登录MySQL
|
||||
|
||||
```shell
|
||||
mysql -u root -p
|
||||
```
|
||||
|
||||
设置密码的验证强度等级
|
||||
|
||||
```shell
|
||||
set global validate_password_policy=LOW;
|
||||
```
|
||||
|
||||
设置密码长度为6位
|
||||
|
||||
```shell
|
||||
set global validate_password_length=6;
|
||||
```
|
||||
|
||||
修改MySQL初始密码
|
||||
|
||||
```shell
|
||||
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
|
||||
```
|
||||
|
||||
给root权限开启远程登录
|
||||
|
||||
```shell
|
||||
use mysql;
|
||||
select user,host from user;
|
||||
update user set host = '%' where user = 'root';
|
||||
flush privileges;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 配置Java环境变量
|
||||
|
||||
将tar.gz格式的jdk解压后移动到/usr目录下
|
||||
|
||||
```shell
|
||||
mv jdk1.8.0_301/ /usr/
|
||||
```
|
||||
|
||||
编辑/etc目录下profile文件 G到最后一行
|
||||
|
||||
```shell
|
||||
vim /etc/profile
|
||||
|
||||
export JAVA_HOME=/usr/jdk1.8.0_301
|
||||
export PATH=$PATH:$JAVA_HOME/bin
|
||||
|
||||
```
|
||||
|
||||
:wq保存退出
|
||||
|
||||
重新加载配置文件
|
||||
|
||||
```shell
|
||||
source /etc/profile
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## CentOS7防火墙
|
||||
|
||||
放行特定端口
|
||||
|
||||
```shell
|
||||
firewall-cmd --add-port=6379/tcp --permanent
|
||||
```
|
||||
|
||||
重新加载防火墙
|
||||
|
||||
```shell
|
||||
firewall-cmd --reload
|
||||
```
|
||||
|
||||
查看防火墙开放的端口
|
||||
|
||||
```shell
|
||||
firewall-cmd --list-all
|
||||
```
|
||||
|
||||
指定作用域开发防火墙端口
|
||||
|
||||
```shell
|
||||
firewall-cmd --zone=public --add-port=3306/tcp --permanent
|
||||
# -zone 作用域
|
||||
# -add-port 添加端口,格式为端口/协议
|
||||
# -permanent 永久生效,没有此参数重启后失效
|
||||
|
||||
```
|
||||
|
||||
## 分配Swap
|
||||
|
||||
查看分区大小
|
||||
|
||||
```shell
|
||||
free -h
|
||||
```
|
||||
|
||||
使用dd命令创建一个swap分区
|
||||
|
||||
```shell
|
||||
dd if=/dev/zero of=/home/swap bs=1024 count=4194304
|
||||
```
|
||||
|
||||
count的值是:size(多少M)* 1024
|
||||
|
||||
格式化swap分区
|
||||
|
||||
```shell
|
||||
mkswap /home/swap
|
||||
```
|
||||
|
||||
把格式化后的文件分区设置为swap分区
|
||||
|
||||
```shell
|
||||
swapon /home/swap
|
||||
```
|
||||
|
||||
swap分区自动挂载
|
||||
|
||||
```shell
|
||||
vim /etc/fstab
|
||||
# G 在文件末尾加上
|
||||
/home/swap swap swap default 0 0
|
||||
```
|
||||
|
||||
关闭Swap
|
||||
|
||||
```shell
|
||||
swapoff /home/swap
|
||||
```
|
||||
|
||||
### 修改swap使用率
|
||||
|
||||
swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。两个极端
|
||||
|
||||
查看swappiness
|
||||
|
||||
```shell
|
||||
cat /proc/sys/vm/swappiness
|
||||
```
|
||||
|
||||
修改swappiness值为60
|
||||
|
||||
```shell
|
||||
sysctl vm.swappiness=60
|
||||
```
|
||||
|
||||
但是这只是临时性的修改,还要做一步
|
||||
|
||||
```shell
|
||||
vim /etc/sysctl.conf
|
||||
# 编辑这行
|
||||
vm.swappiness=60
|
||||
```
|
||||
|
||||
## Windows Linux子系统
|
||||
|
||||
### WSL2
|
||||
|
||||
打开 Windows Terminal PowerShell
|
||||
|
||||
#### 安装
|
||||
|
||||
```powershell
|
||||
wsl --install
|
||||
```
|
||||
|
||||
微软官方文档 [安装 WSL | Microsoft Docs](https://docs.microsoft.com/zh-cn/windows/wsl/install)
|
||||
|
||||
默认安装Ubuntu 20.04 LTS版
|
||||
|
||||
更改默认安装的Linux发行版
|
||||
|
||||
```powershell
|
||||
wsl --install -d <Distribution Name>
|
||||
```
|
||||
|
||||
/mnt目录下是Windows系统的挂载盘,可直接访问Windows磁盘文件
|
||||
|
||||
#### 通过FinalShell连接WSL2
|
||||
|
||||
1. 需要先删除ssh,再安装ssh
|
||||
|
||||
```shell
|
||||
apt-get remove --purge openssh-server #先删ssh
|
||||
apt-get install openssh-server #再安装ssh
|
||||
rm /etc/ssh/ssh_config
|
||||
service ssh --full-restart #重启ssh服务
|
||||
```
|
||||
|
||||
2. 修改配置文件
|
||||
|
||||
```shell
|
||||
vim /etc/ssh/sshd_config
|
||||
|
||||
Port 6666 # 指定连接端口 6666
|
||||
ListenAddress 0.0.0.0 # 指定连接的IP
|
||||
PasswordAuthentication yes # 开启密码认证
|
||||
PermitRootLogin yes # 开启root用户登录
|
||||
|
||||
```
|
||||
|
||||
3. 重启ssh(每次重启wsl都要执行该语句)
|
||||
|
||||
```shell
|
||||
service ssh --full-restart
|
||||
```
|
||||
|
||||
4. 重新生成host key
|
||||
|
||||
```shell
|
||||
dpkg-reconfigure openssh-serve
|
||||
```
|
||||
|
||||
FinalShell就可以连接WSL2了
|
||||
|
||||
## 安装Nginx
|
||||
|
||||
```shell
|
||||
tar -zxvf nginx-1.21.4.tar.gz
|
||||
cd nginx-1.21.4/
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
```
|
||||
450
source/_posts/Oracle.md
Normal file
450
source/_posts/Oracle.md
Normal file
@ -0,0 +1,450 @@
|
||||
---
|
||||
title: Oracle
|
||||
date: 2021-03-23 10:30:31
|
||||
author: 文永达
|
||||
---
|
||||
# Oracle
|
||||
|
||||
## 1.1 安装Oracle 19c
|
||||
|
||||
### 1.1.1 Linux下安装
|
||||
|
||||
#### 1.1.1.1 rpm方式 `没成功`
|
||||
|
||||
从Oracle官网下载安装包 Linux x86-64 RPM
|
||||
|
||||
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
|
||||
|
||||
安装帮助文档
|
||||
|
||||
https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/preface.html#GUID-071A6B76-11E3-4421-963E-41DA6F2EF07A
|
||||
|
||||
下载地址
|
||||
|
||||
https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.html,浏览器搜索-19c
|
||||
|
||||
安装,首先执行
|
||||
|
||||
```shell
|
||||
yum install oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm
|
||||
```
|
||||
|
||||
会提示缺少依赖
|
||||
|
||||
可以去RPM源网站下载
|
||||
|
||||
http://www.rpmfind.net/linux/rpm2html/search.php?query=compat-libcap1(x86-64)
|
||||
|
||||
安装
|
||||
|
||||
```shell
|
||||
rpm -ivh compat-libcap1-1.10-7.el7.x86_64.rpm
|
||||
```
|
||||
|
||||
再次执行
|
||||
|
||||
```shell
|
||||
yum install oracle-database-preinstall-19c-1.0-3.el7.x86_64.rpm
|
||||
```
|
||||
|
||||
安装数据库
|
||||
|
||||
```shell
|
||||
yum install oracle-database-ee-19c-1.0-1.x86_64.rpm
|
||||
```
|
||||
|
||||
如果发生错误
|
||||
|
||||
```shell
|
||||
Exception java.lang.UnsatisfiedLinkError: /opt/oracle/product/19c/dbhome_1/oui/lib/linux64/liboraInstaller.so: libnsl.so.1: cannot open shared object file: No such file or directory occurred..
|
||||
java.lang.UnsatisfiedLinkError: /opt/oracle/product/19c/dbhome_1/oui/lib/linux64/liboraInstaller.so: libnsl.so.1: cannot open shared object file: No such file or directory
|
||||
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
|
||||
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
|
||||
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
|
||||
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
|
||||
at java.lang.System.loadLibrary(System.java:1122)
|
||||
at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.loadNativeLib(OiipuUnixOps.java:388)
|
||||
at oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps.<clinit>(OiipuUnixOps.java:130)
|
||||
at oracle.sysman.oii.oiip.oiipg.OiipgEnvironment.getEnv(OiipgEnvironment.java:201)
|
||||
at oracle.sysman.oii.oiix.OiixIniPair.instantiateEnvVars(OiixIniPair.java:299)
|
||||
at oracle.sysman.oii.oiix.OiixIniPair.updateValue(OiixIniPair.java:230)
|
||||
at oracle.sysman.oii.oiix.OiixIniPair.<init>(OiixIniPair.java:148)
|
||||
at oracle.sysman.oii.oiix.OiixIniFile.readFile(OiixIniFile.java:809)
|
||||
at oracle.sysman.oii.oiix.OiixIniFile.readIniFile(OiixIniFile.java:978)
|
||||
at oracle.sysman.oii.oiix.OiixIniFile.getProfileString(OiixIniFile.java:385)
|
||||
at oracle.sysman.oii.oiix.OiixOraparam.getOraparamProfileString(OiixOraparam.java:338)
|
||||
at oracle.sysman.oii.oiix.OiixOraparam.getOraparamProfileString(OiixOraparam.java:296)
|
||||
at oracle.sysman.oii.oiix.OiixOraparam.usePrereqChecker(OiixOraparam.java:416)
|
||||
at oracle.sysman.oii.oiic.OiicSessionContext.setVariables(OiicSessionContext.java:1325)
|
||||
at oracle.sysman.oii.oiic.OiicBaseInventoryApp.execute(OiicBaseInventoryApp.java:771)
|
||||
at oracle.sysman.oii.oiic.OiicBaseInventoryApp.main_helper(OiicBaseInventoryApp.java:690)
|
||||
at oracle.sysman.oii.oiic.OiicDetachHome.main(OiicDetachHome.java:420)
|
||||
'DetachHome' failed.
|
||||
Exception in thread "main" java.lang.NullPointerException
|
||||
at oracle.sysman.oii.oiic.OiicBaseInventoryApp.main_helper(OiicBaseInventoryApp.java:706)
|
||||
at oracle.sysman.oii.oiic.OiicDetachHome.main(OiicDetachHome.java:420)
|
||||
Exception java.lang.NoClassDefFoundError: Could not initialize class oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps occurred..
|
||||
java.lang.NoClassDefFoundError: Could not initialize class oracle.sysman.oii.oiip.osd.unix.OiipuUnixOps
|
||||
at oracle.sysman.oii.oiip.oiipg.OiipgEnvironment.getEnv(OiipgEnvironment.java:201)
|
||||
at oracle.sysman.oii.oiix.OiixIniPair.instantiateEnvVars(OiixIniPair.java:299)
|
||||
at oracle.sysman.oii.oiix.OiixIniPair.updateValue(OiixIniPair.java:230)
|
||||
at oracle.sysman.oii.oiix.OiixIniPair.<init>(OiixIniPair.java:148)
|
||||
at oracle.sysman.oii.oiix.OiixIniFile.readFile(OiixIniFile.java:809)
|
||||
at oracle.sysman.oii.oiix.OiixIniFile.readIniFile(OiixIniFile.java:978)
|
||||
at oracle.sysman.oii.oiix.OiixIniFile.getProfileString(OiixIniFile.java:385)
|
||||
at oracle.sysman.oii.oiix.OiixOraparam.getOraparamProfileString(OiixOraparam.java:338)
|
||||
at oracle.sysman.oii.oiix.OiixOraparam.getOraparamProfileString(OiixOraparam.java:296)
|
||||
at oracle.sysman.oii.oiix.OiixOraparam.usePrereqChecker(OiixOraparam.java:416)
|
||||
at oracle.sysman.oii.oiic.OiicSessionContext.setVariables(OiicSessionContext.java:1325)
|
||||
at oracle.sysman.oii.oiic.OiicBaseInventoryApp.execute(OiicBaseInventoryApp.java:771)
|
||||
at oracle.sysman.oii.oiic.OiicBaseInventoryApp.main_helper(OiicBaseInventoryApp.java:690)
|
||||
at oracle.sysman.oii.oiic.OiicAttachHome.main(OiicAttachHome.java:696)
|
||||
'AttachHome' failed.
|
||||
Exception in thread "main" java.lang.NullPointerException
|
||||
at oracle.sysman.oii.oiic.OiicBaseInventoryApp.main_helper(OiicBaseInventoryApp.java:706)
|
||||
at oracle.sysman.oii.oiic.OiicAttachHome.main(OiicAttachHome.java:696)
|
||||
[SEVERE] An error occurred while registering the Oracle home. Verify logs in /var/log/oracle-database-ee-19c/results/oraInstall.log and /opt/oracle/oraInventory for more details and try again.
|
||||
warning: %post(oracle-database-ee-19c-1.0-1.x86_64) scriptlet failed, exit status 1
|
||||
```
|
||||
|
||||
解决办法
|
||||
|
||||
```shell
|
||||
yum -y install /lib64/libnsl.so.1
|
||||
```
|
||||
|
||||
再次执行安装
|
||||
|
||||
```shell
|
||||
# 需要先删除 /opt/oracle/*
|
||||
rm -rf /opt/oracle/*
|
||||
# 再次执行安装 需要加上 --force
|
||||
rpm -ivh oracle-database-ee-19c-1.0-1.x86_64.rpm --force
|
||||
```
|
||||
|
||||
配置数据库
|
||||
|
||||
```shell
|
||||
/etc/init.d/oracledb_ORCLCDB-19c configure
|
||||
```
|
||||
|
||||
过程较长,等待即可
|
||||
|
||||
可能会JDK报错
|
||||
|
||||
```shell
|
||||
yum install libnsl
|
||||
```
|
||||
|
||||
配置号后设置当前用户下的环境变量
|
||||
|
||||
```shell
|
||||
vi ~/.bashrc
|
||||
# 追加oracle环境变量信息
|
||||
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
|
||||
export ORACLE_SID=ORCLCDBexport
|
||||
PATH=$ORACLE_HOME/bin:$PATH
|
||||
|
||||
# 保存退出,执行
|
||||
source ~/.bashrc
|
||||
```
|
||||
验证安装是否正确
|
||||
|
||||
```shell
|
||||
su oracle
|
||||
|
||||
sqlplus / as sysdba
|
||||
|
||||
# 提示
|
||||
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Oct 17 12:25:27 2022
|
||||
Version 19.3.0.0.0
|
||||
|
||||
Copyright (c) 1982, 2019, Oracle. All rights reserved.
|
||||
|
||||
Connected to an idle instance.
|
||||
```
|
||||
|
||||
启动监听
|
||||
|
||||
|
||||

|
||||
|
||||
#### 1.1.1.2 Docker方式
|
||||
|
||||
安装Docker
|
||||
|
||||
```shell
|
||||
sudo wget -qO- https://get.docker.com/ | bash
|
||||
docker --version
|
||||
systemctl start docker
|
||||
systemctl status docker
|
||||
systemctl enable docker
|
||||
```
|
||||
|
||||
拉取镜像 `quay.io/maksymbilenko/oracle-12c`
|
||||
|
||||
```shell
|
||||
docker pull quay.io/maksymbilenko/oracle-12c
|
||||
```
|
||||
|
||||
如果有本地镜像则使用
|
||||
|
||||
```shell
|
||||
docker build -t quay.io/maksymbilenko/oracle-12c .
|
||||
```
|
||||
|
||||
构建容器
|
||||
|
||||
```shell
|
||||
# 首先创建本地目录
|
||||
mkdir /oracle/data
|
||||
# 授予权限
|
||||
chmod -R 777 /oracle/data
|
||||
docker run --name o12c -d -p 8080:8080 -p 1521:1521 -v /oracle/data:/u01/app/oracle quay.io/maksymbilenko/oracle-12c
|
||||
# 查看日志
|
||||
docker logs -f # 字符串ID
|
||||
```
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
安装完成
|
||||
|
||||
数据库连接信息
|
||||
|
||||
```yaml
|
||||
hostname: localhost
|
||||
port: 1521
|
||||
sid: xe
|
||||
service name: xe
|
||||
username: system
|
||||
password: oracle
|
||||
```
|
||||
|
||||
进入容器修改账号密码设置
|
||||
|
||||
```shell
|
||||
# 查看所有容器信息
|
||||
docker ps -a
|
||||
docker exec -it [containerID] /bin/bash
|
||||
# 切换成oracle用户
|
||||
su oracle
|
||||
# 进入sqlplus
|
||||
$ORACLE_HOME/bin/sqlplus / as sysdba
|
||||
|
||||
SQL*Plus: Release 12.1.0.2.0 Production on Sun Aug 1 03:15:37 2021
|
||||
|
||||
Copyright (c) 1982, 2014, Oracle. All rights reserved.
|
||||
|
||||
|
||||
Connected to:
|
||||
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
|
||||
|
||||
# 设置密码有效期为无限制
|
||||
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
|
||||
|
||||
Profile altered.
|
||||
|
||||
SQL> alter user SYSTEM account unlock;
|
||||
|
||||
User altered.
|
||||
|
||||
# 创建一个账号为act_test的用户密码设置为test
|
||||
SQL> create user act_test identified by test;
|
||||
|
||||
User created.
|
||||
# 为这个用户赋予管理员的权限
|
||||
SQL> grant dba to act_test;
|
||||
|
||||
Grant succeeded.
|
||||
|
||||
# ctrl + p + q 退出容器(注意不要exit退出,防止容器直接关闭了)
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 2.1 Oracle SQL Developer
|
||||
|
||||
### 2.1.1 设置自动提示
|
||||
|
||||
工具栏 -> 工具 -> 首选项 -> 代码编辑器 -> 完成设置
|
||||
|
||||

|
||||
|
||||
### 2.1.2 设置代码模板
|
||||
|
||||
工具栏 -> 工具 -> 首选项 -> 代码编辑器 -> 代码模板
|
||||
|
||||

|
||||
|
||||
### 2.1.3 同时打开多个表
|
||||
|
||||
工具栏 -> 工具 -> 首选项 -> 数据库 ->对象查看器
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
## 3.1 SQL PLUS
|
||||
|
||||
### 3.1.1 解决控制台输错命令删除
|
||||
|
||||
使用`Ctrl + backspace`代替`backspace`
|
||||
|
||||
### 3.1.2 登录
|
||||
|
||||
```shell
|
||||
# 以oracle账号登录
|
||||
su oracle
|
||||
$ORACLE_HOME/bin/sqlplus / as sysdba
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 4.1 语法
|
||||
|
||||
### 4.1.1 新建表空间
|
||||
|
||||
```sql
|
||||
CREATE TABLESPACE ACT_DEV
|
||||
DATAFILE
|
||||
'\oracle\data\oradata\xe\FILE_SPECIFICATION1.dbf' SIZE 52428800 AUTOEXTEND ON NEXT 52428800 MAXSIZE 2147483648
|
||||
|
||||
EXTENT MANAGEMENT LOCAL;
|
||||
```
|
||||
|
||||
### 4.1.2 解除占用
|
||||
|
||||
```sql
|
||||
select l.session_id,o.owner,o.object_name
|
||||
from v$locked_object l,dba_objects o
|
||||
where l.object_id=o.object_id;
|
||||
|
||||
SELECT sid, serial#, username, osuser FROM v$session where sid = sid;
|
||||
|
||||
alter system kill session 'sid,serial#';
|
||||
```
|
||||
|
||||
### 4.1.3 修改表
|
||||
|
||||
```sql
|
||||
-- 表重命名
|
||||
ALTER TABLE BOOK
|
||||
RENAME TO BIND_PHONE_NUMBER;
|
||||
-- 添加表字段Column
|
||||
ALTER TABLE BIND_PHONE_NUMBER
|
||||
ADD (USERNAME VARCHAR2(20) );
|
||||
-- 修改表字段Column名
|
||||
ALTER TABLE BIND_PHONE_NUMBER RENAME COLUMN NAME TO APPNAME;
|
||||
```
|
||||
|
||||
### 4.1.4 使用关键字做完表名,列名
|
||||
|
||||
使用""形式,如"INDEX"
|
||||
|
||||
## 5.1 内连接与外连接
|
||||
|
||||
### 5.1.1 内连接
|
||||
|
||||
合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不匹配的行
|
||||
|
||||
语法:
|
||||
|
||||
```sql
|
||||
SELECT 字段列表
|
||||
FROM A表 INNER JOIN B表
|
||||
ON 关联条件
|
||||
WHERE 条件;
|
||||
```
|
||||
|
||||
类似于:
|
||||
|
||||
```sql
|
||||
方式一
|
||||
SELECT e.employee_id, e.last_name, e.department_id,
|
||||
d.department_id, d.location_id
|
||||
FROM employees e JOIN departments d
|
||||
ON (e.department_id = d.department_id);
|
||||
|
||||
方式二:
|
||||
SELECT employee_id,department_name
|
||||
FROM employees e,departments d
|
||||
WHERE e.`department_id` = d.department_id;
|
||||
```
|
||||
|
||||
这种查询方式,它会把所有的符合where条件的字段查询出来。但是有这样一种情况,就是两张表的数据有的不存在某种关系。
|
||||
|
||||
缺点:如果我们想要把不满足条件的数据也查询出来,内连接就做不到。
|
||||
|
||||
于是引入外连接。
|
||||
|
||||
### 5.1.2 外连接
|
||||
|
||||
查询多表时一般要求中出现:查询所有的数据时,就一定会用到外连接。
|
||||
|
||||
两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行,这种连接称为左(或右)外连接。没有匹配的行时,结果表中相应的列为空(NULL)。
|
||||
|
||||
#### 5.1.2.1 满外连接
|
||||
|
||||
`FULL JOIN`
|
||||
|
||||
`LEFT JOIN UNION RIGHT JOIN`
|
||||
|
||||
#### 5.1.2.2 左外连接
|
||||
|
||||
语法:
|
||||
|
||||
```sql
|
||||
SELECT 字段列表
|
||||
FROM A表 LEFT JOIN B表
|
||||
ON 关联条件
|
||||
WHERE 条件;
|
||||
```
|
||||
|
||||
类似于:
|
||||
|
||||
```sql
|
||||
SELECT e.last_name, e.department_id, d.department_name
|
||||
FROM employees e
|
||||
LEFT OUTER JOIN departments d
|
||||
ON (e.department_id = d.department_id) ;
|
||||
```
|
||||
|
||||
`employees`表中的数据会全部显示出来
|
||||
|
||||
#### 5.1.2.3 右外连接
|
||||
|
||||
语法:
|
||||
|
||||
```sql
|
||||
SELECT 字段列表
|
||||
FROM A表 RIGHT JOIN B表
|
||||
ON 关联条件
|
||||
WHERE 条件;
|
||||
```
|
||||
|
||||
类似于:
|
||||
|
||||
```sql
|
||||
SELECT e.last_name, e.department_id, d.department_name
|
||||
FROM employees e
|
||||
RIGHT OUTER JOIN departments d
|
||||
ON (e.department_id = d.department_id) ;
|
||||
```
|
||||
|
||||
`departments`表中的数据会全部显示出来
|
||||
|
||||
### 5.1.3 UNION的使用
|
||||
|
||||
·语法:
|
||||
|
||||
```sql
|
||||
SELECT column,... FROM table1
|
||||
UNION [ALL]
|
||||
SELECT column,... FROM table2
|
||||
```
|
||||
|
||||
UNION 操作符返回两个查询的结果集的并集,去除重复记录。
|
||||
|
||||
UNION ALL操作符返回两个查询的结果集的并集。对于两个结果集的重复部分,不去重。
|
||||
64
source/_posts/Typora.md
Normal file
64
source/_posts/Typora.md
Normal file
@ -0,0 +1,64 @@
|
||||
---
|
||||
title: Typora
|
||||
date: 2022-11-18 14:48:31
|
||||
author: 文永达
|
||||
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/B951AE18-D431-417F-B3FE-A382403FF21B.jpeg
|
||||
---
|
||||
|
||||
# Typora
|
||||
|
||||
## 设置引用图片存储路径
|
||||
|
||||

|
||||
|
||||
## Typora添加右键新建Markdown文件
|
||||
|
||||
### 步骤
|
||||
|
||||
新建一个txt文本文件,写入:
|
||||
|
||||
```shell
|
||||
Windows Registry Editor Version 5.00
|
||||
|
||||
[HKEY_CLASSES_ROOT\.md]
|
||||
@="Typora.md"
|
||||
"Content Type"="text/markdown"
|
||||
"PerceivedType"="text"
|
||||
|
||||
[HKEY_CLASSES_ROOT\.md\ShellNew]
|
||||
"NullFile"=""
|
||||
|
||||
|
||||
```
|
||||
|
||||
然后修改.txt后缀为.reg的注册表文件
|
||||
|
||||
然后双击运行
|
||||
|
||||
## 几点说明
|
||||
|
||||
这个方法要先安装`Typora`。如果不安装`Typora`,只是导入上述注册表,在很久以前是可以生效的,但自从某次`Windows`更新之后就失效了,之后的 Windows 要求`[HKEY__ROOT\.md]`项的`@ 值 xxx`必须对应于注册表项`[HKEY_CLASSES_ROOT\xxx]`,这里填写`Typora.md`,是因为`Typora `已经为我们生成了`[HKEY_CLASSES_ROOT\Typora.md]`,可以不用再重入导入,这个项的`@ 值`代表右键新建该类型的名称显示。如果是自定义其他的类型,则必须导入一遍,比如要添加`.py`类型,一个最简的注册表如下:
|
||||
|
||||
```shell
|
||||
Windows Registry Editor Version 5.00
|
||||
|
||||
[HKEY_CLASSES_ROOT\.py]
|
||||
@="PythonFile"
|
||||
|
||||
[HKEY_CLASSES_ROOT\.py\ShellNew]
|
||||
"NullFile"=""
|
||||
|
||||
[HKEY_CLASSES_ROOT\PythonFile]
|
||||
@="Python 脚本"
|
||||
|
||||
```
|
||||
|
||||
## 可能遇到的问题
|
||||
|
||||
右键新建markdown文件以后,可能会发现文件有几十MB那么大。
|
||||
|
||||
解决方法:`win+R`打开“运行”输入`regedit`打开注册表,打开路径`\HKEY_CLASSES_ROOT\.md\ShellNew`
|
||||
|
||||
删除多余的文件(尤其是有一个什么Markdown File),只保留如下的两项。然后关闭注册表,即可修复bug
|
||||
|
||||

|
||||
1480
source/_posts/Vue.md
Normal file
1480
source/_posts/Vue.md
Normal file
File diff suppressed because it is too large
Load Diff
36
source/_posts/Winform.md
Normal file
36
source/_posts/Winform.md
Normal file
@ -0,0 +1,36 @@
|
||||
---
|
||||
title: Winform
|
||||
date: 2022-11-18 14:48:31
|
||||
author: 文永达
|
||||
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/B951AE18-D431-417F-B3FE-A382403FF21B.jpeg
|
||||
---
|
||||
|
||||
# Winform
|
||||
|
||||
## 1 .Net Framework
|
||||
|
||||
### 1.1 控件属性
|
||||
|
||||
#### 1.1.1 Name
|
||||
|
||||
表示控件名
|
||||
|
||||
```c#
|
||||
this.button1.Name = "button1";
|
||||
```
|
||||
|
||||
#### 1.1.2 Text
|
||||
|
||||
表示控件文本显示
|
||||
|
||||
```c#
|
||||
this.button.Text = "button1";
|
||||
```
|
||||
|
||||
### 1.2 控件事件
|
||||
|
||||
#### 1.2.1 button按钮
|
||||
|
||||
##### 1.2.1.1 click
|
||||
|
||||
|
||||
BIN
source/_posts/image/Oracle/image-20221017111632399.png
Normal file
BIN
source/_posts/image/Oracle/image-20221017111632399.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
BIN
source/_posts/image/Oracle/image-20221017112825105.png
Normal file
BIN
source/_posts/image/Oracle/image-20221017112825105.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
BIN
source/_posts/image/Oracle/image-20221017123327552.png
Normal file
BIN
source/_posts/image/Oracle/image-20221017123327552.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
BIN
source/_posts/image/Oracle/image-20221017145702216.png
Normal file
BIN
source/_posts/image/Oracle/image-20221017145702216.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
BIN
source/_posts/image/Oracle/image-20221020141231505.png
Normal file
BIN
source/_posts/image/Oracle/image-20221020141231505.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
BIN
source/_posts/image/Typora/image-20221118150139161.png
Normal file
BIN
source/_posts/image/Typora/image-20221118150139161.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
0
themes/.gitkeep
Normal file
0
themes/.gitkeep
Normal file
Loading…
x
Reference in New Issue
Block a user