Sonatype Nexus Repository Kurulum ve Yapılandırılması
  1. Anasayfa
  2. Sonatype Nexus

Sonatype Nexus Repository Kurulum ve Yapılandırılması

Sonatype Nexus, rpm, binary dosyaların ve derleme yapılarının çoğu için dünya çapında kullanılan popüler bir depo yöneticisidir. Gradle, Ant, Maven ve Ivy dahil olmak üzere Java Virtual Machine (JVM) ekosistemi için destekle birlikte gelir. Eclipse, IntelliJ, Hudson, Jenkins, Puppet, Chef, Docker, vb. dahil olmak üzere standart araçlarla uyumlu olan Sonatype Nexus repo, binary konteynerler, montajlar ve bitmiş ürünler için teslimat yoluyla geliştirme bileşenlerini yönetebilir.

Sistem Gereksinimleri

Kuruluma başlamadan önce Sonatype Nexus Repo’yu çalıştırmak için minimum sistem gereksinimlerine bakalım. Nexus Repository Manager kurmak ve çalıştırmak oldukça basittir. Arşivi tam erişime sahip olduğunuz bir dizinde açabilir veya Docker image ile kurabilirsiniz.

İşletim sistemi sistem gereksinimi;

İşletim sistemi desteğinde belirleyici unsur desteklenen bir Java sürümünü çalıştırabilen herhangi bir Windows, Linux veya Macintosh işletim sistemi çalışacaktır. Diğer işletim sistemleri çalışabilir, ancak Sonatype tarafından test edilmemiştir. Nexus Reposiyory Manager (NXRM) için en yaygın kullanılan işletim sistemi Linux’tur ve bu nedenle müşteriler onu test edilen en iyi platform olarak görmelidir.

Bu doküman hazırlanmasında Centos 8 işletim sistemi kullanılmıştır.

Tahsis Edilmiş (dedicated) Kullanıcı Hesabı;

Repository Manager sadece kişisel kullanım için test etmediğiniz veya çalıştırmadığınız sürece her benzersiz işlemi belirli bir sistemde çalıştırmak için özel bir işletim sisteminde bu işlem için ayrılmış kullanıcı hesabının kullanımını tavsiye eder.

NXRM işlem kullanıcısı tipik olarak ‘nexus’ olarak adlandırılır ve geçerli bir kabuk oluşturabilmelidir. Güvenlik önlemi olarak, Nexus Repository Manager 3’ü root kullanıcı olarak çalıştırmayınız.

Yeterli Dosya İşleme Sınırları

NXRM3 büyük olasılıkla Linux veya OSX işletim sisteminiz tarafından izin verilen kullanıcı başına varsayılan değerden daha fazla dosya tanıtıcısı kullanmak isteyecektir. Dosya tanımlayıcılarının tükenmesi sorunlara neden olabilir ve büyük olasılıkla veri kaybına yol açar.

Nexus kurulumuna başlamadan önce Nexus Repository Manager’i çalıştıran kullanıcı hesabı için açık dosya tanımlayıcı sayısı sınırını 65.536 veya üstüne çıkardığınızdan gerekecektir.

Birçok Linux dağıtımlarında, /etc/security/limits.conf dosyası düzenlenerek belirli bir kullanıcı için kalıcı sınırlar belirlenebilir. Nexus kullanıcısı için hem yumuşak hem de kesin sınırlar için maksimum açık dosya sayısını 65536 olarak ayarlamak için, /etc/security/limits.conf dosyasına aşağıdaki satırı ekleyin; burada “nexus“, kullanıcı kimliğiyle değiştirilmelidir.

nexus – nofile 65536

Bu değişiklik, yalnızca nexus işlemi kullanıcısı yeni bir oturum açtığında geçerli olacaktır. Bu da aslında NXRM’yi yeniden başlatmanız gerektiği anlamına gelir.

Not : Ubuntu Server sistemlerinde init.d tarafından başlatılan işlemler için /etc/security/limits.conf dosyasını yok sayar. Bu nedenle, NXRM orada init.d kullanılarak başlatılırsa, /etc/pam.d/common-session‘ı düzenleyin ve aşağıdaki satırı açıklamayı kaldırın (satırın başındaki hash # ve boşluğu kaldırın):

# session    required   pam_limits.so

Sunucuyu başlatmak için systemd kullanıyorsanız, yukarıdaki tanımlamalar çalışmayacaktır.

Bunun yerine, bir LimitNOFILE satırı eklemek için yapılandırma dosyasını değiştiriniz.

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

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

[Install]
WantedBy=multi-user.target

Java 1.8 Gereksinimi

Nexus Repoistory Manager, Java 8 Runtime Environment (JRE) gerektirir. Linux, OSX ve Windows dağıtımları da dahil belirli işletim sistemi için uygun çalışma zamanı ortamlarını içerir.

Linux işletim sisteminizde yüklü Java sürümünü java -version komutuyla onaylayabilirsiniz, örneğin:

$ java -version
openjdk version “1.8.0_191”
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

Birden çok JDK veya JRE sürümü kurulduğunda, repository manager çalıştırmak için kullanılan işletim sistemi kullanıcısı olarak yukarıdaki komutu çalıştırarak doğru sürümün yapılandırıldığından emin olmanız gerekir. Standart olmayan bir konumunuz olması durumunda belirli bir JDK veya JRE kurulum yolunu belirtmek için yapılandırmayı güncellemeniz gerekir. Belirli bir Java konumu için yolu ayarlamak üzere, /bin/nexus komut dosyasını açın ve INSTALL4J_JAVA_HOME_OVERRIDE satırını bulun. Buradaki karmayı kaldırın ve JDK/JRE’nizin konumunu belirtiniz.

INSTALL4J_JAVA_HOME_OVERRIDE=/usr/lib/jvm/openjdk-8

Startup script, ile iç içe yerleştirilmiş bin/java komutunun yanı sıra çalışma zamanının ana ve ikincil sürümünün gerekli 1.8 olup olmadığını kontrol ederek çalışma zamanı ortamını doğrular. Yapılandırılmış çalışma zamanı uygun değilse, JAVA_HOME ortam değişkeni aracılığıyla yapılandırılmış uygun bir çalışma zamanını bulmak için en iyi çabayı gösterecektir. Başarılı olursa repository manager bu JVM ile başlatacaktır. Bu repository manager için diğer yüklü uygulamalar tarafından kullanılmayan özel bir çalışma zamanı ortamına sahip olmanızı sağlar. Ayrıca, repository manager tarafından kullanılan Java çalışma zamanı yükseltmelerini diğer uygulamalar tarafından kullanılan çalışma zamanı yükseltmelerinden ayırabilirsiniz.

İşlemci gereksinimi;

Nesus performans öncelikle CPU’dan ziyade I/O (disk ve ağ) ile sınırlıdır. Kullanılabilir CPU’lar, daha uzun süre çalışan işlemleri ve ayrıca web konteynerinin iş parçacığı tahsis algoritmalarını etkileyecektir.

Minimum CPU4
Tavsiye Edilen CPU8 ve üzeri

Memory;

Buradaki bellek gereksinimlerinde sunucu üzerinde çalışan başka bir bellek kullanımı / işlemlerinin olmadığı varsayılır.

JVM HeapJVM DirectHost Physical/RAM
Minimum ( default ) 2703MB2703MB8GB
Maximum4GB(host physical/RAM * 2/3) – JVM max heapno limit

Yığın bellek çalışma zamanı, uygulama nesnelerini depolar. Min (-Xms) ve max (-Xmx) bir değer belirtilmeli ve değerler aynı olmalıdır. Yığın belleğinin önerilenden daha fazla artırılması veya minimum ve maksimum değerlerin farklı olacak şekilde ayarlanması önerilmez. Bu işletim sisteminin gereksiz yere çalışmasına neden olan performans sorunları yaratacaktır. Sürekli olarak maksimum 4 GB yığın kullanıldığına dair ihtiyacınız yoksa veya yazılım hataları ile açıklanamayan sık uzun çöp toplama duraklamaları yoksa, maksimum yığın boyutunu 4 GB’den büyük ayarlamayın.

JVM Doğrudan Bellek;

Doğrudan bellek yığın belleğinin dışında ve bundan farklı olarak tahsis edilir. Mutlaka maksimum değer yapılandırılmalıdır.

Fiziksel Belleği Barındırın;

Genel olarak RAM olarak adlandırılan tüm işletim sistemine veya sanal donanıma ayrılan toplam bellek miktarıdır.

Genel Bellek Yönergeleri;

  • Ana bilgisayarda minimum fiziksel / RAM bellek 8GB
  • Minimum yığın (-Xms) ayarlanan maksimum yığına (-Xmx) eşit olmalıdır
  • Minimum yığın boyutu 2703MB
  • Maksimum yığın boyutu <= 4GB
  • Minimum doğrudan bellek (-XX: MaxDirectMemorySize) boyutu 2703MB
  • Sanal bellek değişimine izin vermek için minimum ayrılmamış ana bilgisayar fiziksel / RAM belleği, toplam fiziksel RAM’in 1 / 3’ünden az olmamalıdır
  • Maksimum yığın + maksimum doğrudan bellek <= ana bilgisayar / RAM * 2/3

Örnek Bellek Yapılandırma Profilleri;

Bu profiller repository manager çalıştıran özel bir sunucu için gereken tipik fiziksel bellek gereksinimlerini ölçmeye yardımcı olur. Kullanım durumlarının doğasında var olan karmaşıklık nedeniyle, tek bir boyut hepsine uymaz ve bu yalnızca bir kılavuz olarak yorumlanmalıdır.

Profil Kullanım ÖrneğiFiziksel / RAM Bellek
küçük, kişisel repository <20 toplam blobstore boyutu <20GB tek depo biçimi türü  Minimum 8 GB
orta, takım repository <50 toplam blobstore boyutu <200GB birkaç depo biçimi  16 GB
büyük, kurumsal depolar> 50 toplam blobstore boyutu> 200 GB çeşitli depo formatlarıMinimum 32 GB ve üzeri

Örnek Maksimum Bellek Yapılandırmaları;

Physical/RAM MemoryExample Maximum Memory Configuration
  8 GB-Xms2703M
-Xmx2703M
-XX:MaxDirectMemorySize=2703M
  12 GB-Xms4G
-Xmx4G
-XX:MaxDirectMemorySize=4014M
  16 GB-Xms4G
-Xmx4G
-XX:MaxDirectMemorySize=6717M
  32 GB-Xms6G
-Xmx6G
-XX:MaxDirectMemorySize=15530M
  64 GB-Xms8G
-Xmx8G
-XX:+UseG1GC
-XX:MaxDirectMemorySize=35158M

Temporary Directory ;

Data-dir/tmp adresindeki geçici dizin noexec ile bağlanmamalıdır, aksi takdirde Repository Manager başlatılması java.lang.UnsatisfiedLinkError mesajı ile karşılaşabilirsiniz.

Disk Alanı;

  • Uygulama Dizini ; Bu dizinin boyutu her sürümde biraz değişiklik gösterir. Şu anda kullanmakta olduğum bu sürümde en az 330 MB civarındadır. Repository Manager yükseltilirken zamanla aynı bilgisayarda birden fazla uygulama dizininin yüklenmesi normaldir. Bu neden dolayı ek olarak 200 MB daha alan ayırmanız faydalı olacaktır.
  • Veri Dizini ; İlk başlangıçta Repository Manager çalışması için gereken temel dosyaları oluşturur. Disk alanının büyük kısmı dağıtılan ve vekalet edilen yapay nesnelerinizin yanı sıra tüm arama dizinleri tarafından tutulacaktır. Bu alan son derece kuruluma özgüdür ve kullanılan repository formatlarına, repository yapıların sayısına, ekiplerinizin ve projelerinizin boyutuna, vb. bağlı olacaktır. Bununla birlikte çok şey planlamak en iyisidir Docker ve Maven gibi formatlar çok büyük kullanabilir depolama miktarı (kolayca 500 Gb). Kullanılabilir disk alanı 4GB’ın altına düştüğünde veritabanı salt okunur moda geçecektir ve farklı hatalarla karşılaşmanız olası olacaktır.

Dosya Sistemi Optimizasyonu;

Ayrıca, takdirinize bağlı olarak kullanabileceğiniz bazı optimizasyon önerilerimiz de var. Ayrıca, Nexus Depo çalışma dizini bağlamalarınız için noatime seçeneğini de göz önünde bulundurun ve kullanılan sembolik bağlantıları sınırlayın, çünkü bu, yolların mutlak bir dosya yoluna çözülmesi gerektiğinde artan ek yüke neden olur.

Sonatype Nexus Repository Kurulumu;

Nesus kurulum öncesinde Centos 8 işletim sisteminin hazırlanması;

# İşletim sistemi adını değiştiriniz. Bu işlem için hostnamectl komutunu kullanabilirsiniz. Aşağıdaki adımların sıralı olarak yapılması ile işletim sisteminin yeniden adlandırılması ve yapılan bu değişikliğin uygulanması için işletim sistemini yeniden başlatılması için gerekli olan komutlar yer almaktadır.

hostnamectl set-hostname repo-nexus01

/etc dizininde yer alan hostname yapılandırma dosyasında sunucu için tanımlanan bilgisayar adının yer alıp/almadığı kontrol edilir.

vi /etc/hostname

Son olarak /etc dizininde yer alan hosts yapılandırma dosyasının kontrol edilmesi gerekiyor.

vi /etc/hosts

Yapılan bu değişikliklerin uygulanması için işletim sistemini yeniden başlatınız. Bu işlem için reboot komutunu çalıştırabilirsiniz.

reboot

İşletim sisteminiz açıldıktan sonra yapılan bu değişikliğin uygulanıp/uygulanmadığını kontrol etmek için hostnamectl komutunu çalıştırabilirsiniz.

# işletim sistemi saat ve tarih formatının yapılandırmasını kontrol ediniz. Bu işlem için timedatectl komutunu çalıştırabilirsiniz.

Bu yapılandırmanın “Europe/Istanbul” olması için aşağıdaki komutu kullanabilirsiniz.

timedatectl set-timezone Europe/Istanbul

# Centos 8 Minimal işletim sisteminde Nesus kurulum sırasında gerekli olabilecek ek paketlerin hazırlanması için gerekli olabilecek paketlerin yüklenmesi gerekebilir. Bu işlem için aşağıdaki komutu kullanabilirsiniz.

yum install -y wget net-tools

# Centos 8 işletim sisteminizi güncelleyiniz. Bu işlem için aşağıdaki komutu kullanabilirsiniz.

yum update && yum upgrade

#Centos 8 için Java 1.8 paketini kurunuz.

Bu işlem için aşağıdaki komutu kullanabilirsiniz.  

yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

Java için gerekli olan paketlerin kurulumu tamamlandıktan sonra java’nın sürümü kontrol edilir. Bu işlem için aşağıdaki komutu kullanabilirsiniz.

java -version

# Nexus Repository Manager 3’ü kurulum paketinin indirilmesi;

/opt dizinine gidiniz ve Repo’nun en son URL’sini resmi web sitesinden kopyalayınız ve ardından wget kullanarak indirin.

cd /opt
wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz

İndirilen .tar dosyasını ayıklayınız. Bu işlem için aşağıdaki komutu çalıştırınız.

tar -xvzf latest-unix.tar.gz

.tar dosyasının içeriğini kontrol ediniz. Burada “Nexus-unix.tar.gz” ve “sonartype-work” olmak üzere iki dizin görmelisiniz.

ls -al

Nexus’a ait bu iki klasörleri yeniden adlandırınız.

nexus-3.29.2-02   -> nexus

sonartype-work  -> nexusdata

mv nexus-3.29.2-02 nexus
mv sonatype-work nexusdata

# Nexus kurulumu ve yapılandırması için yeni bir kullanıcı oluşturunuz. Oluşturulan bu kullanıcı için izinleri tanımlayınız.

nexus servisleri için yeni bir kullanıcı hesabı oluşturulur.

useradd –system –no-create-home nexus

Yeni açılan Nexus kullanıcı hesabı için “nexus data” ve “nexus” dizinleri için sahiplik (owner) tanımlayınız.

chown -R nexus:nexus /opt/nexus
chown -R nexus:nexus /opt/nexusdata

c

Nexus Yapılandırması;

Nexus yapılandırma dosyasında (“nexus.vmoptions”) dizinleri değiştiriniz.

vi /opt/nexus/bin/nexus.vmoptions

Öncesi;

-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf -Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=../sonatype-work/nexus3
-Dkaraf.log=../sonatype-work/nexus3/log
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false

#
# additional vmoptions needed for Java9+
#
# –add-reads=java.xml=java.logging
# –add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED
# –patch-module=java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.9.jar
# –patch-module=java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.9.jar # –add-opens=java.base/java.security=ALL-UNNAMED
# –add-opens=java.base/java.net=ALL-UNNAMED
# –add-opens=java.base/java.lang=ALL-UNNAMED
# –add-opens=java.base/java.util=ALL-UNNAMED
# –add-opens=java.naming/javax.naming.spi=ALL-UNNAMED
# –add-opens=java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED
# –add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED
# –add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED
# –add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED
# –add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED
# –add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
#
# comment out this vmoption when using Java9+
# -Djava.endorsed.dirs=lib/endorsed

Değiştirilecek satırlar;

-Dkaraf.data=

-Dkaraf.log=

-Djava.io.tmpdir=

Sonrası;

-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=../nexusdata/nexus3
-Dkaraf.log=../nexusdata/nexus3/log
-Djava.io.tmpdir=../nexusdata/nexus3/tmp
-Dkaraf.startLocalConsole=false
#
# additional vmoptions needed for Java9+
#
# –add-reads=java.xml=java.logging
# –add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED
# –patch-module=java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.9.jar
# –patch-module=java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.9.jar
# –add-opens=java.base/java.security=ALL-UNNAMED
# –add-opens=java.base/java.net=ALL-UNNAMED
# –add-opens=java.base/java.lang=ALL-UNNAMED
# –add-opens=java.base/java.util=ALL-UNNAMED
# –add-opens=java.naming/javax.naming.spi=ALL-UNNAMED
# –add-opens=java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED
# –add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED
# –add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED
# –add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED
# –add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED
# –add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
#
# comment out this vmoption when using Java9+
#
-Djava.endorsed.dirs=lib/endorsed
~

Nexus servis hesabının tanımlanması için boş olan kullanıcı adının nexus olarak değiştiriniz.

vi /opt/nexus/bin/nexus.rc

Öncesi;

#run_as_user=””

Sonrası;

run_as_user=”nexus”

Nexus-default.properties” dosyasında yer alan “Application-host = 0.0.0.0 “ olan satır “application-host = 127.0.0.1” olarak değiştiriniz.

vi /opt/nexus/etc/nexus-default.properties

Öncesi;

## DO NOT EDIT – CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties ##
# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml nexus-context-path=/  

# Nexus section
nexu-edition=nexus-pro-edition
nexus-features=\  
nexus-pro-feature  

nexus.hazelcast.discovery.isEnabled=true

Sonrası;

## DO NOT EDIT – CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties ##
# Jetty section
application-port=8081
application-host=127.0.0.1
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml nexus-context-path=/  

# Nexus section
nexus-edition=nexus-pro-edition nexus-features=\  
nexus-pro-feature  

nexus.hazelcast.discovery.isEnabled=true

Nexus kullanıcısının açık dosya sınırını yapılandırınız. “limits.conf” yapılandırma dosyasındaki “nexus – nofile 65536” ekleyiniz.  

vi /etc/security/limits.conf

Öncesi;

#It does not affect resource limits of the system services.
#
#Also note that configuration files in /etc/security/limits.d directory,
#which are read in alphabetical order, override the settings in this
#file in case the domain is the same or more specific.
#That means for example that setting a limit for wildcard domain here
#can be overriden with a wildcard setting in a config file in the
#subdirectory, but a user specific setting here can be overriden only
#with a user specific setting in the subdirectory.
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        – a user name
#        – a group name, with @group syntax
#        – the wildcard *, for default entry
#        – the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit # #<type> can have the two values:
#        – “soft” for enforcing the soft limits
#        – “hard” for enforcing hard limits
#
#<item> can be one of the following:
#        – core – limits the core file size (KB)
#        – data – max data size (KB)
#        – fsize – maximum filesize (KB)
#        – memlock – max locked-in-memory address space (KB)
#        – nofile – max number of open file descriptors
#        – rss – max resident set size (KB)
#        – stack – max stack size (KB)
#        – cpu – max CPU time (MIN)
#        – nproc – max number of processes
#        – as – address space limit (KB)
#        – maxlogins – max number of logins for this user
#        – maxsyslogins – max number of logins on the system
#        – priority – the priority to run user process with
#        – locks – max number of file locks the user can hold
#        – sigpending – max number of pending signals
#        – msgqueue – max memory used by POSIX message queues (bytes)
#        – nice – max nice priority allowed to raise to values: [-20, 19]
#        – rtprio – max realtime priority
#
#<domain>      <type>  <item>         <value>
#  
#*                          soft                        core                      0
#*                          hard                      rss                          10000
#@student       hard                      nproc                    20
#@faculty          soft                        nproc                    20
#@faculty          hard                      nproc                    50
#ftp                      hard                      nproc                    0
#@student        –                             maxlogins           4  
# End of file

Sonrası;

#Also note that configuration files in /etc/security/limits.d directory,
#which are read in alphabetical order, override the settings in this
#file in case the domain is the same or more specific.
#That means for example that setting a limit for wildcard domain here
#can be overriden with a wildcard setting in a config file in the
#subdirectory, but a user specific setting here can be overriden only
#with a user specific setting in the subdirectory.
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        – a user name
#        – a group name, with @group syntax
#        – the wildcard *, for default entry
#        – the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#
#<type> can have the two values:
#        – “soft” for enforcing the soft limits
#        – “hard” for enforcing hard limits
#
#<item> can be one of the following:
#        – core – limits the core file size (KB)
#        – data – max data size (KB)
#        – fsize – maximum filesize (KB)
#        – memlock – max locked-in-memory address space (KB)
#        – nofile – max number of open file descriptors
#        – rss – max resident set size (KB)
#        – stack – max stack size (KB)
#        – cpu – max CPU time (MIN)
#        – nproc – max number of processes
#        – as – address space limit (KB)
#        – maxlogins – max number of logins for this user
#        – maxsyslogins – max number of logins on the system
#        – priority – the priority to run user process with
#        – locks – max number of file locks the user can hold
#        – sigpending – max number of pending signals
#        – msgqueue – max memory used by POSIX message queues (bytes)
#        – nice – max nice priority allowed to raise to values: [-20, 19]
        – rtprio – max realtime priority
#
#<domain>      <type>  <item>         <value>
#  
#*                          soft                        core                      0
#*                          hard                      rss                          10000
#@student       hard                      nproc                    20
#@faculty          soft                        nproc                    20
#@faculty          hard                      nproc                    50
#ftp                      hard                      nproc                    0
#@student        –                             maxlogins           4
nexus                  –       nofile                   65536  
# End of file

# Nexus servisinin oluşturulması;

Systemd servisler dosyası içerisinde “/etc/systemd/system” içinde “nexus.service” oluşturunuz.

vi /etc/systemd/system/nexus.service

Oluşturduğunuz “nexus.service” dosya içerisine aşağıdaki satırları kopyalayınız.

[Unit]
Description=Nexus
Service After=syslog.target network.target  

[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Group=nexus
Restart=on-failure  

[Install]
WantedBy=multi-user.target

Systemctl’ yi yeniden yükleyiniz.

systemctl daemon-reload

Nexus’un servisini etkinleştiriniz ve başlatınız.

systemctl start nexus.service
systemctl enable nexus.service
systemctl status nexus.service

Nexus’a ait log dosyalarını kontrol ediniz. Log dosyası nexus servisi başladıktan sonra oluşacaktır.

tail -f /opt/nexusdata/nexus3/log/nexus.log

Nexus’un kullanmış olduğu TCP 8081 servis portlarını kontrol ediniz.

netstat -tunlp | grep 8081

# Ngnix Kurulumu

Epel repository kurunuz.

yum install -y epel-release

Repository’leri listeleyeiniz.

yum repolist

Ngnix’i paketlerinin kurulumunu başlatınız.

yum install -y nginx

Ngnix servisinin etkinleştirilmesi ve başlatılması

systemctl enable nginx
systemctl start nginx
systemctl status nginx

Nginx için SELinux politikasını yapılandırınız.

setsebool -P httpd_can_network_connect 1

Ngnix kurulumu tamamlandıktan sonra sunucu ip adresi yada host adı üzerinden test sayfasını kontrol ediniz.

Ngnix’de Nesus için yönlendirmenin tanımlanması;

Ngnix konfig dosyasını text editörü ile açınız.

vi /etc/nginx/nginx.conf

Location satırının altına aşağıdaki satırları ekleyiniz.

location / {              
    
proxy_pass “http://127.0.0.1:8081”;                
proxy_set_header        Host $host;                
proxy_set_header        X-Real-IP $remote_addr;               
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;               proxy_set_header        X-Forwarded-Proto $scheme;
proxy_set_header        X-Forwarded-Ssl on;             
proxy_read_timeout      300;               
proxy_connect_timeout   300;    
}

Öncesi;

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/ #   * Official Russian Documentation: http://nginx.org/ru/docs/   user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid;   # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf;   events {     worker_connections 1024; }   http {     log_format  main  ‘$remote_addr – $remote_user [$time_local] “$request” ‘                       ‘$status $body_bytes_sent “$http_referer” ‘                       ‘”$http_user_agent” “$http_x_forwarded_for”‘;       access_log  /var/log/nginx/access.log  main;       sendfile            on;     tcp_nopush          on;     tcp_nodelay         on;     keepalive_timeout   65;     types_hash_max_size 2048;       include             /etc/nginx/mime.types;     default_type        application/octet-stream;       # Load modular configuration files from the /etc/nginx/conf.d directory.     # See http://nginx.org/en/docs/ngx_core_module.html#include     # for more information.     include /etc/nginx/conf.d/*.conf;       server {         listen       80 default_server;         listen       [::]:80 default_server;         server_name  _;         root         /usr/share/nginx/html;           # Load configuration files for the default server block.         include /etc/nginx/default.d/*.conf;           location / {         }           error_page 404 /404.html;             location = /40x.html {         }           error_page 500 502 503 504 /50x.html;             location = /50x.html {         }     }   # Settings for a TLS enabled server. # #    server { #        listen       443 ssl http2 default_server;

Sonrası;

      include             /etc/nginx/mime.types;     default_type        application/octet-stream;       # Load modular configuration files from the /etc/nginx/conf.d directory.     # See http://nginx.org/en/docs/ngx_core_module.html#include     # for more information.     include /etc/nginx/conf.d/*.conf;       server {         listen       80 default_server;         listen       [::]:80 default_server;         server_name  _;         root         /usr/share/nginx/html;           # Load configuration files for the default server block.         include /etc/nginx/default.d/*.conf;           location / {                        proxy_pass “http://127.0.0.1:8081”;                      prxy_set_header        Host $host;                      proxy_set_header        X-Real-IP $remote_addr;                      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;                      proxy_set_header        X-Forwarded-Proto $scheme;                      proxy_set_header        X-Forwarded-Ssl on;                      proxy_read_timeout      300;                      proxy_connect_timeout   300;           }           error_page 404 /404.html;             location = /40x.html {         }           error_page 500 502 503 504 /50x.html;             location = /50x.html {         }     }   # Settings for a TLS enabled server. # #    server { #        listen       443 ssl http2 default_server; #        listen       [::]:443 ssl http2 default_server; #        server_name  _; #        root         /usr/share/nginx/html; # #        ssl_certificate “/etc/pki/nginx/server.crt”; #        ssl_certificate_key “/etc/pki/nginx/private/server.key”; #        ssl_session_cache shared:SSL:1m; #        ssl_session_timeout  10m; #        ssl_ciphers PROFILE=SYSTEM; #        ssl_prefer_server_ciphers on; # #        # Load configuration files for the default server block. #        include /etc/nginx/default.d/*.conf; # #        location / { #        } # #        error_page 404 /404.html; #            location = /40x.html {

Yönlendirme bilgileri tanımlandıktan sonra nginx yapılandırmasını kontrol etmek için aşağıdaki komutu kullanabilirsiniz.

nginx -t

Nginx servisini yeniden başlatınız.

systemctl restart nginx

Nexus admin hesabı parolası erişimi için aşağıdaki komutu çalıştırınız.

cat /opt/nexusdata/nexus3/admin.password

Web tarayınız’dan https bağlantısını kullanarak ile erişimi kontrol ediniz.

İlk oturum açtıktan sonra, aşağıda gösterildiği gibi benzer bir pencere görmelisiniz.

Bu adımda admin kullanıcısı için yeni bir şifre tanımlanır.

Configure Anonymous Access” adımında penceresini görmelisiniz. Güvenlik nedeniyle anonim erişimi etkinleştirmeyiniz. Bu işlem için “Disable anonymous access” seçilir.

Next” butonuna tıklayınız ve yapılandırma sihirbazını kapatınız.