Come installare e configurare CyberPanel sul server CentOS 7
Usi un sistema diverso? Introduzione CyberPanel è uno dei primi pannelli di controllo sul mercato che è sia open source che utilizza OpenLiteSpeed. Che cosa
L'integrazione continua è una pratica di sviluppo software DevOps che consente agli sviluppatori di unire frequentemente il codice modificato nel repository condiviso più volte al giorno. Dopo ogni unione, vengono eseguiti build e test automatici per rilevare problemi nel codice. Consente agli sviluppatori di trovare e risolvere rapidamente gli errori per migliorare la qualità del software e fornire la consegna continua del software. Passare avanti e indietro da Concourse è molto semplice in quanto mantiene tutta la sua configurazione in file dichiarativi che possono essere controllati nel controllo della versione. Fornisce inoltre un'interfaccia utente Web che visualizza le informazioni sulla build in modo interattivo.
Assicurati di sostituire tutte le occorrenze di 192.0.2.1
e ci.example.com
con il tuo attuale indirizzo IP pubblico Vultr e il nome di dominio effettivo.
Aggiorna il tuo sistema di base usando la guida Come aggiornare CentOS 7 . Dopo aver aggiornato il sistema, procedere con l'installazione di PostgreSQL.
PostgreSQL è un sistema di database relazionale di oggetti. Concourse memorizza i dati della pipeline in un database PostgreSQL. Aggiungi il repository 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
Installa il server di database PostgreSQL.
sudo yum -y install postgresql96-server postgresql96-contrib
Inizializza il database.
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
initdb
crea un nuovo cluster di database PostgreSQL, che è una raccolta di database gestiti da una singola istanza del server. Modifica il pg_hba.conf
file per abilitare l'autenticazione basata su MD5.
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
Individuare le seguenti righe e modificare i valori peer
e ident
nella METHOD
colonna trust
e md5
, rispettivamente.
# 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
Una volta aggiornata, la configurazione dovrebbe apparire così.
# 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
Avviare il server PostgreSQL e abilitarlo ad avviarsi automaticamente all'avvio.
sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6
Cambia la password per l'utente PostgreSQL predefinito.
sudo passwd postgres
Accedi come utente PostgreSQL:
sudo su - postgres
Crea un nuovo utente PostgreSQL per Concourse CI.
createuser concourse
Nota : l'utente PostgreSQL predefinito può essere utilizzato per l'autenticazione del database, ma si consiglia di utilizzare un utente dedicato per l'autenticazione del database Concourse in una configurazione di produzione.
PostgreSQL fornisce una shell per eseguire query sul database. Passa alla shell PostgreSQL eseguendo:
psql
Impostare una password per l'utente del database Concourse appena creato.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Importante : sostituire DBPassword
con una password complessa. Prendi nota della password poiché sarà richiesta più avanti nel tutorial.
Crea un nuovo database per Concourse.
CREATE DATABASE concourse OWNER concourse;
Esci dalla psql
shell.
\q
Passa all'utente sudo dell'utente postgres corrente.
exit
Scarica l'ultima versione dell'eseguibile di Concourse e memorizzala in /usr/bin
modo che possa essere eseguita direttamente. L'ultima versione dei binari Concourse e Fly è disponibile nella pagina di download di Concourse . Le nuove versioni sono molto frequenti. Sostituisci il link in basso con il nuovo link per la versione più recente.
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/concourse_linux_amd64 -O /usr/bin/concourse
Allo stesso modo, scarica l'ultima versione dell'eseguibile fly e memorizzala in /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/fly_linux_amd64 -O /usr/bin/fly
Fly è l'interfaccia della riga di comando per connettersi all'API ATC di Concourse CI. Fly è disponibile per più piattaforme come Linux, Windows e MacOS.
Assegna l'autorizzazione di esecuzione ai file scaricati concourse
e fly
binari.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Controlla se Concourse e Fly funzionano correttamente controllandone la versione.
concourse -version
fly -version
Le coppie di chiavi RSA forniscono un modo per crittografare la comunicazione tra i componenti del Concourse.
Perché Concourse funzioni, devono essere generate almeno tre coppie di chiavi. Per crittografare i dati della sessione, generare a session_signing_key
. Questa chiave verrà utilizzata anche da TSA per firmare le richieste che invia all'ATC. Per proteggere il server SSH TSA, generare a tsa_host_key
. Infine, genera un worker_key
per ogni lavoratore.
Creare una nuova directory per archiviare le chiavi e la configurazione relative a Concourse CI.
sudo mkdir /opt/concourse
Genera le chiavi richieste.
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
Autorizzare la chiave pubblica dei lavoratori copiandone il contenuto nel authorized_worker_keys
file:
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse fornisce due componenti separati che devono essere avviati, il web e il lavoratore. Avvia il Web Concourse.
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
Modificare il nome utente e la password del basic-auth
se desiderato. Assicurarsi che il percorso dei file delle chiavi sia corretto e assicurarsi che sia fornito il valore corretto per nome utente e password nella configurazione del database PostgreSQL.
Nota : ATC ascolterà la porta predefinita 8080
e TSA ascolterà la porta 2222
. Se non si desidera l'autenticazione, passare l' --no-really-i-dont-want-any-auth
opzione dopo aver rimosso le opzioni di autenticazione di base.
Una volta avviato il web server, dovrebbe essere visualizzato il seguente output.
{"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"}}
Arrestare il server per ora, poiché è ancora necessario configurare alcune altre cose.
Avviare 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
Il comando sopra presupporrà che TSA sia in esecuzione su localhost e ascolti la porta predefinita 2222
.
Sebbene Concourse web e worker possano essere avviati facilmente utilizzando i comandi precedenti, si consiglia di utilizzare Systemd per gestire il server.
L'uso del servizio Systemd per la gestione dell'applicazione garantisce che l'applicazione venga avviata automaticamente in caso di errori e all'avvio. Il server Concourse non accetta i dati da nessun file di configurazione, ma può accedere ai dati dalle variabili di ambiente. Invece di impostare le variabili di ambiente globali, creare un nuovo file per archiviare le variabili di ambiente e quindi passare le variabili all'IC Concourse utilizzando il servizio Systemd.
Crea un nuovo file di ambiente per Concourse web.
sudo nano /opt/concourse/web.env
Popolare il 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
Modificare il nome utente e la password del BASIC_AUTH
se desiderato. Assicurarsi che il percorso dei file delle chiavi sia corretto e assicurarsi che sia fornito il valore corretto per nome utente e password nella configurazione del database PostgreSQL.
Allo stesso modo, creare un file di ambiente per il lavoratore.
sudo nano /opt/concourse/worker.env
Popolare il 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
Poiché i file di ambiente contengono nome utente e password, modificane le autorizzazioni in modo che non possano accedervi da altri utenti.
sudo chmod 600 /opt/concourse/*.env
Ora crea un nuovo utente per Concourse per eseguire l'ambiente web. Ciò garantirà che il server Web sia in esecuzione in un ambiente isolato.
sudo adduser --system concourse
Assegnare all'utente dell'atrio la proprietà della directory del file Concourse CI.
sudo chown -R concourse:concourse /opt/concourse
Creare un nuovo file di servizio systemd per il servizio Web Concourse.
sudo nano /etc/systemd/system/concourse-web.service
Popolare il 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
Salva e chiudi il file. Creare un nuovo file di servizio per il servizio di lavoratore Concourse.
sudo nano /etc/systemd/system/concourse-worker.service
Popolare il 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
Il servizio Web e di lavoro ora può essere avviato direttamente eseguendo:
sudo systemctl start concourse-web concourse-worker
Per abilitare l'avvio automatico del processo di lavoro e Web all'avvio, eseguire:
sudo systemctl enable concourse-worker concourse-web
Per verificare lo stato dei servizi, eseguire:
sudo systemctl status concourse-worker concourse-web
Se il servizio non è avviato o nello FAILED
stato, rimuovere la cache dalla /tmp
directory.
sudo rm -rf /tmp/*
Riavvia i servizi.
sudo systemctl restart concourse-worker concourse-web
Si noti che questa volta i servizi sono stati avviati correttamente. L'output al momento della verifica dello stato dei servizi dovrebbe essere simile.
[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.
Regola il firewall per consentire la porta 8080, su cui è in esecuzione ATS e la porta 2222, su cui è in esecuzione TSA.
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --reload
Una volta avviato il server, è possibile accedere all'interfaccia Web di Concourse CI accedendo a http://192.0.2.1:8080
qualsiasi browser. Accedi utilizzando il nome utente e la password forniti nel file di ambiente.
Per connettersi al server tramite Fly, eseguire:
fly -t my-ci login -c http://192.0.2.1:8080
Il comando precedente viene utilizzato per l'accesso iniziale al server. -t
viene utilizzato per fornire un nome di destinazione. sostituire my-ci
con qualsiasi nome di destinazione desiderato. Il comando sopra accederà al team predefinito main
. Chiederà il nome utente e la password forniti nel file di ambiente.
L'output sarà simile al seguente.
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
L'accesso target verrà salvato per un giorno. Successivamente, scadrà.
Per disconnettersi immediatamente.
fly -t my-ci logout
fly può essere utilizzato per accedere al server al di fuori della rete, ma solo se il server ha un indirizzo IP pubblico ed è accessibile dall'esterno della rete. Il file binario Windows o MacOS può essere scaricato dal sito di download o dall'interfaccia utente Web del server.
Gli accessi e altre informazioni inviate tramite l'interfaccia utente Web al server Concourse non sono protetti. La connessione non è crittografata. Un proxy inverso Nginx può essere impostato con un SSL gratuito Let's Encrypt.
Installare il server Web Nginx e Certbot, che è l'applicazione client per Let's Encrypt CA.
sudo yum -y install certbot-nginx nginx
Avvia e abilita Nginx ad avviarsi automaticamente all'avvio:
sudo systemctl start nginx
sudo systemctl enable nginx
Prima di poter effettuare una richiesta per i certificati, è necessario abilitare attraverso il firewall le porte 80 e 443 o i servizi HTTP e HTTPS standard. Certbot controllerà l'autorità di dominio prima di emettere certificati.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
La porta 8080 non deve più essere consentita attraverso il firewall poiché Concourse verrà ora eseguito sulla porta HTTPS standard. Rimuovere la voce del firewall per consentire la porta 8080.
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload
Nota
Per ottenere certificati da Let's Encrypt CA, il dominio per il quale devono essere generati i certificati deve essere puntato verso il server. In caso contrario, apportare le modifiche necessarie ai record DNS del dominio e attendere la propagazione del DNS prima di effettuare nuovamente la richiesta di certificato. Certbot controlla l'autorità di dominio prima di fornire i certificati.
Genera i certificati SSL.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com
È probabile che i certificati generati siano archiviati nella /etc/letsencrypt/live/ci.example.com/
directory. Il certificato SSL verrà archiviato come fullchain.pem
e la chiave privata verrà archiviata come privkey.pem
.
Let's Encrypt certificati scadranno tra 90 giorni, quindi si consiglia il rinnovo automatico per i certificati è impostato usando cronjobs. Cron è un servizio di sistema che viene utilizzato per eseguire attività periodiche.
Apri il file di lavoro cron.
sudo crontab -e
Aggiungi la seguente riga alla fine del file.
30 5 * * 1 /usr/bin/certbot renew --quiet
Il processo cron sopra riportato verrà eseguito ogni lunedì alle 5:30. Se il certificato è in scadenza, verrà automaticamente rinnovato.
Crea un nuovo host virtuale.
sudo nano /etc/nginx/conf.d/concourse-ssl.conf
Popolare il file.
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;
}
}
Nota : sostituire ci.example.com
con il dominio effettivo.
Modifica il file Environment creato per l'atrio Web.
sudo nano /opt/concourse/web.env
Modifica il valore di CONCOURSE_EXTERNAL_URL
e aggiungi anche altre due righe alla fine del file.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Salvare il file e riavviare Concourse Web, Worker e Nginx web server:
sudo systemctl restart concourse-worker concourse-web nginx
Tutti i dati inviati da e verso il browser sono ora protetti con crittografie SSL.
Usi un sistema diverso? Introduzione CyberPanel è uno dei primi pannelli di controllo sul mercato che è sia open source che utilizza OpenLiteSpeed. Che cosa
Introduzione Sensu è una soluzione di monitoraggio gratuita e open source che può essere utilizzata per monitorare server, applicazioni e vari servizi di sistema. Sensu i
Usi un sistema diverso? Apache OpenMeetings è unapplicazione per conferenze Web open source. È scritto in Java e supporta più server di database. io
Luso di un utente sudo per accedere a un server ed eseguire comandi a livello di root è una pratica molto comune tra Linux e Unix Systems Administrator. Luso di un sud
Usando un sistema diverso? RabbitMQ è un broker di messaggi open source ampiamente utilizzato scritto nel linguaggio di programmazione Erlang. Come middleware orientato ai messaggi
Usi un sistema diverso? RTMP è ottimo per pubblicare contenuti live. Quando RTMP è associato a FFmpeg, i flussi possono essere convertiti in varie qualità. Vultr i
TaskBoard è unapp Web di gestione del tempo gratuita e open source. Ispirato da Kanban, TaskBoard può aiutarti a tenere traccia delle cose che devono essere fatte in a
Usi un sistema diverso? Gradle è un set di strumenti di automazione di build gratuito e open source basato sui concetti di Apache Ant e Apache Maven. Gradle fornisce
Usi un sistema diverso? In questa guida, vedremo come configurare un server FTP (ProFTPd) per trasferire file tra il tuo PC e il tuo server.
Usando un sistema diverso? Netdata è una stella nascente nel campo del monitoraggio delle metriche di sistema in tempo reale. Rispetto ad altri strumenti dello stesso tipo, Netdata:
Usi un sistema diverso? Apache Cassandra è un sistema di gestione di database NoSQL gratuito e open source progettato per fornire scalabilità, alta
In questo tutorial imparerai bene come configurare un server multiplayer Just Cause 2. Prerequisiti Assicurarsi che il sistema sia completamente aggiornato prima di iniziare
Usando un sistema diverso? In questo tutorial, spiegherò come impostare un server Starbound su CentOS 7. Prerequisiti Devi possedere questo gioco su di te
ZNC è un buttafuori IRC gratuito e open source che rimane permanentemente connesso a una rete in modo che i client possano ricevere messaggi inviati mentre sono offline. Thi
Django è un popolare framework Python per la scrittura di applicazioni Web. Con Django, puoi creare applicazioni più velocemente, senza reinventare la ruota. Se vuoi
Dopo aver modificato la porta SSH, configurato il port knocking e apportato altre modifiche per la sicurezza SSH, cè forse un altro modo per proteggerti
Introduzione MyCLI è un client da riga di comando per MySQL e MariaDB che ti consente di completare automaticamente e ti aiuta con la sintassi dei tuoi comandi SQL. MyCL
Usi un sistema diverso? Directus 6.4 CMS è un sistema di gestione dei contenuti senza testa (CMS) potente e flessibile, gratuito e open source che fornisce agli sviluppatori
Cosa ti serve Un VPS Vultr con almeno 1 GB di RAM. Accesso SSH (con privilegi di root / amministrativi). Passaggio 1: installare prima BungeeCord
MaraDNS è un programma server DNS open source leggero ma robusto. Rispetto ad altre applicazioni dello stesso tipo, come ISC BIND, PowerDNS e djbdns
Gli attacchi ransomware sono in aumento, ma l'intelligenza artificiale può aiutare ad affrontare l'ultimo virus informatico? L'intelligenza artificiale è la risposta? Leggi qui sai è AI boone o bane
ReactOS, un sistema operativo open source e gratuito è qui con l'ultima versione. Può essere sufficiente alle esigenze degli utenti Windows moderni e abbattere Microsoft? Scopriamo di più su questo vecchio stile, ma un'esperienza del sistema operativo più recente.
Whatsapp ha finalmente lanciato l'app desktop per utenti Mac e Windows. Ora puoi accedere facilmente a Whatsapp da Windows o Mac. Disponibile per Windows 8+ e Mac OS 10.9+
Leggi questo per sapere come l'intelligenza artificiale sta diventando popolare tra le aziende di piccole dimensioni e come sta aumentando le probabilità di farle crescere e dare un vantaggio ai loro concorrenti.
Recentemente Apple ha rilasciato macOS Catalina 10.15.4 un aggiornamento supplementare per risolvere i problemi, ma sembra che l'aggiornamento stia causando più problemi che portano al bricking delle macchine mac. Leggi questo articolo per saperne di più
13 strumenti commerciali per l'estrazione dei dati dai Big Data
Il nostro computer memorizza tutti i dati in un modo organizzato noto come file system di journaling. È un metodo efficiente che consente al computer di cercare e visualizzare i file non appena si preme search.https://wethegeek.com/?p=94116&preview=true
Man mano che la scienza si evolve a un ritmo rapido, assumendo gran parte dei nostri sforzi, aumentano anche i rischi di sottoporci a una singolarità inspiegabile. Leggi, cosa potrebbe significare per noi la singolarità.
Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1
L'intelligenza artificiale nell'assistenza sanitaria ha compiuto grandi passi avanti negli ultimi decenni. Pertanto, il futuro dell'IA in sanità continua a crescere giorno dopo giorno.