Krijimi i një rrjeti të serverëve Minecraft me BungeeCord në Debian 8, Debian 9 ose CentOS 7
Çfarë ju nevojitet një Vultr VPS me të paktën 1 GB RAM. Qasje SSH (me privilegje root/administrative). Hapi 1: Instalimi i BungeeCord Gjërat e para
Integrimi i vazhdueshëm është një praktikë e zhvillimit të softuerit DevOps e cila u mundëson zhvilluesve të bashkojnë shpesh kodin e modifikuar në depon e përbashkët shumë herë në ditë. Pas çdo bashkimi, kryhen ndërtime dhe teste automatike për të zbuluar problemet në kod. Ai u mundëson zhvilluesve të gjejnë dhe zgjidhin gabimet shpejt për të përmirësuar cilësinë e softuerit dhe për të ofruar shpërndarje të vazhdueshme të softuerit. Kalimi andej-këtej nga Concourse është shumë i lehtë pasi ruan të gjithë konfigurimin e tij në skedarë deklarativë që mund të kontrollohen në kontrollin e versionit. Ai gjithashtu siguron një ndërfaqe të përdoruesit në ueb që shfaq informacionin e ndërtimit në mënyrë interaktive.
Sigurohuni që të zëvendësoni të gjitha dukuritë 192.0.2.1
dhe ci.example.com
me adresën tuaj aktuale IP publike Vultr dhe emrin aktual të domenit.
Përditësoni sistemin tuaj bazë duke përdorur udhëzuesin Si të përditësoni CentOS 7 . Pasi sistemi juaj të jetë përditësuar, vazhdoni të instaloni PostgreSQL.
PostgreSQL është një sistem bazë të dhënash relacionale objektesh. Concourse ruan të dhënat e tij të tubacionit në një bazë të dhënash PostgreSQL. Shtoni depon e PostgreSQL.
sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
Instaloni serverin e bazës së të dhënave PostgreSQL.
sudo yum -y install postgresql96-server postgresql96-contrib
Inicializoni bazën e të dhënave.
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
initdb
krijon një grup të ri të bazës së të dhënave PostgreSQL, i cili është një koleksion bazash të dhënash që menaxhohen nga një shembull i vetëm server. Ndryshoni pg_hba.conf
skedarin për të aktivizuar vërtetimin e bazuar në MD5.
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
Gjeni rreshtat e mëposhtëm dhe ndryshoni vlerat peer
dhe ident
në METHOD
kolonën në trust
dhe md5
, përkatësisht.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
Pasi të përditësohet, konfigurimi duhet të duket kështu.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Nisni serverin PostgreSQL dhe aktivizoni atë të fillojë automatikisht në kohën e nisjes.
sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6
Ndryshoni fjalëkalimin për përdoruesin e paracaktuar të PostgreSQL.
sudo passwd postgres
Identifikohu si përdorues i PostgreSQL:
sudo su - postgres
Krijo një përdorues të ri PostgreSQL për Concourse CI.
createuser concourse
Shënim : Përdoruesi i parazgjedhur i PostgreSQL mund të përdoret për vërtetimin e bazës së të dhënave, por rekomandohet përdorimi i një përdoruesi të dedikuar për vërtetimin e bazës së të dhënave Concourse në një konfigurim prodhimi.
PostgreSQL ofron një guaskë për të ekzekutuar pyetje në bazën e të dhënave. Kaloni në guaskën PostgreSQL duke ekzekutuar:
psql
Vendosni një fjalëkalim për përdoruesin e sapokrijuar të bazës së të dhënave të Concourse.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
E rëndësishme : Zëvendësojeni DBPassword
me një fjalëkalim të fortë. Shënoni fjalëkalimin pasi do të kërkohet më vonë në tutorial.
Krijo një bazë të dhënash të re për Concourse.
CREATE DATABASE concourse OWNER concourse;
Dilni nga psql
guaska.
\q
Kalo te përdoruesi sudo nga përdoruesi aktual i postgres.
exit
Shkarkoni versionin më të fundit të ekzekutueshëm Concourse dhe ruajeni në /usr/bin
mënyrë që të mund të ekzekutohet drejtpërdrejt. Versioni më i fundit i binarëve Concourse dhe Fly mund të gjendet në faqen e shkarkimit të Concourse . Publikimet e reja janë shumë të shpeshta. Zëvendësoni lidhjen e mëposhtme me lidhjen e re për versionin më të fundit.
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/concourse_linux_amd64 -O /usr/bin/concourse
Në mënyrë të ngjashme, shkarkoni versionin më të fundit të skedarit të ekzekutueshëm dhe ruajeni në /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/fly_linux_amd64 -O /usr/bin/fly
Fly është ndërfaqja e linjës së komandës për t'u lidhur me ATC API të Concourse CI. Fly është i disponueshëm për platforma të shumta si Linux, Windows dhe MacOS.
Cakto lejen e ekzekutimit për skedarët e shkarkuar concourse
dhe fly
binare.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Kontrolloni nëse Concourse and Fly po funksionojnë siç duhet duke kontrolluar versionin e tyre.
concourse -version
fly -version
Çiftet e çelësave RSA ofrojnë një mënyrë për të koduar komunikimin midis komponentëve të Konkursit.
Që Concourse të funksionojë, duhet të gjenerohen të paktën tre palë çelësa. Për të enkriptuar të dhënat e sesionit, krijoni një session_signing_key
. Ky çelës do të përdoret gjithashtu nga TSA për të nënshkruar kërkesat që i bën ATC-së. Për të siguruar serverin TSA SSH, gjeneroni një tsa_host_key
. Së fundi, krijoni një worker_key
për çdo punëtor.
Krijo një direktori të re për të ruajtur çelësat dhe konfigurimin në lidhje me Concourse CI.
sudo mkdir /opt/concourse
Gjeneroni çelësat e kërkuar.
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key
Autorizoni çelësin publik të punëtorëve duke kopjuar përmbajtjen e tij në authorized_worker_keys
skedar:
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse ofron dy komponentë të veçantë që duhen nisur, web-i dhe punëtori. Filloni uebfaqen e Konkursit.
sudo concourse web \
--basic-auth-username admin \
--basic-auth-password StrongPass \
--session-signing-key /opt/concourse/session_signing_key \
--tsa-host-key /opt/concourse/tsa_host_key \
--tsa-authorized-keys /opt/concourse/authorized_worker_keys \
--postgres-user=concourse \
--postgres-password=DBPassword \
--postgres-database=concourse \
--external-url http://192.0.2.1:8080
Ndryshoni emrin e përdoruesit dhe fjalëkalimin basic-auth
nëse dëshironi. Sigurohuni që shtegu i skedarëve kyç është i saktë dhe sigurohuni që të jepet vlera e saktë për emrin e përdoruesit dhe fjalëkalimin në konfigurimin e bazës së të dhënave PostgreSQL.
Shënim : ATC do të dëgjojë portin e paracaktuar 8080
dhe TSA do të dëgjojë portin 2222
. Nëse vërtetimi nuk është i dëshiruar, kaloni --no-really-i-dont-want-any-auth
opsionin pasi të keni hequr opsionet bazë të vërtetimit .
Once the web server is started, the following output should be displayed.
{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}
Stop the server for now, as a few more things still must be setup.
Start the Concourse CI Worker.
sudo concourse worker \
--work-dir /opt/concourse/worker \
--tsa-host 127.0.0.1 \
--tsa-public-key /opt/concourse/tsa_host_key.pub \
--tsa-worker-private-key /opt/concourse/worker_key
The above command will assume that the TSA is running on localhost and listening to the default port 2222
.
Though the Concourse web and worker can be started easily using the commands above, it is recommended to use Systemd to manage the server.
Using Systemd service for managing the application ensures that the application is automatically started on failures and at boot time. The Concourse server does not take data from any configuration file, but it can access the data from environment variables. Instead of setting global environment variables, create a new file to store the environment variables and then pass the variables to the Concourse CI using the Systemd service.
Create a new environment file for Concourse web.
sudo nano /opt/concourse/web.env
Populate the file.
CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys
CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse
CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080
Change the username and password of the BASIC_AUTH
if desired. Make sure that the path to the key files are correct and make sure that the correct value for username and password in the PostgreSQL database configuration is provided.
Similarly, create an environment file for the worker.
sudo nano /opt/concourse/worker.env
Populate the file.
CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1
As the environment files contain username and passwords, change its permissions so that it cannot be accessed by other users.
sudo chmod 600 /opt/concourse/*.env
Now create a new user for Concourse to run the web environment. This will ensure that the web server is running in an isolated environment.
sudo adduser --system concourse
Give the concourse user ownership over Concourse CI file's directory.
sudo chown -R concourse:concourse /opt/concourse
Create a new systemd service file for the Concourse web service.
sudo nano /etc/systemd/system/concourse-web.service
Populate the file.
[Unit]
Description=Concourse CI web server
After=postgresql-9.6.service
[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web
[Install]
WantedBy=multi-user.target
Save and close the file. Create a new service file for the Concourse worker service.
sudo nano /etc/systemd/system/concourse-worker.service
Populate the file.
[Unit]
Description=Concourse CI worker process
After=concourse-web.service
[Service]
Type=simple
User=root
Group=root
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker
[Install]
WantedBy=multi-user.target
The web and worker service can now be started directly by running:
sudo systemctl start concourse-web concourse-worker
To enable the worker and web process to automatically start at boot time, run:
sudo systemctl enable concourse-worker concourse-web
To check the status of services, run:
sudo systemctl status concourse-worker concourse-web
If the service is not started, or in the FAILED
state, remove the cache from the /tmp
directory.
sudo rm -rf /tmp/*
Restart the services.
sudo systemctl restart concourse-worker concourse-web
Notice that this time the services have started correctly. The output upon verifying the status of the services should be simil.
[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3037 (concourse)
CGroup: /system.slice/concourse-worker.service
└─3037 /usr/bin/concourse worker
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...
● concourse-web.service - Concourse CI web server
Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3036 (concourse)
CGroup: /system.slice/concourse-web.service
└─3036 /usr/bin/concourse web
Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.
Adjust your firewall to allow port 8080, on which ATS is running and port 2222, on which TSA is running.
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --reload
Once the server is started, the web interface of the Concourse CI can be accessed by going to http://192.0.2.1:8080
in any browser. Log in using the username and password provided in the environment file.
To connect to the server using Fly, run:
fly -t my-ci login -c http://192.0.2.1:8080
The above command is used for initial login to the server. -t
is used to provide a target name. replace my-ci
with any desired target name. The above command will log in to the default team main
. It will ask for the username and password provided in the environment file.
The output will look like the following.
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
The target login will be saved for a day. After that, it will expire.
To log out immediately.
fly -t my-ci logout
fly can be used to login to the server outside of the network, but only if the server has a public IP address and it is accessible from outside the network. The Windows or MacOS binary can be downloaded from the download site or from the web UI of the server.
Logins, and other information sent through the web UI to the Concourse server is not secured. The connection is not encrypted. An Nginx reverse proxy can be set up with a Let's Encrypt free SSL.
Install the Nginx web server and Certbot, which is the client application for the Let's Encrypt CA.
sudo yum -y install certbot-nginx nginx
Start and enable Nginx to automatically start at boot time:
sudo systemctl start nginx
sudo systemctl enable nginx
Përpara se të bëhet një kërkesë për certifikatat, portet 80 dhe 443, ose shërbimet standarde HTTP dhe HTTPS, duhet të aktivizohen përmes murit të zjarrit. Certbot do të kontrollojë autoritetin e domenit përpara se të lëshojë certifikata.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
Porta 8080 nuk duhet të lejohet më përmes murit të zjarrit sepse Concourse tani do të ekzekutohet në portën standarde HTTPS. Hiqni hyrjen e murit të zjarrit për të lejuar portin 8080.
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload
shënim
To obtain certificates from Let's Encrypt CA, the domain for which the certificates are to be generated must be pointed towards the server. If not, make the necessary changes to the DNS records of the domain and wait for the DNS to propagate before making the certificate request again. Certbot checks the domain authority before providing the certificates.
Gjeneroni certifikatat SSL.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com
Certifikatat e krijuara ka të ngjarë të ruhen në /etc/letsencrypt/live/ci.example.com/
drejtori. Certifikata SSL do të ruhet si fullchain.pem
dhe çelësi privat do të ruhet si privkey.pem
.
Le të Enkriptojmë certifikatat skadojnë për 90 ditë, prandaj rekomandohet rinovimi automatik për certifikatat të konfigurohet duke përdorur cronjobs. Cron është një shërbim sistemi që përdoret për të ekzekutuar detyra periodike.
Hapni skedarin e punës cron.
sudo crontab -e
Shtoni rreshtin e mëposhtëm në fund të skedarit.
30 5 * * 1 /usr/bin/certbot renew --quiet
Puna e mësipërme do të funksionojë çdo të hënë në orën 5:30 të mëngjesit. Nëse certifikata duhet të skadojë, ajo do të rinovohet automatikisht.
Krijo një host të ri virtual.
sudo nano /etc/nginx/conf.d/concourse-ssl.conf
Plotësoni skedarin.
server {
listen 80;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name ci.example.com;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/concourse.access.log;
location / {
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_pass http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://ci.example.com;
}
}
Shënim : Zëvendësojeni ci.example.com
me domenin aktual.
Redaktoni skedarin e mjedisit të krijuar për web concourse.
sudo nano /opt/concourse/web.env
Ndryshoni vlerën e CONCOURSE_EXTERNAL_URL
dhe shtoni edhe dy rreshta të tjerë në fund të skedarit.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Ruani skedarin dhe rinisni serverin në internet Concourse Web, Worker dhe Nginx:
sudo systemctl restart concourse-worker concourse-web nginx
Të gjitha të dhënat e dërguara në dhe nga shfletuesi tani janë të siguruara me kriptime SSL.
Çfarë ju nevojitet një Vultr VPS me të paktën 1 GB RAM. Qasje SSH (me privilegje root/administrative). Hapi 1: Instalimi i BungeeCord Gjërat e para
Përdorimi i një sistemi të ndryshëm? Foreman është një mjet falas dhe me burim të hapur që ju ndihmon me konfigurimin dhe menaxhimin e serverëve fizikë dhe virtualë. Forema
Përdorimi i një sistemi të ndryshëm? Hyrje Integrimi i vazhdueshëm është një praktikë e zhvillimit të softuerit DevOps e cila u mundëson zhvilluesve të bashkojnë shpesh
Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.
A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.
Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.
Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.
Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…
Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.
Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.
Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.
Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.
Së fundmi Apple lëshoi macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë