热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jenkins安装部署项目,rabbitmq安装、nginx安装、ngixLua脚本redis实现自动封禁高频率访问IP笔记

开发过程中一些工具的安装使用笔记。。。。。一、jenkins安装部署项目(码云为例Gitee):参考:https:blog.csdn.netshuizhihun07articled

开发过程中一些工具的安装使用笔记。。。。。


一、jenkins 安装部署项目(码云为例Gitee):



参考:https://blog.csdn.net/shuizhihun07/article/details/80168076

1. 安装 jdk 、maven、git jenkins 并设置环境变量

2. 安装完成后启动:

   首次启动报如下错误:

    Starting Jenkins bash: /usr/bin/java: No such file or directory

    解决方法:

    添加java依赖:修改/etc/init.d/jenkins 配置文件,在candidates 第一行加上java的安装路径:如/home/jdk1.8.0_181/bin/java

   启动完成后访问到首页:首次登陆需要密匙:密匙位置命令:cat /var/lib/jenkins/secrets/initialAdminPassword

3.登陆完成后 可选择性安装相关插件

4.新建工程:maven工程

5.全局配置:

    系统管理-系统设置-SSH remote hosts(需要部署到的远程服务器信息)

    Gitee 配置:Gitee 域名 UR:https://gitee.com  证书令牌:获取token后填写

6.工程配置需要注意的地方:

    打包命令:clean install -Dmaven.test.skip=true

    ps:ps:-Dmaven.test.skip=true表示跳过测试单元-不编译不执行,-Ptest  test表示指定环境

    部署war包到远程Tomcat需要配置:

    1.Tomcat-conf下的Tomcat-users.xml 增加下面代码:

    

    username和password随意

    2.授权任何IP访问:更改/home/apache-tomcat-8.5.5/webapps/manager/META-INF  下的context.xml文件

    allow的值改为 "^.*$" 

7:常用命令:

    systemctl enable jenkins

    systemctl restart jenkins

 


二、rabbitmq 安装:

参考:https://www.jianshu.com/p/ce725e41edab

ps:安装活启动报如下错误处理:

    Transaction check error:

    file /usr/bin/epmd from install of erlang-erts-20.0-1.el7.centos.x86_64 conflicts with file from package esl-erlang-20.0-1.x86_64

    file /usr/bin/erl from install of erlang-erts-20.0-1.el7.centos.x86_64 conflicts with file from package esl-erlang-20.0-1.x86_64

    file /usr/bin/erlc from install of erlang-erts-20.0-1.el7.centos.x86_64 conflicts with file from package esl-erlang-20.0-1.x86_64

    file /usr/bin/escript from install of erlang-erts-20.0-1.el7.centos.x86_64 conflicts with file from package esl-erlang-20.0-1.x86_64

    file /usr/bin/run_erl from install of erlang-erts-20.0-1.el7.centos.x86_64 conflicts with file from package esl-erlang-20.0-1.x86_64

    file /usr/bin/to_erl from install of erlang-erts-20.0-1.el7.centos.x86_64 conflicts with file from package esl-erlang-20.0-1.x86_64

    file /usr/bin/dialyzer from install of erlang-dialyzer-20.0-1.el7.centos.x86_64 conflicts with file from package esl-erlang-20.0-1.x86_64

    file /usr/bin/ct_run from install of erlang-common_test-20.0-1.el7.centos.x86_64 conflicts with file from package esl-erlang-20.0-1.x86_64

    注意:出现这种情况,运行如下命令

    yum remove esl-erlang-20.0-1.x86_64 esl-erlang-20.0-1.x86_64 esl-erlang-20.0-1.x86_64 esl-erlang-20.0-1.x86_64 esl-erlang-20.0-1.x86_64 esl-erlang-20.0-1.x86_64 esl-erlang-20.0-1.x86_64 esl-erlang-20.0-1.x86_64

 


三、 nginx 安装 :

参考:https://blog.csdn.net/t8116189520/article/details/81909574

启动报错:

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

解决:

执行命令/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

启动命令:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

重启命令:进入 cd /usr/local/nginx/sbin/

./nginx -s reload

 


四、nginx + Lua脚本 + redis 实现自动封禁高频率访问IP:

参考:https://blog.csdn.net/weixin_43112000/article/details/86650107

安装openresty/1.13.6.1  完成 并能正常启动访问后 编写lua脚本

在openresty 安装目录下的nginx目录下的conf目录下创建access.lua 文件,文件内容如下:


--脚本文件内容开始
local ip_block_time = 120  --封禁IP时间 单位:秒
local ip_time_out = 10 --指定IP访问频率时间段 单位:秒
local ip_max_count = 30 --指定IP访问频率计数最大值 单位:秒
local ret_code=200
local BUSINESS = ngx.var.business --nginx的location中定义的业务标识符,也可以不加,不过加了后方便区分 
local headers=ngx.req.get_headers()
local ip_addr=headers["X-REAL-IP"] or headers["X_FORWARDED_FOR"] or ngx.var.remote_addr
--ngx.var.remote_addr
--连接 Redis
local redis = require "resty.redis"
local cOnn= redis.new()
conn:set_timeout(3000) --超时时间 2秒
local ok, orr = conn:connect("127.0.0.1",6379)
if not ok then
    --ngx.say("failed to connect: ", err)
    goto FLAG
else
    --ngx.say("redis connetc success !!!")
    --身份验证 密码
    conn:auth("123cjdg19071702156")
end
--查询ip是否被禁止访问,如果存在则返回403错误代码
is_block, err = conn:get(BUSINESS.."_BLOCK_"..ip_addr)
if is_block == ngx.null then
    ret_code = 200
end
if is_block == '1' then
    --ngx.say("---封禁开始---", ngx.var.remote_addr)
    ret_code = 403
    conn:close()
    ngx.exit(403)
    --goto FLAG
end
--查询Redis中保存的IP的计数器
ip_count = conn:get(BUSINESS.."_COUNT_"..ip_addr)
if ip_count == ngx.null then --如果不存在,则将改IP存入Redis,并将计数器设置为1,该KEY的超时时间为ip_time_out
    res, err = conn:set(BUSINESS.."_COUNT_"..ip_addr,1)
    res, err = conn:expire(BUSINESS.."_C0UNT_"..ip_addr, ip_time_out)
    
else
    ip_count = ip_count + 1 --存在将访问次数加1
    if ip_count >= ip_max_count then --如果超过单位时间限制的访问次数,则添加限制访问标识,限制时间为ip_block_time
        res, err = conn:set(BUSINESS.."_BLOCK_"..ip_addr, 1)
        res, err = conn:expire(BUSINESS.."_BLOCK_"..ip_addr, ip_block_time)
    else
        res, err = conn:set(BUSINESS.."_COUNT_"..ip_addr, ip_count)
        res, err = conn:expire(BUSINESS.."_COUNT_"..ip_addr, ip_time_out)
    end
end
--此处 第一次设置缓存时失效时间未设置成功(具体原因未找到) 故用一下代码判断并设置失效时间
ip_ttl = conn:ttl(BUSINESS.."_COUNT_"..ip_addr)
if ip_ttl == '-1' or ip_ttl ==-1 then    
    conn:expire(BUSINESS.."_COUNT_"..ip_addr, ip_time_out)
end
--结束标记
::FLAG::
local ok, err = conn:close()
return ret_code
--脚本内容结束

脚本编写完成后配置nginx,在需要拦截的地方(server中的location 中配置)加入lua脚本,access_by_lua_file 后跟lua脚本的具体地址:

location /test {

    # proxy_set_header Host  $host;

    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

    set $Real $http_x_forwarded_for;

    if ($Real ~ (\d+)\.(\d+)\.(\d+)\.(\d+),(.*)){

        set $Real $1.$2.$3.$4;

    }

    proxy_set_header        X-Real-IP       $Real;

    set $BUSINESS "LUA";

    access_by_lua_file /usr/local/openresty/nginx/conf/lua/access.lua;

    proxy_pass http://localhost:80;

}

配置 完成后 重启nginx即可。重启命令:nginx -s reload

ps:1、脚本中连接redis 的IP 和端口 根据自己的实际情况修改

    2、如果在安装openresty 之前 已经使用nginx了,将之前nginx的配置文件 复制到openresty 下的nginx的conf目录下 

       然后再做相关配置,如果之前nginx中有引入其他的文件,注意将文件也一并复制到相应地方或者修改 文件的指向路径

 



推荐阅读
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • 如何在任意浏览器中轻松安装并使用VSCode——Codeserver简易指南
    code-server 是一款强大的工具,允许用户在任何服务器上部署 VSCode,并通过浏览器进行访问和使用。这一解决方案不仅简化了开发环境的搭建过程,还提供了高度灵活的工作方式。用户只需访问 GitHub 上的官方仓库(GitHub-coder/code-server),即可获取详细的安装和配置指南,快速启动并运行 code-server。无论是个人开发者还是团队协作,code-server 都能提供高效、便捷的代码编辑体验。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • SSL 错误:目标主机名与备用证书主题名称不匹配
    在使用 `git clone` 命令时,常见的 SSL 错误表现为:无法访问指定的 HTTPS 地址(如 `https://ip_or_domain/xxxx.git`),原因是目标主机名与备用证书主题名称不匹配。这通常是因为服务器的 SSL 证书配置不正确或客户端的证书验证设置有问题。建议检查服务器的 SSL 证书配置,确保其包含正确的主机名,并确认客户端的证书信任库已更新。此外,可以通过临时禁用 SSL 验证来排查问题,但请注意这会降低安全性。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 在GitHub上克隆vue-element-admin项目时遇到依赖安装错误
    在 GitHub 上克隆 vue-element-admin 项目后,使用 `npm install` 安装依赖时遇到了未知的 Git 错误。具体错误信息为 `npm ERR! code 128`,提示命令执行失败。这可能是由于网络问题、Git 配置不正确或某些依赖包的仓库地址无效导致的。建议检查网络连接、更新 Git 版本并确保所有依赖项的 URL 正确无误。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 在Mac系统中安装Hexo时,如果遇到“Error: Cannot find module './build/Release/DTraceProviderBindings’”错误,可以通过以下步骤解决:首先确保已正确安装Node.js和npm,然后尝试运行`npm install hexo --no-optional`。若问题依然存在,建议检查环境变量配置,并参考Hexo官方文档进行进一步排查。 ... [详细]
  • 在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
author-avatar
mobiledu2502898417
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有