IDEA
发表于|更新于|软件
|总字数:321|阅读时长:1分钟|浏览量:
教程
IDEA查看方法被调用

修改光标所在行背景颜色

断点判断条件
在断点上点右键,正常的写判断代码就行

插件
Rabinbow Brackets
作者:Zhihao Zhang
使用方法
Command+右键,高亮选中部分
Alt+右键,高亮选中部分,其余的代码变暗
CommitMessage
作者:郭翰林
使用方法,提交的时候,点击✈️的图标
Codeium
作者:Codeium
写代码的时候会有自动提示,按tab确定使用AI生成的代码
Key Promoter X
Translation
作者:Yii.Guxing
选中要翻译的内容,右键选择翻译
IDEA 2025恢复旧版Commit弹窗
从IntelliJ IDEA 2025版本开始,JetBrains默认启用了非模态提交界面(Non-modal Commit),提交操作会显示在Commit工具窗口里,不再是以前独立弹出的Commit窗口.
如果更习惯旧版弹窗式Commit窗口,可以通过官方插件恢复.
安装插件
- 打开
Settings,macOS是Preferences - 进入
Plugins - 搜索
Modal Commit - 安装JetBrains官方插件
Modal Commit Interface - 重启IDEA
开启旧版提交窗口
- 打开
Settings - 进入
Advanced Settings - 搜索
commit - 在
Version Control区域勾选Use modal commit interface for Git and Mercurial - 点击
Apply或者OK保存
配置完成后,Git和Mercurial提交时会恢复成旧版独立弹窗式Commit对话框.
相关推荐
2026-05-26
macOS IDEA部署Docker到本机Docker Desktop
说明在macOS上使用IDEA开发项目时,可以直接通过IDEA的Run配置,把项目打包成Docker镜像,然后部署到本机的Docker Desktop里运行. 这个方式适合本地调试Docker环境,不用每次手动执行docker build和docker run. 前提条件 macOS已经安装并启动Docker Desktop IDEA已经安装Docker插件 项目里有可用的Dockerfile Java项目已经可以正常打包,比如Maven或Gradle打包成功 整体流程IDEA部署服务到本机Docker Desktop,本质上就是把手动命令配置到IDEA的Run里. 手动执行时一般是这样: 123mvn clean package -DskipTestsdocker build -t my-app:latest .docker run --name my-app -p 8080:8080 my-app:latest 配置到IDEA之后,点击Run就可以自动完成打包,构建镜像,启动容器. 配置Docker连接打开IDEA设置: Settings | Build, Execution, Deployment | Docker 点击+,选择Docker for Mac. 然后点击Test Connection,看到连接成功就说明IDEA已经能连接到本机Docker Desktop. 准备DockerfileSpring Boot项目可以在项目根目录准备一个简单的Dockerfile. 123456789FROM eclipse-temurin:17-jreWORKDIR /appCOPY target/*.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "app.jar"] 如果项目端口不是8080,这里的EXPOSE和后面的端口映射都要换成实际端口. 配置Run打开: Run | Edit Configurations 点击+,这里常用有两个选择: Docker | Dockerfile适合项目里有Dockerfile,需要IDEA先构建镜像,再运行容器的场景. 它会执行类似下面的流程: 12docker build -t my-app:latest .docker run --name my-app -p 8080:8080 my-app:latest 也就是说,代码改了以后,可以让IDEA重新build镜像,再启动容器. Spring Boot项目,前端项目,或者自己写了Dockerfile的项目,一般选这个. Docker | Docker Image适合镜像已经存在,只需要运行这个镜像的场景. 它会执行类似下面的流程: 1docker run --name mysql-test -p 3306:3306 mysql:8 比如运行mysql,redis,nginx,nacos这类现成镜像,或者已经手动build好了镜像,只想让IDEA帮忙启动容器,就选这个. 简单记: 12有Dockerfile,需要构建镜像 -> Docker | Dockerfile已有镜像,只想运行容器 -> Docker | Docker Image Dockerfile配置项如果选择Docker | Dockerfile,关键配置如下: 配置项 说明 Server 选择前面配置好的Docker for Mac Dockerfile 选择项目里的Dockerfile Context folder 一般选择项目根目录 Image tag 镜像名称,比如my-app:latest Container name 容器名称,比如my-app Run built image 勾选,表示构建完成后直接运行镜像 Bind ports 端口映射,比如本机8080映射容器8080 Environment variables 按需配置环境变量 常用配置可以这样填: 123456Server: Docker for MacDockerfile: ./DockerfileContext folder: 项目根目录Image tag: my-app:latestContainer name: my-appBind ports: 8080:8080 Before launch如果是Spring Boot项目,建议在Before launch里加打包任务. Maven项目可以配置: 1clean package -DskipTests Gradle项目可以配置: 1bootJar 这样点击Run时,IDEA会先打包项目,再根据Dockerfile构建镜像并启动容器. 启动后验证启动成功后,可以在Docker Desktop里看到容器. 也可以在终端检查: 1docker ps 如果服务端口是8080,可以访问: 1http://localhost:8080 如果需要看日志,可以在IDEA的Run窗口查看,也可以执行: 1docker logs -f my-app 常见问题端口被占用修改Bind ports里的本机端口. 比如容器内部还是8080,本机可以改成18080. 118080 -> 8080 容器需要访问宿主机服务macOS的Docker Desktop里,容器访问宿主机可以使用: 1host.docker.internal 比如容器里的程序要连接本机MySQL,可以把数据库地址配置成: 1host.docker.internal:3306 挂载本机目录失败检查Docker Desktop是否允许访问这个目录. 可以在Docker Desktop里查看: Settings | Resources | File Sharing 总结本地项目通过IDEA部署到macOS的Docker Desktop,核心就是两步: 在IDEA里配置Docker for Mac 在Run配置里选择Docker | Dockerfile 如果只是运行已有镜像,才选择Docker | Docker Image.

2025-05-29
Dapp
HelloWorld合约Remix编辑器 12345678// SPDX-License-Identifier: MITpragma solidity ^0.8.13;contract helloworld{ function helloWorld() public pure returns (string memory) { return "Hello, World!"; }} 发行代币在闲鱼,淘宝上买些测试币,也可以通过水龙头获取(只是有点要求和门槛,不如直接买),这里我买了两笔 新建合约文件 1234567891011// SPDX-License-Identifier: MITpragma solidity ^0.8.13;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";contract MyError20Token is ERC20{ constructor(string memory _name,string memory _symbol) ERC20(_name,_symbol){ _mint(msg.sender,10000 * 10 ** 18); }}

2022-11-19
Nginx
Docker安装 Nginx123456789101112131415# 简单的docker run --name nginx-test \ -p 8080:80 \ -d \ nginx# 正式的docker run -d \ -p 443:443 \ -p 80:80 \ --name nginx \ -v /home/nginx/www:/usr/share/nginx/html \ -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /home/nginx/logs:/var/log/nginx \ nginx Ubuntu安装Nginx1234567891011121314151617181920212223242526272829# Ubuntu安装依赖sudo apt-get install libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev# Ubuntu 如果还缺少依赖apt-get install build-essential# Centos安装依赖yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel# 进入到解压的文件cd ./nginx-1.16./configure --prefix=/url/local/nginx#或者./configure# 如果需要指定模块./configure --add-module=../nginx-rtmp-module#然后目录下就多了一个nginx文件make && make install#启动cd ../nginx/sbin./nginx# 配置文件目录所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下程序文件在/usr/sbin/nginx日志放在了/var/log/nginx中并已经在/etc/init.d/下创建了启动脚本nginx默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本 默认的虚拟主机的目录设置在了/var/www, 请参考/etc/nginx/sites-available里的配置) Nginx 常用命令12345678910111213141516171819202122# 启动nginxstart nginx# 或者nginx# 修改配置后重新加载生效nginx -s reload# 重新打开日志文件nginx -s reopen# 测试nginx配置文件是否正确nginx -t -c /path/to/nginx.conf# 快速停止nginxnginx -s stop# 完整有序的停止nginxnginx -s quit# 指定配置文件启动nginx -c /home/anthony/nginx.conf Nginx 配置模板123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133#user nobody;# 设置 <= cpu核数,一般设置成cpu*核数worker_processes 1;# 指定错误日志文件存放路径,错误日志级别可选项为【debug|info|notice|warn|error|crit】error_log logs/warn.log warn;# 指定pid存放路径 nginx启动后的进程IDpid logs/nginx.pid;# 工作模式及连接数上限#user nobody;# 设置 <= cpu核数worker_processes 1;# 指定错误日志文件存放路径,错误日志级别可选项为【debug|info|notice|warn|error|crit】# error_log logs/error.log error;# 指定pid存放路径 nginx启动后的进程ID# pid logs/nginx.pid;# 工作模式及连接数上限events { # 使用网络I/O模型,Linux系统推荐使用epoll模型,FreeBSD系统推荐使用kqueue;window下不指定 # user epoll; # 允许的最大连接数 worker_connections 1024;}# 设定http服务器,利用他的反向代理功能提供负载均衡支持http { # 设定mime类型 include mime.types; default_type application/octet-stream; # 设定日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; client_header_buffer_size 1k; large_client_header_buffers 4 4k; # access_log logs/info.log main; # # 设定access log send_timeout 3m; sendfile on; tcp_nopush on; tcp_nodelay on; # 这个参数表示http连接超时时间,默认是65s。要是上传文件比较大,在规定时间内没有上传完成,就会自动断开连接!所以适当调大这个时间。 keepalive_timeout 0; keepalive_timeout 5000; # 开启gzip模块 gzip on; gzip_min_length 1100; gzip_buffers 4 8k; gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json; output_buffers 1 32k; postpone_output 1460; server_names_hash_bucket_size 128; client_header_timeout 3m; #调大点 client_body_timeout 3m; #调大点 client_max_body_size 200m; #主要是这个参数,限制了上传文件大大小 #client_body_buffer_size 1024; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; gzip_http_version 1.1; gzip_comp_level 2; gzip_vary on; #设定虚拟主机 server { listen 80; server_name ap.mmzcg.com; # 设置url编码格式,解决参数中文乱码问题 charset UTF-8; # 设定本虚拟主机的访问日志 # access_log logs/host.access.log main; # 对 "/" 启用负载均衡 location / { # 设定代理访问地址 proxy_pass http://127.0.0.1:30000/; # 配置SSL证书 # ssl_certificate /etc/nginx/conf.d/ssl/STAR.huihuang200.com.crt; # ssl_certificate_key /etc/nginx/conf.d/ssl/STAR.huihuang200.com.key; # ssl_session_timeout 5m; # ssl_session_cache shared:SSL:10m; # ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3; # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; # ssl_prefer_server_ciphers on; # ssl_verify_client off; # 解决ajax跨域问题 add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; # 保留用户真实信息 proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 允许客户端请求的最大单个文件字节数 client_max_body_size 100m; # 缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户 client_body_buffer_size 1280k; # nginx跟后端服务器连接超时时间,发起握手等候响应超时时间(代理连接超时) proxy_connect_timeout 5; # 连接成功后 等待后端服务器响应时间 其实已进入后端的排队之中等候处理 proxy_read_timeout 60; # 代理请求缓存区 这个缓存区间会保存用户的头信息一共Nginx进行规则处理 一般只要能保存下头信息即可 proxy_send_timeout 30; # 同上 告诉Nginx保存单个用的几个Buffer最大用多大空间 proxy_buffer_size 256k; proxy_buffers 4 256k; # 如果系统很忙的时候可以申请国内各大的proxy_buffers 官方推荐 *2 proxy_busy_buffers_size 256k; # proxy 缓存临时文件的大小 proxy_temp_file_write_size 256k; proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; proxy_max_temp_file_size 128m; } }} Nginx日志管理123456789101112131415161718#access_log logs/access.log main;# nginx的默认配置,如果在安装的nginx里没有看到这个,也没有关系#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';server { listen 80; location / { root my; index index.html } #配置日志, main 就是log_format 后面的名字 # 该server的访问日志的文件是logs/access.log,使用的是main格式 access_log logs/access.log main;} 推荐的配置 1234log_format main '$remote_addr - $remote_user [$time_local] "$request" $http_host ' '$status $request_length $body_bytes_sent "$http_referer" ' '"$http_user_agent" $request_time'; remote_addr : 客户端地址 remote_user : 客户端用户名 time_local : 服务器时间 request : 请求内容,包括方法名,地址,和http协议 http_host : 用户请求是使用的http地址 status : 返回的http 状态码 request_length : 请求大小 body_bytes_sent : 返回的大小 http_referer : 来源页 http_user_agent : 客户端名称 request_time : 整体请求延时 日志书写规则 一行要用单引号包起来,一行一个,换行也不需要什么连接的符号 location匹配= 精准匹配不写 一般匹配~ 正则匹配location proxy_pass 后面的url 加与不加/的区别 server_name匹配通配符匹配12345678910111213server { listen 80; server_name *.example.org; ...`}server { listen 80; server_name mail.*; ...} 通配符格式中的*号只能在域名的开头或结尾,并且*号两侧只能是.这些无效: www.*.example.org w*.example.org *号可以匹配多个域名部分,*.example.org可以匹配到: www.example.org www.sub.example.org .example.org是比较特殊的通配符格式, 可以同时匹配 example.org *.example.org。 正则匹配⁉️ 不适用我自己 精确匹配12345server { listen 80; server_name example.org www.example.org; ...} 特殊匹配格式 server_name ""; 匹配Host请求头不存在的情况。 server_name "-"; 无任何意义。 server_name "*"; 它被错误地解释为万能的名称。 它从不用作通用或通配符服务器名称。相反,它提供了server_name_in_redirect指令现在提供的功能。 现在不建议使用特殊名称“ *”,而应使用server_name_in_redirect指令。 匹配顺序 精确的名字 以*号开头的最长通配符名称,例如 *.example.org 以号结尾的最长通配符名称,例如 mail. 第一个匹配的正则表达式(在配置文件中出现的顺序) 优化 尽量使用精确匹配; 当定义大量server_name时或特别长的server_name时,需要在http级别调整server_names_hash_max_size和server_names_hash_bucket_size,否则nginx将无法启动。 Nginx报错1.服务器重启之后,执行 nginx -t 是OK的,然而在执行 nginx -s reload 的时候报错nginx: [error] invalid PID number "" in "/run/nginx.pid" 1234# 解决办法:nginx -c /etc/nginx/nginx.confnginx.conf文件的路径可以从nginx -t的返回中找到。nginx -s reload 2.a duplicate default server for 0.0.0.0:80nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/gitlab:10 123删除/etc/nginx/sites-available/default文件,重新启动服务即可nginx -t :检查配置文件是否出错 3.403123打开nginx.conf例子:vim /etc/nginx/nginx.conf把 user 用户名 改为 user root 或 其它有高权限的用户名称即可 Nginx应用Acme.sh的使用123456789101112131415161718192021222324252627282930313233343536# 下载软件curl https://get.acme.sh | sh# 设置别名 alias:alias acme.sh=~/.acme.sh/acme.sh # 切换 Let's Encrypt,默认使用 ZeroSSLacme.sh --set-default-ca --server letsencrypt# 执行,会打印配置域名的TXTacme.sh --issue -d baidu.me --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please# 配置好执行,再执行acme.sh --issue -d baidu.me --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --renew# --nginx 就是指定域名的配置文件Your cert is in: /root/.acme.sh/baidu.me_ecc/baidu.me.cerYour cert key is in: /root/.acme.sh/baidu.me_ecc/baidu.me.keyThe intermediate CA cert is in: /root/.acme.sh/baidu.me_ecc/ca.cerAnd the full chain certs is there: /root/.acme.sh/baidu.me_ecc/fullchain.cer# 查看申请的证书root@jenkins-jumpserver-nginx:~/.acme.sh# acme.sh --listMain_Domain KeyLength SAN_Domains CA Created Renewbaidu "ec-256" no LetsEncrypt.org 2023-09-17T11:52:22Z 2023-11-15T11:52:22Z# 续期证书# 证书默认是90天,如需强制更新证书,则执行以下命令acme.sh --renew -d abc.xyz --force# acme.sh会自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, # 如果快过期了, 需要更新, 则会自动更新证书,使用以下命令可查看定时任务crontab -l# 升级 acme.sh 到最新acme.sh --upgrade 12345# CFexport CF_Key="xxxxxxx" export CF_Email="CF账号的邮箱"acme.sh --issue -d "baidu.com" --dns dns_cf 建立软连接1sudo ln -s /etc/nginx/sites-available/domain-one.com /etc/nginx/sites-enabled/ 快速部署静态应用1234567891011121314# 首尾配置暂时忽略server { listen 8080; server_name localhost; location / { # 设置为个人项目的根目录路径 root /usr/local/var/www/my-project; index index.html index.htm; # vue项目404让前端路由处理 try_files $uri $uri/ /index.html; }}# 首尾配置暂时忽略 跨域1234567891011121314# 首尾配置暂时忽略server { listen 8080; server_name localhost; location / { # 跨域代理设置 proxy_pass http://www.proxy.com; # 要实现跨域的域名 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; }}# 首尾配置暂时忽略 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748# 第二种server { listen 80 default_server; server_name _ www.*; location / { index index.html; root /home/ubuntu/sabong-server-front; try_files $uri $uri/ /index.html; } location /api/ { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' *; add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,language,If-Modified-Since,Cache-Control,Content-Type'; add_header 'Access-Control-Allow-Credentials' true; add_header 'Access-Control-Max-Age' 86400; return 200; } add_header 'Access-Control-Allow-Origin' *; add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,language,If-Modified-Since,Cache-Control,Content-Type'; add_header 'Access-Control-Allow-Credentials' true; add_header 'Access-Control-Max-Age' 86400; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_pass http://172.31.41.206:9001/; } location /ws { proxy_pass http://172.31.41.206:9006/ws; proxy_http_version 1.1; proxy_read_timeout 360s; proxy_redirect off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }} Gzip压缩1234567http { # 配置gzip压缩 gzip on; gzip_min_length 1000; # 设定压缩的临界点 gzip_comp_level 3; # 压缩级别 gzip_types text/plain application/xml; # 要压缩的文件类别} 转发Vue项目1234567891011121314151617181920server { listen 80 default_server; server_name _; location / { index index.html; root /home/ubuntu/sabong-server-front; # nginx 转发给前端判断是不是404 try_files $uri $uri/ /index.html; } location /api/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_pass http://172.31.41.206:9001/; }} 转发Websocket123456789101112location /ws { proxy_pass http://172.31.41.206:9006/ws; proxy_http_version 1.1; proxy_read_timeout 360s; proxy_redirect off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;} 转发Redis只知道这么配置,不知道怎么给redis配置上域名 1234567891011121314151617181920212223242526272829303132user www-data;worker_processes auto;pid /run/nginx.pid;include /etc/nginx/modules-enabled/*.conf;events { worker_connections 768; # multi_accept on;}http{ # ...}# 要跟http统计,旧的版本没有steram模块,需要编译的时候加# 下载最新的版本肯定是有stream模块的stream { upstream redis { # myredis.godjfp.com 要被转发的Redis地址 # 6379:redis自己设置的端口是多少,就是多少 server myredis.godjfp.com:6379 max_fails=3 fail_timeout=30s; } server { # 公网访问的端口 listen 6379; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass redis; }} 图片上传post上传文件,出现413错误码 解决方案 1234#允许客户端请求的最大单文件字节数client_max_body_size 10m; #缓冲区代理缓冲用户端请求的最大字节数client_body_buffer_size 128k; HTTPS跳转1234567891011121314151617181920212223242526272829303132333435363738394041424344454647server { listen 80; listen 443 ssl; # 配置SSL证书 server_name abc.xyz; # 如果是http,就跳转https,注意nginx配置文件的不同,可能会出现重定向次数过多 if ($scheme = http) { return 301 https://$host$request_uri; } location / { proxy_pass http://192.168.0.2:8084/; }}# 比如配置强制跳转https,导致重定向次数过多server { listen 80; listen 443 ssl; # 配置SSL证书 server_name abc.xyz; # 如果是http,就跳转https,注意nginx配置文件的不同,可能会出现重定向次数过多 # 比如这个配置 return 301 https://$server_name$request_uri; # 比如这个配置 rewrite ^(.*)$ https://$host$1 permanent; location / { proxy_pass http://192.168.0.2:8084/; }}# 上面两种导致重定向的次数过多,需要修改配置文件,比如下面的配置文件就可以server { listen 80; server_name your_domain.com www.your_domain.com; return 301 https://$host$request_uri;}server { listen 443 ssl; server_name your_domain.com www.your_domain.com; ssl_certificate /path/to/your/certificate.crt; ssl_certificate_key /path/to/your/private_key.key;} 代理JumpServer1234567891011121314151617181920212223server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; location / { # 比如服务器里的JumpServer的端口已经设置成了8083 proxy_pass http://127.0.0.1:8083/; # 按照官方的配置,需要使用WebSocket,如果不配置的话,访问JumpServer网页会提示WebSocket报错 proxy_http_version 1.1; proxy_buffering off; proxy_request_buffering off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; }} 官方文档:使用Nginx代理JumpServer 代理Jenkins1234567891011121314151617181920212223242526272829303132333435363738server { listen 80 default_server; listen [::]:80 default_server; server_name _; location / { proxy_pass http://127.0.0.1:8083/; }}# 如果使用这样的配置,会有问题,比如配置的域名是baidu.com# 当访问baidu.com会正常访问,当登录之后,网页地址就变成http://127.0.0.1:8083/# 需要改成一下配置server { listen 80 default_server; listen [::]:80 default_server; server_name _; location / { proxy_pass http://127.0.0.1:8080/; # 下面这几个配置,访问Github会403 proxy_http_version 1.1; http2_push_preload on; # Enable http2 push proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Real-IP $remote_addr; # 这个配置又是正常的,要看看这个请求头是干嘛的了 proxy_set_header X-Rea $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; }} 12345678910111213141516171819202122232425262728293031server { listen 80; server_name _; location /api/ { client_max_body_size 100m; client_body_buffer_size 50m; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://172.31.2.105:8083/; } # 代理swagger稳定 openapi3的版本,springboot3的版本 location /v3/api-docs { client_max_body_size 100m; client_body_buffer_size 50m; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://172.31.2.105:8083/v3/api-docs; } location / { try_files $uri $uri/ /index.html; root /usr/share/nginx/html/manager/dist/; index index.html index.htm; } } SRSDocker方式运行1234docker run -p 1935:1935 -p 1985:1985 -p 8080:8080 ossrs/srs:latest# 测试# 访问:[http://192.168.254.180:8080/](http://192.168.254.180:8080/) SRS安装参考https://cloud.tencent.com/developer/article/1693951 Mac改成只播放系统声音Mac obs推流直播无声音解决方法_OBS教程_OBS Open Broadcaster Software OBS权限监听浏览器

2022-11-19
DataGrip
查看ddl和复制为insert语句 显示设置数据库颜色 显示树状结构 显示表的commnet 显示数据库DDL最后一次更新的时间 同步/比较两个表的数据结构用command 选中 两个想要比较的表,然后在其中一个表,选择 只显示不一样的字段 显示全部字段,绿色表示不一样 也可以比较两个库,还是刚才的方法,选中两个库,再比较 相当于Navicat的这个功能 复制功能标记1,选中表,Command + c 就是复制的表名 标记2,选中库,Command + c 就是复制的库名 右边的选项,让你复制出的SQL格式是什么样的,比如复制出insert的sql,或者update的sql,或者导出xml 或者,多条记录复制出一条sql语句,简单使用可以尝试 build-in: sql inserts sql updates scripted: sql-insert-multirow Sql-insert-statements 导出的功能使用mysqldump,导出整个库 Mac电脑需要安装,mysql-client 1234brew install mysql-client# 二进制目录(需要手动复制到上图的路径):/opt/homebrew/opt/mysql-client/bin/mysqldump 导入SQL要在库名上点右键 这个功能类似于

2022-11-19
Mac
快捷键 描述 命令 一个应用多个窗口 切换 command+` 录屏幕 shift+command+5 截图 shift+command+4 重装系统 先一直按住不要松手:Common+R,再按开机键;非苹果键盘,按住微软键+R 上一级目录 command+↑ 网站链接 一招解决 Chrome / Edge 浏览器卡顿变慢视频掉帧问题 - 让浏览器重回丝般流畅 AltTab iphone强制重启 浏览器返回手势 放歌有噪音通过【活动监视器】程序终止【coreaudiod】进程: 聚焦搜索】中输入【activity monitor】 在窗口右上角的搜索栏里输入【coreaudiod】 选择【coreaudiod】进程后,点击窗口上方工具栏中的【停止按钮】(按钮图标为X) 只有mac不能访问github 打开https://github.com.ipaddress.com/ 打开https://fastly.net.ipaddress.com/github.global.ssl.fastly.net#ipinfo sudo vim /etc/hosts 1234# 这个ip从第一步获取到的140.82.112.4 github.com# 这个ip从第二步获取到的199.232.69.194 github.global.ssl.fastly.net 刷新:sudo killall -HUP mDNSResponder;say DNS cache has been flushed 启动台有问号的图标,点击没反应123# 执行了之后,自己新建的文件夹会重置defaults write com.apple.dock ResetLaunchPad -bool TRUEkillall Dock Mac OS X 访问 Windows共享文件夹 在Mac中,点击 Finder菜单的“前往” > “前往服务器”。在弹出的连接服务器对话框中输入「smb://Windows主机的IP地址」,点击“连接”。 一般需要输入Windows对应用户的名称和密码,然后弹出如下窗口,选择对应的文件夹,点击“好”即可进行远程访问 只使用搜狗输入法系统偏好设置 >> 键盘 >> 快捷键 >> 反选切换输入法的快捷键 网络踪迹1traceroute ap-southeast-1.signin.aws.amazon.com 安装mysql客户端1234567brew install mysql-client# 安装目录在/opt/homebrew/Cellar/mysql-client/8.0.33_1 # mysqldump的目录/opt/homebrew/opt/mysql-client/bin/mysqldump Iterm2Iterm2多窗口同时输入命令只需要输入快捷键 ⌘(command) + ⇧(shift) + i 调出复制过的文本历史快捷键:“shift+cmd+h” 按键回放回放一段时间内的你敲过的所有字符。快捷键:“cmd+alt+b”,如图会弹出一个进度条,按左右键就可以实现按键回放了。 CheatSheet1234brew install cheatsheet# 使用随便在一个软件中 长按`command` Navicat破解gitee脚本 mac安装 protobuf123brew install protobufprotoc --version/opt/homebrew/share/emacs/site-lisp/protobuf 视频格式转换12345brew install ffmpeg# 使用这个命令ffmpeg -i input.mov -c copy output.mp4 # 不要用这个命令,网上说是速度很慢ffmpeg -i input.mov output.mp4

2022-11-19
Jenkins
Root用户权限启动Jenkins适用于Ubuntu环境下通过apt-get install -y jenkins命令在线安装的Jenkins 1.修改配置文件 123456789vim /etc/default/jenkins# 将下面两个参数修改为root# 修改前JENKINS_USER=$NAMEJENKINS_GROUP=$NAME# 修改后JENKINS_USER=rootJENKINS_GROUP=root 2.更改目录权限 不知道这步有没有起作用 12345cd /var/lib/chown -R root:root ./jenkins# 重启systemctl restart jenkins.service Jenkins使用教程配置JDKManage Jenkins –> Global Tool Configuration 自动安装 手动安装要注意,JAVA_HOME的输入框下面,不要有警告或者错误信息,否则就是路径不正确,取消勾选自动安装 配置Maven 安装Maven Integration 插件 通常自动安装maven就行了,如果手动安装,MAVEN_HOME 输入框下面,不要有警告或者错误信息,否则就是路径不正确 获取当前项目名称在脚本中输入 $JOB_NAME就能获取到了 卸载jenkins12345678910//服务sudo apt-get remove jenkins//安装包,注意这里如果不是ubuntu那就yumsudo apt-get remove --auto-remove jenkins//配置和数据sudo apt-get purge jenkinssudo apt-get purge --auto-remove jenkins 升级jenkins12# 适用于ubuntu安装的apt-get upgrade jenkins 同时构建任务的个数系统管理–>系统设置–>执行者数量 构建成功才继续发包只是个不大不小的功能,很容易忽略了,在 任务的配置–>Post Steps –> Run only if build succeeds 修改时区 WebHook使用的场景,Github Push代码之后,自动构建 第一步.jenkins的配置 第二步.Github的配置 第三步.返回jenkins设置 第四步.push代码,查看有没有正常构建 Jenkins+Docker部署Maven聚合工程安装Jenkins 1234567891011docker run \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker \ -v /root/jenkins:/var/jenkins_home \ --name jenkins \ --user=root \ -p 8080:8080 \ -p 50000:50000 \ -d \ -u 0 \ jenkins/jenkins:jdk11 第2行是将宿主机的/var/run/docker.sock映射到容器中,这样在容器中运行的docker命令,就会在宿主机上来执行。 第3行是将宿主机的docker程序映射进容器中,这样本身没有安装docker的jenkins容器就可以执行docker命令了(事实上容器里是没有运行docker的服务的,我们只是用这个映射进容器的docker来作为客户端发送docker的指令到/var/run/docker.sock而已,而/var/run/docker.sock已经被链接到宿主机了) Dockerfile 1234FROM openjdk:8-jdk-alpineVOLUME /tmpADD admin-server-0.0.1-SNAPSHOT.jar app.jarENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] Maven的pom.xml配置 12345678910111213141516<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>springboot/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration></plugin> imageName打的镜像名称,这里的镜像名称是:springboot/admin-server dockerDirectory指定docker文件夹的位置 Job配置 • -e “SPRING_PROFILES_ACTIVE=prerelease” ,可以看成是启动jar的时候的,java -jar admin-server.jar –spring.profiles.active=prerelease ,指定运行环境 脚本检测容器的运行1234567891011121314# "=" 两边不能有空格count=`docker ps -a | grep sabong-admin-controlfront |awk '{print $1}'`if [ -n "$count" ]; then docker stop $count docker rm $count echo "停止并删除容器"fidocker run \ -itd \ -p 9011:9011 \ -e “SPRING_PROFILES_ACTIVE=prerelease” \ --name admin-server \ springboot/admin-server 推送镜像到harbor12345678910# 打标签# sabong/sabong-controller-manager:latest 已经build成功了的镜像名字# 10.0.0.7/library/sabong/sabong-controller-manager:latest 新的镜像名字docker tag sabong/sabong-controller-manager:latest 10.0.0.7/library/sabong/sabong-controller-manager:latest# 登录私有仓库docker login -u admin -p 123456 10.0.0.7# 推送镜像docker push 10.0.0.7/library/sabong/sabong-controller-manager:latest Vue打包成镜像123456789101112131415npm installnpm run build:prod# build# sabong/sabong-admin-controlfront 随便起的docker build -t sabong/sabong-admin-controlfront --no-cache . # 打标签docker tag sabong/sabong-admin-controlfront:latest 10.0.0.7/library/sabong/sabong-admin-controlfront:latest# 登录私有仓库docker login -u admin -p 123456 10.0.0.7# 推送镜像docker push 10.0.0.7/library/sabong/sabong-admin-controlfront:latest Dockerfile 123From nginxCOPY dist/ /usr/share/nginx/html/ ⛔ 这里用的是nginx容器里默认的nginx配置文件,所以这里没有使用自定义的nginx配置 SpringBoot项目脚本适用于ssh传输文件,启动脚本 1234567891011121314151617181920#!/bin/bash# 具体不知道是干啥的,加上这个,这个看情况加# BUILD_ID=DONTKILLMEAPP_NAME=xxx.jar# 杀进程pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` if [ -n "${pid}" ]; then kill -9 $pidfiecho '准备启动jar包'nohup java -jar /root/$APP_NAME --spring.profiles.active=prod &sleep 3echo '启动成功' Maven多模块打包指定打包项目名 1clean package -pl 模块名 -am 配置SSH server 在系统管理–>System—>SSH Server配置 配置SSH Over FTP publish 这里Verbose output in console的作用是把远程的步骤,和远程的shell执行的结果也打印出来 这里Exec in pty 要勾选,不然项目启动完成了,也不会停止SSH链接 前端打包选择已经配置的node版本 构建环境 Build Steps 选择执行shell 12345npm installnpm run build:prodpwd# 删除上一次构建打的包,然后dist文件夹打包成dist.zip文件rm -f dist.zip && zip -r dist.zip dist 各种问题报错1.HTTP ERROR 403 No valid crumb was included in the request 解决办法:网上都是要去关闭CSRF,很明确的是我这里的全局安全配置里面根本就没有选项,我的版本是jenkins 2.293。所以百度出来的都是一堆垃圾,无奈自己解决,尝试一番之后,找到了方法,如 下图所示:还是在全局安全配置里面,勾选上这个参数即可。 2.Jenkins配置中安装插件时提示No such plugin: cloudbees-folder 1sudo systemctl start jenkins 2.Jenkins和Github personal access token 登录到您的 Jenkins 服务器。 选择“Jenkins”>“Manage Jenkins”>“Configure System”。 滚动到“GitHub”部分。 点击“Add GitHub Server”按钮。 在“API URL”字段中输入您的 Github API URL(例如 api.github.com)。 在“Credentials”字段中选择“Add”。 选择“Kind”为“Username with password”。 在“Username”字段中输入您的 Github 用户名。 在“Password”字段中输入您的 Github 个人访问令牌。 点击“Verify credentials”按钮以验证凭据是否有效。 如果验证成功,请点击“Save”按钮保存更改。 3.jenkins映射docker 12345# 如果docker run jenkins 没有指定# 这里就不能打包,就是因为在jenkins里的容器中,没有安装对象,使用了-v # 就是把jenkins里所需要的docker映射到宿主docker中-v /var/run/docker.sock:/var/run/docker.sock \-v $(which docker):/usr/bin/docker 4.安装插件没有成功 需要到插件中心,在可更新和可选插件里,一个一个手动去搜索安装,如果还有问题,就需要更新jenkins 5.npm install需要权限 1Unable to save binary /var/lib/jenkins/workspace/mymanager-/node_modules/node-sass/vendor/linux-x64-83 : Error: EACCES: permission denied, mkdir '/var/lib/jenkins/workspace/lottery-web-24kai-ausk3/node_modules/node-sass/vendor' 修改端口123456789101112131415161718192021222324252627282930# 第一步sudo vim /etc/init.d/jenkins# 8088改成想要的check_tcp_port "http" "$HTTP_PORT" "8088" || return 1# 第二步sudo vim /etc/default/jenkins# 8088改成想要的HTTP_PORT=8088# 第三步vim /lib/systemd/system/jenkins.serviceEnvironment="JENKINS_PORT=80"# 执行sudo systemctl daemon-reloadsudo systemctl start jenkinssudo systemctl status jenkins# 这个时候就启动报错,然后接着修改vim /lib/systemd/system/jenkins.service# 本来是jenkins的,改成rootUser=rootGroup=root# 执行,就可以了,不知道为啥sudo systemctl daemon-reloadsudo systemctl start jenkinssudo systemctl status jenkins jenkins使用root账号登录设置1 设置2 权限管理1.安装插件,Role-based Authorization Strategy 2.点击 管理系统–>安全段落下的–>全局安全配置,选中 3.管理系统–>安全段落下的 就会多一个功能
评论