存档

‘linux’ 分类的存档

jenkins做?#20013;?#38598;成二

2019年7月25日 没有评论

上一篇文章完成了jenkins的装和基本配置

新建一个maven的?#20013;?#38598;成项目。

注意:maven命令我们在上文最后部分自动安装,配置保存之后并不会立刻安装maven,maven命令工具会在第一次构建maven项目是自动下载安装。

新建项目


配置基本信息

配置源码获取方式为git

遇到的一个错误

 No valid crumb was included in the request

在jenkins 的Configure Global Security下 , 取消“防止跨站点请求伪造(Prevent Cross Site Request Forgery exploits)”的勾选或者使用代理的情况下勾选代理。(如下图)

继续,设置构建触发条件,定时扫描构建

构建前后都可以执行特定的动作如shell脚本,这里演示就省略了。只填入构建命令clean package

报保存配置之后,点立即构建

jenkins就会在后台开始自动构架,这里会显示构建进度,构建完成后红色表示失败,蓝色表示成功,点击可以进去查看日志。

点击console查看日志

如果执行错误可以通过日志查看原因,修改错误后,重新构建

可以看到前面三步有构建失败,查看日志可以发现原因:一个是找不到pom.xml,另一是maven下载不了文件。pom文件需要从工程根目录开始算,?#30001;?#23376;文件?#26032;肪都?#21487;。

通过查看构建日志, maven报错如下:

Failed to transfer Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.4.1.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/151.101.52.215] failed: Connection timed out (Connection timed out)
ERROR: Failed to parse POMs
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM for com.jege.spring.boot:spring-boot-hello-world:1.0.0.RELEASE: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.4.1.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/151.101.52.215] failed: Connection timed out (Connection timed out) and 'parent.relativePath' points at no local POM @ line 24, column 10

构建失败,是因为jenkins配置了代理,但是自动安装的maven没有设置代理,给maven配置代理之后构建成功。

maven代理配置方法:

检查完毕之后,编辑~/.m2/settings.xml文件,代码如下:添加代理配置如下:

<settings>
? ?...
<proxies>
? ? ? <proxy>
? ? ? ? ?<id>my-proxy</id>
? ? ? ? ?<active>true</active>
? ? ? ? ?<protocol>http</protocol>
? ? ? ? ?<host>192.168.10.117</host>
? ? ? ? ?<port>3267</port>
? ? ? ? ?<!--
? ? ? ? ?<username>shihuan</username>
? ? ? ? ?<password>123456</password>
? ? ? ? ?<nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts>
? ? ? ? ?-->
? ? ? </proxy>
? ? </proxies>
? ?...
</settings>? ?

proxies下可以配proxy元素,如果你声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。这里声明 了一个id为my-proxy的代理,active的值为true表示激活该代理,protocol表示使用的代理协议,这里是http。当然,最重要的 是指定正确的代理服务器的ip和端口。

分类: 未分类 标签:

使用docker安装jenkins做?#20013;?#38598;成

2019年7月24日 没有评论

一、jenkins的安装

参考上文docker环境的安装配置完成docker的安装。

无论安装什么软件也就是一条命令的事,jenkins也不例外。

docker pull jenkins/jenkins

docker run -d -p 80:8080 -p 50000:50000 -v jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins

  • -d 后台运行镜像 -p 80:8080 将镜像的8080端口?#25104;?#21040;服务器的80端口
  • -p 50000:50000 将镜像的50000端口?#25104;?#21040;服务器的50000端口
  • -v jenkins:/var/jenkins_home 冒号前面的jenkins表示的是docker卷名,冒号后面的 /var/jenkins_home目录为容器中jenkins工作目录。
  • -v /etc/localtime:/etc/localtime 让容器使用和服务器同样的时间设置。
  • --name jenkins 给容器起一个别名

一定不能修改卷名jenkins,这个卷名是容器自带的存放jenkins文件的地方,如果修改为别的路径就会找不到文件,启动jenkins就会退出。

types-of-mounts

docker 为我们提供了三种不同的方式将数据挂载到容器中:volume、bind mount、tmpfs

volume 方式是 docker 中数据持?#27809;?#30340;最佳方式。

  • docker 默认在主机上会有一个特定的区域(/var/lib/docker/volumes/ Linux),?#20204;?#22495;用来存放 volume。
  • 非 docker 进程不应该去修改?#20204;?#22495;。
  • volume 可以通过 docker volume 进行管理,如创建、?#22659;?#31561;操作。
  • volume 在生成的时候如果不指定名称,便会随机生成。

  • volume 在容器停止或?#22659;?#30340;时候会继续存在,如需?#22659;?#38656;要显示声明。

volume 方?#25509;?#35813;是持?#27809;?#25968;据的首选方式,我们启动jenkins容器命令中的第二个-v参数是Bind mount,它会?#21754;?#23481;器中的文件,而volume mount则不会,即如果容器中已有文件,则会将文件同步到主机的目录上 。

二、jenkins的配置

打开浏览器输入http://ip进入Jenkins登录页面。页面会提示你到服务器的指定位置获取初始化密码。

由于我们是在容器里运行的jenkins,需要进入容器去查看 /var/jenkins_home/secrets/initialAdminPassword

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

在文本框中输入这串密码,点继续

如果是内网,jenkins会报网络连接超?#20445;?#25552;示配置代理。

输入代理信息后继续

进入插件安装界面,点击左边的推荐插件 Install suggested plugins 后继续

开始自动安装

创建用后保存并继续,进入首页,可?#28304;?#24314;job等任务

默认没有安装maven插件

点击上图中复选框自动重启

安装maven,选择addmaven,然后输入名字,选自动安装,保存

重启jenkins http://ip/restart/

分类: 未分类 标签:

docker快速入门

2019年7月23日 1 条评论

一、什么是docker

dcoker包括一个命令行程序、一个后台守护进程,以及一组远程服务器。他简化了安装、运行、发布和?#22659;?#36719;件。

二、镜像、容器、仓库

镜像,是特殊的文件系统,他包含程序、配置、资源?#21462;?/p>

容器,镜像的实例。就像是类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、?#22659;?#26242;停?#21462;?/p>

仓库,用于保存镜像的服务。

三、centos安装docker和docker-compose

注意需要使用 root 账户或者可以使用 sudo 的账户

Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。

社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试?#29616;?#36807;的基础设施、容器、插件?#21462;?/p>

社区版按照stable和edge两种方式发布,每个季度更新stable版本,如18.06,18.09;每个月份更新edge版本,如18.09,18.10。

安装docker

1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本

 $ uname -r

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

$ sudo yum update

3、卸载旧版本(如果安装过旧版本的话)

$ sudo yum remove docker  docker-common docker-selinux docker-engine

4、安装?#35272;?/p>

sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

5、添加docker下载仓库

sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

6、docker安装和验证

# 安装docker-ce
sudo yum install docker-ce

# 启动docker-ce
sudo systemctl start docker

# 验证
sudo docker --version

安装 docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

docker-compose --version

五、安装过程中可能遇到的错误

Error response from daemon: Get https://index.docker.io/v1/search?q=nginx&n=25: dial tcp: lookup index.docker.io on [::1]:53: read udp [::1]:57785->[::1]:53: read: connection refused

需要配置dns,查看服务器DNS网络配置

vi /etc/resolv.conf

添加
nameserver 8.8.8.8

docker pull nginx
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: req uest canceled while waiting for connection (Client.Timeout exceeded while await ing headers)

这个问题多是网络连接不好或者没有网络,网络不好可以采用国内镜像,内网?#27809;?#27809;有网络可以配置代理。

六、docker代理设置

内网服务器不能直接联网,虽然命令行配置了http_proxy环境变量,但是docker命令行工具读不到,会出现上面的类似错误。需要单独配置docker的代理:

?#21754;?code>docker.service file来实现

1. 创建 docker.service.d 目录

$ mkdir -p /etc/systemd/system/docker.service.d

2. 创建HTTP 或者HTTPS 代理文件

HTTP:

vim /etc/systemd/system/docker.service.d/http-proxy.conf

HTTPS:

vim /etc/systemd/system/docker.service.d/https-proxy.conf

由于我这里用的是 “HTTPS?#20445;?#25152;以只给大家演示HTTPS代理的配置,对于HTTP代理的修改,非常相似,大家可以参考我最后贴出来的连接。

3. 修改 https-proxy.conf 文件

[Service]
Environment="HTTPS_PROXY=xxx.xxx.xxx.xxx:443" "NO_PROXY=localhost,127.0.0.1,xxx.xxxxxx:5000"

解析:

主要是两点内容:

①  HTTPS_PROXY 将它的值对应到您所希望设置的代理服务地址和端口(例如: HTTPS_PROXY=https://proxy.example.com:443),我这里为了保护隐私,就用xxx代替.

②  NO_PROXY 意味着某些情况下我们不需要使用HTTPS代理来访问,一般这就配置私有仓库的路径(例如:NO_PROXY=localhost,127.0.0.1,mydocker-registry.com:5000

4. 完成修改后保存/刷新

###Flush changes:
#systemctl daemon-reload

###Restart Docker:
#systemctl restart docker

5. 查看修改结果

#systemctl show --property=Environment docker

Environment=HTTPS_PROXY=xxx.xxx.xxx.xxx:443 NO_PROXY=localhost,127.0.0.1,mydocker-registry.com:5000

测试:

七、如何使用Docker加速器

针对Docker客户端版本大于1.10的?#27809;?/h4>

修改daemon配置文件/etc/docker/daemon.json来使用加速器:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://w5z91a3d.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

八、docker常用命令

docker拉取镜像

docker pull [选项] name[:tag]

docker查看镜像

docker images

创建并启动容器

docker run [options] image [command] [arg...]

docker run -d -p 80:80 --name cn1 nginx

-d 放在后台执行

-p 主机端口:容器端口 将容器的端口?#25104;?#21040;主机上,目的是可以直接对外提供访问

--name 指定容器名

查看容器状态

docker ps

验证docker运行正常

进入容器

docker exec -it cn1 bash

对容器的操作,就像普通linux那样。我们定位到/usr/share/nginx/html/目录,列出所有文件:

目录下有50x.htmlindex.html两个文件,我们新建一个test.html

echo "<html><header><title>测试页面</title></header>test</html>" >> test.html

测试之前,先从docker退出来,不能可能会找不到命令

停止容器

docker stop [options] container

停止cn1容器
(?#37096;?#20197;指定container id停止容器,docker stop 0e9e817ddb5e) ,不能使用镜像名

查看停止状态容器

容器停止并没有销毁,我们可以使用docker ps -a查看停止状态的容器

重启停止状态的容器

docker start cn1

?#22659;?#23481;器

?#22659;?#23481;器前,必须先停止容器。?#22659;?#21629;令:
docker rm 容器名

再次查看终止状态容器,docker ps -a

容器cn1已经被彻底销毁,销毁的容器不能使用start启动,需要使用run重启运行。

?#22659;?#38236;像

?#22659;?#21629;令:
docker rmi -f {repository}:{tag}docker rmi -f {image id}?

九、docker 网络

linux使用namespace来进行资源的隔离 ,docker的隔离性;

1、docker的网路类型分为:

Bridge模式:桥接(默认的模式)

host模式:容器将不会获得独立的network namespace,将和主机公用一个;即在docker中使用网络和主机上一样的;

None:不与外界任?#21619;?#35199;进行通讯

2、采用Bridge的时候需要和主机通讯,就需要使用端口?#25104;?/strong>;

3、端口?#25104;?/p>

主机的8080端口?#25104;?#21040;容器中的80端口
$ docker run -d --name cn1 -p 8080:80 nginx  

十、docker常用命令速查

docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器
docker ps -l # 查看最近一次运行的容器

docker create 容器名或者容器ID # 创建容器
docker start [-i] 容器名 # 启动容器
docker run 容器名或者容器ID # 运行容器,相当于docker create + docker start
docker attach 容器名或者容器ID bash # 进入容器的命令行(退出容器后容器会停止)
docker exec -it 容器名或者容器ID bash # 进入容器的命令行
docker stop 容器名 # 停止容器
docker rm 容器名 # ?#22659;?#23481;器

docker top 容器名 # 查看WEB应用程序容器的进程
docker inspect 容器名 # 查看Docker的底层信息

分类: 未分类 标签:

linux通过openssh无密码访问window

2019年7月18日 没有评论

对于习惯了使用ssh连接linux执行命令的?#27809;?#26469;说,win10已经提供了新?#30446;?#33021;,内置了openssh,windows?#37096;?#20197;很容易的提供sshd服务,然后执行powershell。对于win7需要手动安装,本文主要介绍win7安装openssh和linux无密码访问linux执行程序。

win7安装openssh

安装包下载地址:
https://github.com/PowerShell/Win32-OpenSSH/releases

64位系统下载
OpenSSH-Win64.zip

将下载的zip包解压缩到C:\Program Files\OpenSSH

安装sshd服务

PS C:\Windows\system32> cd 'C:\Program Files\OpenSSH '
PS C:\Program Files\OpenSSH> powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
[SC] SetServiceObjectSecurity 成功
[SC] ChangeServiceConfig2 成功
[SC] ChangeServiceConfig2 成功
sshd and ssh-agent services successfully installed

添加入站防火墙端口22,允许22端口可访问

PS C:\Program Files\OpenSSH> New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Directio
n Inbound -Protocol TCP -Action Allow -LocalPort 22

win7没这个命令,自己去手动在防火墙配置添加:

控制面板\所有控制面板项\Windows 防火墙\高级设置

打开防火请22端口

启动ssh服务:net start sshd

现在已经可在linx使用密码访问服务了。

linux无密码访问windows

配置文件位置C:\ProgramData\ssh\sshd_config,所在的目录是隐藏目录。打开sshd的配置文件之后,修改如下参数,去掉前面的注释

PubkeyAuthentication yes

注释掉结尾两行

重启sshd

net stop sshd ;net start sshd

Linux生成密钥对:

ssh-keygen -t rsa -f id_rsa

把生成的公钥id_rsa.pub内容添加到windows的
%systemdrive%\Users\<user>\.ssh\authorized_keys (如果文件不存在需要先创建)

linux下面执行 ssh -i .\id_rsa [email protected] 就可以无密码访问linux了。 或者把id_rsa访问~/.ssh目录下,这样可以直接
ssh [email protected]

遇到如下错误:

2538868 2019-07-18 10:26:11.645 debug1: userauth_pubkey: test pkalg rsa-sha2-512 pkblob RSA SHA256:6LcR7NR13TTY9qR7G6HumknjLfjyrW/GIX3NfQa13Jg [preauth]
2538868 2019-07-18 10:26:11.645 debug1: trying public key file __PROGRAMDATA__/ssh/administrators_authorized_keys
2538868 2019-07-18 10:26:11.648 Authentication refused.
2538868 2019-07-18 10:26:11.648 Failed publickey for user from 10.1.1.4 port 48402 ssh2: RSA SHA256:6LcR7NR13TTY9qR7G6HumknjLfjyrW/GIX3NfQa13Jg

基本都是 authorized_keys 文件权限设置的不正确

只能 System, Administrators和user 三个?#27809;?#23545;
authorized_keys 有所有权限,并且文件的所有者需要是user。

检查文件权限:
icacls %systemdrive%\Users\<user>\.ssh\authorized_keys

ssh客户端配置错误日志输出:

ssh客户端查看日志方式 ,使用参数-vv
ssh -vv

ssh服务器端输出日志方式:

修改配置文件 sshd_config,然后重启sshd

  • SyslogFacility LOCAL0
  • LogLevel?to?DEBUG?(or?DEBUG2/DEBUG3 for higher levels of logging

linux环境下权限配置

no 'w' for go anywhere (group or others)
700 for?.ssh
600 for?.ssh/authorized_keys

chmod go-w /home/your-user
chmod 700  /home/your-user/.ssh
chmod 600  /home/your-user/.ssh/authorized_keys*

这其中很多波折没有一一写出来,linux的日志比较详细,windows要么提示权限不对,要么提示失败,没有具体的错误点提示。微软在github上有很多解?#36864;?#30340;很不错,在最后要放弃的时候发现只要把你的authorized_keys文件跟.ssh目录下的其它文件配置一致是不是就能解决问题,一试还真行。

linux查看服务sshd日志在tail -f /var/log/secure

https://github.com/PowerShell/Win32-OpenSSH/wiki/ssh.exe-examples
https://github.com/PowerShell/Win32-OpenSSH/wiki/Troubleshooting-Steps
https://github.com/PowerShell/Win32-OpenSSH/issues/870
https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH
分类: 未分类 标签:

centos安装powershell

2019年7月17日 没有评论

微软powershell功能很?#30475;螅?#20063;支持了很多linux命令,对于只停留在cmd的同学可以试试,除了命令行,还可以用来开发图形程序。

powershell并且不绑定在windows,微软开源了代码,在linux?#37096;?#20197;安装。利用这个特性,linux就可以通过powershell远程执行windows中的程序。

powershell的安装也非常容易,微软在github上提供了编译好的不同系统的安装包,可以更具自己?#19981;?#30340;系统来选择。

https://github.com/PowerShell/PowerShell/releases/download/v6.2.2/powershell-6.2.2-1.rhel.7.x86_64.rpm

centos通过rpm方式安装:

wget https://github.com/PowerShell/PowerShell/releases/download/v6.2.2/powershell-6.2.2-1.rhel.7.x86_64.rpm
rpm -ivh  powershell-6.2.2-1.rhel.7.x86_64.rpm 

安装完成之后的测试需要特别注意,网上很多方法都说跟windows类似使用powershell进入,实际上目前已经变成了pwsh

分类: 未分类 标签:

docker安装

2019年1月10日 没有评论

17年以后docker有docker-ce和dcoker-ee两个版本,ee企业版是给企业?#27809;?#20351;用的闭源版本需要收费,ce社区版为原来的docker开源版本。

自动安装最新的docker-ce

安装完成之后默认没有启动docker,使用如下命令启动docker

检查进程已正常启动

或者手动安装源文件后使用yum来安装

设置开机启动docker

分类: 未分类 标签:

linux安装groovy

2018年5月29日 1 条评论

linux系统安装groovy环境

分类: 未分类 标签:

访问https报Unknown SSL protocol error in connection to错误

2018年3月20日 没有评论

网站升级httsp后,用curl访问,长时间不返回结果,报ssl handshake 协议错误,具体如下。
原因是curl版本太旧,可以使用curl的--sslv3参数,或者升级curl本本。

$ curl -v https://www.264.cn/shengqi/ --user-agent "Mozilla/5.0" --silent

* timeout on name lookup is not supported
* Trying 47.52.250.55...
* TCP_NODELAY set
* Connected to www.264.cn (47.52.250.55) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
} [5 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* Unknown SSL protocol error in connection to www.264.cn:443
* Curl_http_done: called premature == 1
* stopped the pause stream!
* Closing connection 0

分类: 未分类 标签:

tcpdump抓取http的请求头和响应信息

2017年8月21日 没有评论

tcpdump过滤HTTP的GET请求:

sudo tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

tcpdump过滤HTTP的POST请求:

sudo tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'

tcpdump过滤HTTP的请求和响应头信息,以及请求和响应消息体信息:

tcpdump -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
tcpdump -X -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

分类: 未分类 标签:

git master origin HEAD的区别

2017年3月29日 没有评论

HEAD :当前活跃分支的?#20266;輳?#21487;以用 checkout 命令改变 HEAD 指向的位置。形象的?#19988;?#23601;是:你现在在哪儿,HEAD 就指向哪儿,所以 Git 才知道你在那儿!

master: 首次创建仓库时默认分支的名字,在大多数情况下,master是指主干分支。

origin: 默认的远程仓库的名字。

HEAD是git内置的定义好的特定含义功能,不可以修改。master,origin都是常用的公共命名方式,可以有自己的定义。

ps:
FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本

参考
http://marklodato.github.io/visual-git-guide/index-zh-cn.html

分类: 未分类 标签:
极速快乐十分助手
捕鱼大师苹果版下载 河北十一选五中奖图片 3d图表走势分析 羽毛球赛程 北京11选5免费计划软件破解版 山东十一选五历史开奖 泳坛夺金怎玩容易中奖 中国福彩网论坛 竞彩公司 福彩东方6十1开奖结果查询结果 网上捕鱼赌博坐牢吗 118彩票 同城游美女捕鱼官网版 3d试机号开机号试机号 百度河北快3走势图