Nexus install and settings

Thank you for reading this post, don't forget to subscribe!

Nexus явля­ет­ся попу­ляр­ным мене­дже­ром репо­зи­то­ри­ев (repository manager). Он исполь­зу­ет­ся для хра­не­ния арте­фак­тов или прок­си, т.е. всё что выка­чи­ва­ет­ся через него, сохра­ня­ет­ся в нём.

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel createrepo

wget http://download.sonatype.com/nexus/3/latest-unix.tar.gz

tar xvf latest-unix.tar.gz -C /opt/

ln -s /opt/nexus-*/ /opt/nexus

useradd -m -r -s /bin/false nexus

chown -R nexus:nexus /opt/nexus-* /opt/sonatype-work /opt/nexus

 

vim /opt/nexus/bin/nexus.rc

run_as_user="nexus"

 

vim /etc/systemd/system/nexus.service

[Unit]
Description=nexus service
After=network.target

[Service]
Type=forking
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Restart=on-abort

[Install]
WantedBy=multi-user.target

 

Умень­шить коли­че­ство потреб­ля­е­мой опе­ра­тив­ной памяти:
vim /var/nexus/nexus-3.19.1-01/bin/nexus.vmoptions
меняем
-Xms2703m
-Xmx2703m
на
-Xms512m
-Xmx512m

systemctl daemon-reload && systemctl enable nexus

systemctl start nexus && systemctl status nexus

 

WEB-интер­фейс

http://<Nexus-server-ip-address>:8081

для авто­ри­за­ции в каче­стве логи­на используйте
admin
пароль мож­но посмот­реть тут:
cat /opt/sonatype-work/nexus3/admin.password

так­же по умол­ча­нию пароль может быть следующим:
Login: admin

Password: admin123
Настрой­ка рота­ции логов Nexus
cat /etc/logrotate.d/nexus
/opt/sonatype-work/nexus3/log/*.log {
daily
dateext
copytruncate
missingok
rotate 3
compress
delaycompress
notifempty
}
отме­тим что в дирек­то­рии в кото­рой уста­нов­лен nexux долж­но быть не мень­ше 5Gb.
стар­ту­ем
systemctl start nexus
добав­ля­ем в автозапуск
systemctl enable nexus
логи хра­нят­ся тут:
/opt/sonatype-work/nexus3/log/д­ля удоб­ства созда­дим симлинк
mkdir /var/log/nexus
ln -s /opt/sonatype-work/nexus3/log/ /var/log/nexus/

========================================================================

Описание работы с данной утилитой

Общий репозиторий:

не забы­ва­ем вклю­чить ано­ним­ный доступ чтоб реп работал:
Anonymous - > Allow anonymous users to access the server

Далее пере­хо­дим к спис­ку репозиториев:

Созда­ём новый proxy репо­зи­то­рий (create reposytory - > yum(proxy))

Name: test-repo-epel

Созда­ём yum group

Name: yum-repo-group

добав­ля­ем в него 2 создан­ных нами прок­си  и сохраняем.

всё, репо­зи­то­рий создан.

Теперь что­бы исполь­зо­вать его необ­хо­ди­мо прой­ти в раздел:
reposytory -> 

и на целе­вой тач­ке созда­ем репозиторий:

cat /etc/yum.repos.d/Centos-7-Nexus.repo

[Centos-7-Nexus]
baseurl = http://192.168.1.177:8081/repository/
gpgcheck = 1
enabled=1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
name = Centos-Nexus

сохра­ня­ем и проверяем.

=======================================================================

Общий репозиторий docker:

созда­ём docker(hosted):
repositories -> create repository -> docker(hosted)

Name: docker-private
type hosted

http: 8083

мож­но ещё доба­вить для https

Нажи­ма­ем save

 

созда­ём docker(proxy):

repositories -> create repository -> docker(proxy)
Name: docker-hub
type proxy
remote storage: https://registry-1.docker.io
docker index: выби­рем Use Docker Hub

Нажи­ма­ем save

 

созда­ём docker(group):

repositories -> create repository -> docker(group)
Name: docker-group
http:8082
и добав­ля­ем в него docker-private  docker-hub

Нажи­ма­ем save

 

на целе­вой тач­ке добавляем:
cat /etc/docker/daemon.json
{
"insecure-registries": ["192.168.1.177:8081","192.168.1.177:8082","192.168.1.177:8083"],
"experimental": true
}

Далее необ­хо­ди­мо зало­ги­нить­ся в nexus репозитории:
docker login http://192.168.1.177:8082/repository/docker-group

!!! ВАЖНО. Если вы исполь­зу­е­те прок­си, то необ­хо­ди­мо убрать его, пере­за­пу­стить демон, и рестар­та­нуть docker(reload не хватит):

[spoiler]
mv /etc/systemd/system/docker.service.d/http-proxy.conf /home/
systemctl daemon-reload
systemctl restart dockerпро­ве­рить, что прок­ся не задей­ство­ва­на вы може­те с помо­щью команды:
docker info
в её выво­де не долж­но быть прокси.
[/spoiler]
при логине в  192.168.1.177:8082/repository/docker-group в каче­стве логи­на и паро­ля надо ука­зы­вать или тех поль­зо­ва­те­лей кото­рые вы созда­ли в nexus или глав­но­го поль­зо­ва­те­ля с кото­рым вы авто­ри­зо­ва­лись в nexus  admin admin123
что­бы выка­чать образ необ­хо­ди­мо ука­зы­вать адрес источ­ни­ка, т.е.:
docker pull 192.168.1.177:8082/httpd
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.177:8082/nginx latest e445ab08b2be 37 hours ago 126MB
192.168.1.177:8082/httpd latest ee39f68eb241 12 days ago 154MB
пере­име­ну­ем наш образ и загру­зим его в nexus:
docker tag 192.168.1.177:8082/nginx 192.168.1.177:8082/nginx33:3
docker push 192.168.1.177:8082/nginx33:3
========================================
что­бы исполь­зо­вать nexus как прок­си для ска­чи­ва­ния обнов­ле­ний или докер обра­зов надо прой­ти в:
System -> HTTP -> HTTP(s) Proxy 
ука­зы­ва­ем ip и port наше­го прок­си, так­же можем задать спи­сок адре­сов кото­рые исклю­ча­ют­ся из прокси(т.е. обра­ща­ясь к ним запрос не пой­дёт через проксю)
Hosts to exclude from HTTP/HTTPS proxy
и нажи­ма­ем saveне забы­ва­ем логиниться
docker login 192.168.1.177:8082
=========================================
что­бы исполь­зо­вать nexus как прок­си для уста­нов­ки через pip
надо создать репозиторий:
Create repository - pypi (proxy) зада­ём имя (про­из­воль­ное) в каче­стве remote storage указываем
https://pypi.org
сохра­ня­ем, далее созда­ём pypi(group) зада­ём имя (про­из­воль­ное) добав­ля­ем в груп­пу ранее созда­ный прок­си репо­зи­то­рий и сохраняем
полу­ча­ем ссыл­ку группы:
http://192.168.1.177:8082/repository/pypi-repo/
далее на целе­вой тач­ке созда­ём файл pip.conf
cat /etc/pip.conf
[global]
index = http://192.168.1.177:8082/repository/pypi-repo/pypi
index-url = http://192.168.1.177:8082/repository/pypi-repo/simple

и запус­ка­ем уста­нов­ку так:
pip install pypi-install --trusted-host 192.168.1.177