如何使用docker docker-compose nginx部署php应用
如何使用docker docker-compose nginx部署php应用1.目录结构我们将使用以下目录结构进行演示:
123456789101112/data/wwwroot/app├── docker-compose.yml├── nginx│ ├── default.conf│ └── Dockerfile├── php│ └── Dockerfile└── www └── html ├── 1.txt ├── index.php └── phpinfo.php
2.创建 nginx 容器在开始之前,需要创建并启动一个 Nginx 容器来托管 PHP 应用程序。
首先,使用以下命令为项目创建一个 demo 目录:
12mkdir -p /data/wwwroot/app && cd /data/wwwroot/appvim docker-compose.yml
为 docker-compose.yml 添加内容:
12345678910version: '3'services: n ...
记录一次Jenkins(Docker版)升级版本
记录一次Jenkins(Docker版)升级版本升级前置说明Docker版本部署的 Jenkins 两种升级方式:使用 docker 部署的 Jenkins 如果要升级版本,一般有两种方式:
替换 docker container 中的 jenkins.war 包,参考:【Jenkins】如何升级Jenkins版本
找到新版本的容器镜像,重建容器。
我更倾向于使用方式2,因为方式1只是替换了容器种的 .war 包,如果容器发生重建,Jenkins 的版本将会回退,如果你在升级后又安装了新版本的插件发生版本回退有可能直接引起 Jenkins 服务异常。
本文着重说下方式2。无论使用哪种方式,操作前务必要事先备份!事先备份!事先备份!
为什么要升级 Jenkins 版本?一定是在业务上有需求,要使用某个版本的插件,当前 Jenkins 版本较低不能够满足,才会想要去升级,比如 HTTP Request Plugin
提示需要 Jenkins 版本 >= 2.282 及以上,并包括其他插件的更高版本。而我当前 Jenkins 版本为 Jenkins 2.263.1 需要升级 ...
如何定制Jenkins jnlp docker镜像
Jenkins 持续集成实战
如何定制Jenkins jnlp docker镜像为什么需要定制 jnlp 镜像?你是否有如下需求:
要在容器内使用命令行工具 wget, curl, telnet, tcpdump 等
构建制品的过程中要使用 nodejs, npm, maven, jdk 等
要在 K8S 容器中构建 docker 镜像就要使用到 kaniko 工具
需要 python3 来执行一些脚本
要使用 kubectl, helm 命令行工具发布 K8S 应用
如果你有如上需求,那么需要为你的业务环境量身定做一个 jnlp docker 镜像了。
当然也可以在流水线阶段中指定 agent 来完成不同类型的任务。
分析 jenkins/inbound-agent DockerfileGithub 地址为:Docker image for inbound Jenkins agents 从中选用 jdk11 + debian 版本的 Dockerfile,其对应的 DockerHub 地址为:Docker image for inbound Jenkins agent ...
Jenkins如何在声明式Pipeline中指定JDK版本
jenkins - 如何在声明性管道 Jenkins 中选择多个 JDK 版本jdk11版本jenkins打包jdk8项目,同时兼容jdk11与jdk8
Jenkins如何在声明式Pipeline中指定JDK版本背景说明docker 安装的 Jenkins JDK 版本为 1.8,将 maven 挂载进 Jenkins docker 中使用,maven 将会调用默认的 JDK1.8 来构建:
123456$ mvn -versionApache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)Maven home: /usr/local/mavenJava version: 1.8.0_272, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64/jreDefault locale: en_US, platform encoding: UTF-8OS name: "linux&qu ...
二进制安装Amazon Corretto JDK11
又一种JDK选择——Amazon CorrettoAmazon Corretto 官网Amazon Corretto JDK11
二进制安装Amazon Corretto JDK11yum 或 apt 方式安装非常简单,请参考官方文档指引 在基于 Debian 的 Linux、基于 RPM 的 Linux 和 Alpine Linux 上安装
本文主要介绍二进制安装,更加适用于跨平台、Ansible 剧本、Jenkins 挂载高版本 JDK 等场景。
下载Downloads 下载二进制包 amazon-corretto-11-x64-linux-jdk.tar.gz
安装1234cd /usr/local/srcwget https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.tar.gztar xvf amazon-corretto-11.0.19.7.1-linux-x64.tar.gz -C /usr/localln -s /usr/local/amazon-corretto-11.0 ...
keepalived+redis 高可用
redis高可用:keepalived+redis主从部署
Redis Master-Slave + Keepalived + VIP这是很经典的高可用架构,当然也适用于 mysql 高可用。
本例不同的是,Keepalived 没有做 check.sh 的检测,是通过 Keepalived 默认的 VRRP 来进行心跳检测与切换的,即 HOST 宕机或 Stop Keepalived 才会发生主备切换、VIP 漂移。
该架构思路适用的环境:
双机均部署了 mysql, redis 单实例(不适用于单机多实例)
mysql 为双主复制,Redis 为主从复制
只有一个 VIP,业务应用 DB连接串为这一个单 VIP:3306, VIP:6379
适用于中小型业务规模,请求量一般,不支持 DB的横向扩展(或需要另外建设DB中间件),依赖单台服务器的纵向配置扩展。
架构图
架构说明
角色
IP
HOST1
192.168.50.32
HOST2
192.168.50.34
VIP
192.168.50.100
两台主机 keeplived 起始状态均设置为 ...
Nexus3 作为 Rockylinux yum 私有仓库
Nexus3 Documentation for YUM Repository使用nexus3发布yum私服(离线-内网)
Nexus3 作为 Rockylinux yum 私有仓库1.Nexus3 yum 仓库类型Nexus3 Yum Repository 仓库的类型有三种:
yum(hosted) 自托管仓库,用户手动上传包,一般用作于离线环境仓库使用。
yum(proxy) 远程仓库的代理,能够配置公网镜像仓库地址,从而进行缓存本地不存在的包,供局域网客户端内网使用。(Nexus3需要能访问物联网)
yum(group) 聚合仓库,能够添加多种类型的仓库并设置优先级,聚合成一个 URL 对外提供服务,可以屏蔽后端的差异性,实现类似透明代理的功能
本文只用到 yum(proxy) 代理仓库。
2.创建 Blob Stores分别创建两个 Blob Stores:
Type:选择 File
Name:名称自定义
Path:对应服务器上的存储路径。在填入 Name 之后,Path 会自动生成
其他保持默认。Enable Soft Quota 限制目录的大小。这里不做限 ...
Linux 动态库,ldd,ldconfig命令
认识 Linux 静态库与动态库
Linux —— 动态库和静态库
什么是 Linux 静态库、动态库
静态库:程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。
在 Linux 中静态库是以 .a为后缀。
在 Windows 中以 .lib 结尾的是静态库。
动态库:程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。
在Linux 中动态库是以 .so 为后缀。
在 Windows 中以 .dll 结尾的后缀,是动态库。
Linux 静态库、动态库有什么特点静态库的特点:
静态库在可执行程序链接时就加入到可执行代码中,在物理上成为可执行程序的一部分;程序运行时将不再需要该静态库。
相对于动态库链接生成的程序,静态函相当于编译器将代码补充完整了,因此执行程序会大一些,但是运行起来相对快些;
静态库是牺牲了空间效率,换取了时间效率;
动态库的特点:
动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在;
动态库只有在程序执行时, 那些需要的函数代码才被拷贝到内存中。这样就使可 ...
python报错:ImportError libmysqlclient_r.so.16 cannot open shared object file No such file or directory
python报错:ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory故障背景python2 程序启动报错:
123456789$ python application.py Traceback (most recent call last): File "application.py", line 13, in <module> import torndb File "/usr/local/python2/lib/python2.7/site-packages/torndb.py", line 33, in <module> import MySQLdb.constants File "/usr/local/python2/lib/python2.7/site-packages/MySQLdb/__init__.py", line 19, in &l ...
systemd服务管理(四):systemd-analyze 命令分析启动耗时
systemd服务管理(四):systemd-analyze 命令分析启动耗时systemd-analyze 命令用于查看启动耗时
查看操作系统启动耗时123$ systemd-analyzeStartup finished in 638ms (kernel) + 1.003s (initrd) + 1.538s (userspace) = 3.180smulti-user.target reached after 1.272s in userspace
查看每个服务的启动耗时12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849$ systemd-analyze blame 579ms kdump.service 538ms tuned.service 538ms dracut-initqueue.service 232ms NetworkManager-wait-online.se ...