软件安装

简介:Nexus Maven 私有仓库;FTP 服务器配置;SSH 介绍与安装使用

Nexus Maven 私有仓库

安装

Nexus Maven 需要jdk1.8的环境

Sonatype Nexus 提供两种版本Nexus Repository Pro (企业版)/Nexus Repository OSS (社区版)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//下载社区版免费
wgete https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.10.0-04-unix.tar.gz
//or在迅雷(有缓存节点)中下载好之后上传到Centos中

//解压
tar -zxvf nexus-3.10.0-04-unix.tar.gz
//解压后两个文件夹nexus-3.10.0-04 ,sonatype-work

//启动
cd nexus-3.10.0-04
# bin: 启动脚本和启动时的配置文件
# data: 数据存储目录
# etc: 配置文件
# lib: Apache Karaf的二进制包
# public: 公共资源
# system: 系统依赖的组件和插件

//启动
bin/nexus start
# start:在后台启动服务,不在界面上打印任何启动或者运行时信息。
# run:启动服务,但是在界面上打印出启动信息以及运行时信息以及日志信息。
# stop:关闭服务
# status:查看nexus运行状态
# restart:重启服务
# force-reload:强制重载一遍配置文件,然后重启服务

//访问
http://localhost:8081 (admin/admin123)


//设置开机启动
从根目录进入/etc/目录,找到rc.local这个文件,编辑rc.local,添加nexus的启动信息,保存退出
/export/nexus-server/nexus-3.10.0-04/bin/nexus start

//如果有防火墙设置,请打开8081端口

配置

仓库类型

  • hosted (宿主):宿主仓库主要用于存放项目部署的构件,或者第三方构件用于下载
  • proxy (代理):代理仓库就是对远程仓库的一种代理,从远程仓库下载构件或插件,然后缓存到Nexus仓库中
  • group (仓库组):对我们已经配置完了的仓库的一种组策略

Nexus内置的几种仓库说明

  • maven-central:策略为Release、代理中央仓库、只会下载和缓存中央仓库中的发布版本构件。
  • maven-releases:策略为Release的宿主仓库、用来部署组织内部的发布版本内容。
  • maven-snapshots:策略为Snapshot的宿主仓库、用来部署组织内部的快照版本内容。
  • maven-public:该仓库将上述所有策略为Release的仓库聚合并通过一致的地址提供服务。
  • nuget-hosted:用来部署nuget构件的宿主仓库
  • nuget.org-proxy:代理nuget远程仓库,下载和缓冲nuget构件。
  • nuget-group:该仓库组将nuget-hosted与nuget.org-proxy仓库聚合并通过一致的地址提供服务。

配置访问的地址一般为 maven-public 组

maven-public 为对我们开发中提供的url,点击copy,会出现访问地址
http://192.168.253.104:8081/repository/maven-public

配置一个新的aliyun-proxy仓库

由于阿里的maven仓库比maven central的要快很多,所以我们可以配置一个新的仓库
http://maven.aliyun.com/nexus/content/groups/public 这个是阿里的仓库地址

然后再public组里面讲这个aliyun-proxy仓库加入,排在maven-central之前即可。

配置文件存储Blob Stores 可供仓库上传文件使用

本地setting.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

<!-- 本地仓库地址 -->
<localRepository>F:\apache-maven-3.3.9\repository_104</localRepository>

<!-- 服务 -->
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>

<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.253.104:8081/repository/maven-public/</url>
</mirror>
</mirrors>

<profiles>
<profile>
<id>dev</id>
<repositories>
<repository>
<id>Nexus</id>
<url>http://192.168.253.104:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>

</settings>

项目中配置

一般而言,项目中使用经过以上配置的本地maven,在进行包依赖下载的时候,会自动从192.168.253.104上进行下载,如果104上没有,那么104会从远程仓库中获取,然后供内网下载

  • 发布本地项目到私有仓库中
  1. distributionManagement 节点中,有两个子节点repository/snapshotRepository 一个是快照仓库,一个是正式仓库,在项目中添加了distributionManagement,项目在调用mvn:deploy 的时候就会更加当前项目的版本(判断项目版本号是否包含-SNAPSHOT)发布到不同的仓库中
  2. 两个子仓库的地址来源于私有仓库中,快照,正式地址,id必须跟setting中配置的server一致
  3. 如果项目是快照版本,deploy时,会根据时间戳生成jar,不用该版本号
  4. 如果项目是releases版本,生成的jar,默认是不允许被覆盖的,所以可通过修改版本号发布
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<project>

<!-- 发布项目到私有仓库,供团体其他人使用 -->
<distributionManagement>
<repository>
<id>releases</id>
<name>Nexus Release Repository</name>
<url>http://192.168.253.104:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://192.168.253.104:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>

</project>
  • 如果需要发布源码到私有仓库

    在plugins中,增加两个插件,然后默认的deploy,会同时将源码发布到私有库中

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <!-- 编译源代码插件 -->
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
    <source>1.8</source>
    <target>1.8</target>
    <encoding>${project.build.sourceEncoding}</encoding>
    </configuration>
    </plugin>

    <!-- 打包源代码插件 -->
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.2.1</version>
    <configuration>
    <attach>true</attach>
    </configuration>
    <executions>
    <execution>
    <phase>compile</phase>
    <goals>
    <goal>jar</goal>
    </goals>
    </execution>
    </executions>
    </plugin>

FTP 服务器配置

安装vsftpd

1
2
3
4
//检查是否安装vsftpd
rpm -qa | grep vsftpd
//没有就安装vsftpd
yum -y install vsftpd

配置 /etc/vsftpd/vsftpd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
############全局设置(YES-是)########
#是否可写入
write_enable=YES
#是否可下载
download_enable=YES
#设置是否以standalone(独立的服务)模式运行
listen=YES
#设定支持ASCII模式的上传和下载功能
ascii_upload_enable=YES
ascii_download_enable=YES
#设置被动模式的端口范围
pasv_min_port=10050
pasv_max_port=10060

############匿名用户登录############
#匿名访问YES-允许
anonymous_enable=YES
#匿名访问是否能上传文件
anon_upload_enable=NO
#匿名用户是否有新增目录权限
anon_mkdir_write_enable=NO
#匿名用户上传文件的权限值
#anon_umask=077
#匿名用户HOME路径
anon_root=/var/ftp

############本地用户设置############
#设定本地用户是否可访问
local_enable=YES
#本地用户上传文件的权限值
local_umask=022
#本地用户上传的文件权限
file_open_mode=0755

############虚拟用户设置############
#虚拟用户使用PAM认证方式,PAM将根据/etc/pam.d/vsftpd进行认证
pam_service_name=vsftpd
#设定启用虚拟用户功能
guest_enable=YES
#虚拟用户权限YES-与本地用户相同,NO-与匿名用户相同
virtual_use_local_privs=YES
#用户不能离开主目录(YES-不能,NO-可以)
chroot_list_enable=YES
#用户列表
chroot_list_file=/etc/vsftpd/vuser_passwd.txt
#设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径
user_config_dir=/etc/vsftpd/vuser_conf

安装 Berkeley DB工具

  • yum install db4 db4-utils
  • 创建用户密码文本/etc/vsftpd/vuser_passwd.txt ,奇行是用户名,偶行是密码
  • db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

编辑/etc/pam.d/vsftpd,全部注释掉原来语句

1
2
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd

vim /etc/sysconfig/iptables 防火墙,并重启

1
2
3
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10050:10060 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

在文件夹 /var/ftp/

ftp 的权限设置 755
ftp 下建立一个 777 的文件夹upload

重启

  • service vsftpd restart

(如果还是不能上传文件)关闭SELINUX

1
2
3
4
setenforce 0 
or
vim /etc/sysconfig/selinux
SELINUX=disabled

SSH

ssh 介绍

  • openssl 不是协议,而是对协议的实现,SSL/TLS 才是协议。
  • openssh 利用 openssl 提供的库。openssl 中也有个叫做 openssl 的工具,是 openssl 中的库的命令行接口。

openssh版本协议

  • openssh V1:存在安装漏洞,现已不再采用
  • openssh V2:现在推出的RHEL系列版本默认采用的版本协议

openssh命令

  • ssh -V (查看版本号)
  • ssh root@192.168.253.102 (ssh 远程登录,需要密码验证)
  • service sshd restar/stop/start

ssh 配置文件

  • 位置:/etc/ssh/sshd_config
  • 修改端口:Port 22(默认为22,建议自定义)

scp (两台主机直接复制数据,加密传输)

  • rpm -qf which scp (检查是否安装)
  • scp hhh.text root@192.168.253.102:/export/ (将本地当前目录下的hhh.text 文件复制到远程/export/)

ssh 免密码登录

1
2
3
4
5
6
7
ssh-keygen -t rsa
// 该命令会在客户机 root/.ssh/ 下面生成id_rsa(私钥) id_rsa.pub(公钥)
ssh-copy-id -i id_rsa.pub nick@192.168.2.29
// 该命令将公钥上传到待访问机器上
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
// 修改 服务器中访问权限

注: 登录日志可查看的文件 /var/log/secure


Git 私有仓库安装

待补充

Git 之 ssh

待补充


注: i386 简单理解就是是32位的amd64 是64位的版本,因为是amd把64位率先引进桌面系统的,英特尔也是要追随amd并且保持兼容,一般在软件包里包含这样的字符