So installieren Sie MODX Revolution auf einem CentOS 7 LAMP VPS
Verwenden Sie ein anderes System? MODX Revolution ist ein schnelles, flexibles, skalierbares, kostenloses und Open-Source-Content-Management-System (CMS) für Unternehmen, das i
Buildbot ist ein Open Source, Python-basiertes, kontinuierliches Integrationstool zur Automatisierung der Erstellung, des Testens und der Bereitstellung von Software. Buildbot besteht aus einem oder mehreren Buildbot-Mastern und mehreren Arbeitern. Buildbot Master oder Buildmaster hat die zentrale Steuerung des Systems. Es ist für die Verwaltung der Build-Umgebung und der Mitarbeiter verantwortlich und trifft alle Entscheidungen über das Senden von Jobs an die Mitarbeiter. Buildmaster erkennt Änderungen im Code-Repository und sendet die Befehle oder Jobs zur Ausführung an die Worker. Arbeiter führen die Jobs aus und geben das Ergebnis an den Buildmaster zurück. Buildmaster benachrichtigt die Entwickler dann über mehrere unterstützte Kanäle. In diesem Tutorial installieren wir Buildbot Master und Worker unter CentOS 7. Außerdem konfigurieren wir Authentifizierung und Nginx als gesicherten Reverse-Proxy.
In diesem Tutorial verwenden wir 192.168.1.1
als öffentliche IP-Adresse und ci.example.com
als Domainnamen, der auf die Vultr-Instanz verweist. Stellen Sie sicher, dass alle Vorkommen des Beispieldomänennamens und der IP-Adresse durch die tatsächliche ersetzt werden.
Aktualisieren Sie Ihr Basissystem mithilfe der Anleitung zum Aktualisieren von CentOS 7 . Fahren Sie nach der Aktualisierung Ihres Systems mit der Installation von PostgreSQL fort.
Installieren Sie Pip, einen Paketmanager für Python.
sudo yum -y install epel-release
sudo yum -y install python-pip gcc python-devel git
sudo pip install --upgrade pip
Buildbot unterstützt mehrere Arten von Datenbankservern wie MySQL, PostgreSQL und SQLite. In diesem Tutorial verwenden wir PostgreSQL, um den Buildbot-Datenbankserver zu hosten.
PostgreSQL ist ein objektrelationales Datenbanksystem, das für seine Stabilität und Geschwindigkeit bekannt ist. Das Standard- yum
Repository enthält eine alte Version von PostgreSQL. Fügen Sie daher das PostgreSQL-Repository hinzu.
sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm
Installieren Sie den PostgreSQL-Datenbankserver.
sudo yum -y install postgresql10-server postgresql10-contrib postgresql10
Initialisieren Sie die Datenbank.
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Starten Sie den PostgreSQL-Server und aktivieren Sie ihn beim Start automatisch.
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
Ändern Sie das Kennwort für den Standardbenutzer von PostgreSQL.
sudo passwd postgres
Melden Sie sich als PostgreSQL-Benutzer an.
sudo su - postgres
Erstellen Sie einen neuen PostgreSQL-Benutzer für Buildbot.
createuser bb_user
Sie können stattdessen einen beliebigen Benutzernamen verwenden bb_user
, wenn Sie dies bevorzugen. PostgreSQL bietet die psql
Shell zum Ausführen von Abfragen in der Datenbank. Wechseln Sie zur PostgreSQL-Shell.
psql
Legen Sie ein Passwort für den neu erstellten Benutzer fest.
ALTER USER bb_user WITH ENCRYPTED password 'DBPassword';
Durch DBPassword
ein sicheres Passwort ersetzen .
Erstellen Sie eine neue Datenbank für die Buildbot-Installation.
CREATE DATABASE buildbot OWNER bb_user;
Verlasse die psql
Shell.
\q
Wechseln Sie zum sudo
Benutzer.
exit
Bearbeiten Sie die pg_hba.conf
Datei, um die MD5-basierte Authentifizierung zu aktivieren.
sudo nano /var/lib/pgsql/10/data/pg_hba.conf
Finden Sie die folgenden Zeilen , und ändern Sie die Werte peer
und ident
in der METHOD
Spalte auf trust
und md5
sind.
# 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
Nach der Aktualisierung sieht die Konfiguration wie folgt aus.
# 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
Speichern Sie die Datei und beenden Sie den Editor. Installieren Sie den PostgreSQL-Datenbankadapter für Python.
sudo pip install psycopg2
Starten Sie PostgreSQL neu, damit die Änderungen wirksam werden.
sudo systemctl restart postgresql-10
Installieren Sie Buildbot mit Pip.
sudo pip install 'buildbot[bundle]' pyopenssl service_identity
Der obige Befehl wird installieren Buildbot zusammen mit buildbot-www
, buildbot-worker
und mehrere Web - Plugins wie buildbot-waterfall-view
.
Um sicherzustellen, dass Buildbot erfolgreich installiert wurde, können Sie dies überprüfen, indem Sie die Version von Buildbot überprüfen.
buildbot --version
Die Ausgabe sollte dem folgenden Text ähneln.
[user@vultr ~]$ buildbot --version
Buildbot version: 0.9.15.post1
Twisted version: 17.9.0
Ändern Sie Ihre Firewall-Regeln, um den Port zuzulassen 8010
. Buildbot verwendet diesen Port, um die Webanforderungen abzuhören.
sudo firewall-cmd --zone=public --add-port=8010/tcp --permanent
sudo firewall-cmd --reload
Erstellen Sie einen neuen nicht privilegierten Benutzer, um Buildbot-Master- und Worker-Prozesse auszuführen. Es wird nicht empfohlen, Buildbot-Masterdienste als root
Benutzer auszuführen .
sudo adduser buildbot
sudo passwd buildbot
Melden Sie sich als neu erstellter buildbot
Benutzer an.
sudo su - buildbot
Richten Sie den Buildbot-Master im /home/buildbot/master
Verzeichnis ein. Dieses Verzeichnis enthält die Konfigurations-, Status- und Protokolldateien jedes Builds.
buildbot create-master --db 'postgresql://bb_user:DBPassword@localhost/buildbot' ~/master
Stellen Sie sicher, dass Sie die Anmeldeinformationen des Datenbankbenutzers im obigen Befehl ersetzen.
Hinweis: Wenn Sie die SQLite-Datenbank anstelle von PostgreSQL verwenden möchten, lassen Sie die --db 'postgresql://bb_user:DBpassword@localhost/buildbot'
Option einfach weg . Die SQLite-Datenbank wird im selben Verzeichnis erstellt.
Mit dem obigen Befehl wird das ~/master
Verzeichnis zum Speichern der Buildmaster-Dateien erstellt. Außerdem werden die Daten in die PostgreSQL-Datenbank geschrieben. Sie erhalten die folgende Ausgabe.
[buildbot@vultr ~]$ buildbot create-master --db 'postgresql://bb_user:DBPassword@localhost/buildbot' ~/master
mkdir /home/buildbot/master
creating /home/buildbot/master/master.cfg.sample
creating database (postgresql://bb_user:DBPassword@localhost/buildbot)
buildmaster configured in /home/buildbot/master
Kopieren Sie die Beispielkonfigurationsdatei in eine Live-Konfigurationsdatei.
cp ~/master/master.cfg.sample ~/master/master.cfg
Bearbeiten Sie die Konfigurationsdatei.
nano ~/master/master.cfg
Suchen Sie die folgenden Zeilen.
c['workers'] = [worker.Worker("example-worker", "pass")]
...
c['builders'].append(
util.BuilderConfig(name="runtests",
workernames=["example-worker"],
factory=factory))
...
c['title'] = "Hello World CI"
c['titleURL'] = "https://buildbot.github.io/hello-world/"
...
c['buildbotURL'] = "http://localhost:8010/"
...
c['db'] = {
'db_url' : "postgresql://bb_user:DBpassword@localhost/buildbot",
}
Die obige Konfiguration enthält einen Eintrag für einen Beispielarbeiter. Wir werden den Beispieleintrag für den Worker ändern, auf dem wir ausgeführt werden localhost
. Ändern Sie das example-worker
in einen geeigneten Namen für den localhost
Arbeiter und ändern Sie das pass
in ein anderes Passwort. Notieren Sie sich den Namen und das Kennwort des Arbeitnehmers, da dies später im Lernprogramm erforderlich sein wird. Ändern Sie den Namen des Workers in der Liste der Builder. Ändern Sie den Namen der Anwendung und die Projekt-URL entsprechend Ihren Anforderungen.
Ändern Sie die Buildbot-URL von localhost
in Ihren tatsächlichen Domainnamen oder Ihre öffentliche IP-Adresse. Stellen Sie außerdem sicher, dass die Datenbankinformationen in der Konfigurationsdatei mit Ihren tatsächlichen Datenbankanmeldeinformationen übereinstimmen.
Fügen Sie am Ende der Datei hinzu c['buildbotNetUsageData'] = None
. Dieser Parameter deaktiviert das Senden der Softwareversionsinformationen und der Plugin-Verwendungsdetails an die Entwickler. Um jedoch das Senden der Verwendungsinformationen zu aktivieren, ändern Sie die Option in Full
.
Die Konfiguration sollte wie folgt aussehen.
c['workers'] = [worker.Worker("localhost-worker", "Password123")]
...
c['builders'].append(
util.BuilderConfig(name="runtests",
workernames=["localhost-worker"],
factory=factory))
...
c['title'] = "My Application CI"
c['titleURL'] = "https://example.com/my-app"
...
c['buildbotURL'] = "http://192.168.1.1:8010/"
...
c['db'] = {
'db_url' : "postgresql://bb_user:DBpassword@localhost/buildbot",
}
...
c['buildbotNetUsageData'] = None
Speichern Sie die Datei und beenden Sie den Editor. Überprüfen Sie die Konfigurationsdatei auf Fehler.
buildbot checkconfig ~/master
Wenn die Konfigurationsdatei keine Fehler enthält, wird die folgende Ausgabe angezeigt.
[buildbot@vultr ~]$ buildbot checkconfig ~/master
Config file is good!
Nachdem alles richtig konfiguriert ist, können Sie den Buildbot-Master starten.
buildbot start ~/master
Sie sehen die folgende Ausgabe.
[buildbot@vultr ~]$ buildbot start ~/master
Following twistd.log until startup finished..
The buildmaster appears to have (re)started correctly.
Nachdem der Buildbot-Master korrekt gestartet wurde, kann auf die Webbenutzeroberfläche unter zugegriffen werden http://192.168.1.1:8010
. Sie sollten die folgende Buildbot-Oberfläche sehen.
Da wir die Worker-Konfiguration bereits geändert haben ~/master/master.cfg
, können wir einen neuen Worker erstellen.
buildbot-worker create-worker ~/worker localhost localhost-worker Password123
Stellen Sie sicher, dass Sie genau den gleichen Arbeiternamen und das gleiche Kennwort wie in der ~/master/master.cfg
Datei angegeben verwenden. Wenn der Name oder das Kennwort des Arbeiters nicht übereinstimmen, kann der Arbeiter keine Verbindung zum Buildbot-Master herstellen. Nach erfolgreicher Ausführung wird die folgende Ausgabe angezeigt.
[buildbot@vultr ~]$ buildbot-worker create-worker ~/worker localhost example-worker pass
mkdir /home/buildbot/worker
mkdir /home/buildbot/worker/info
Creating info/admin, you need to edit it appropriately.
Creating info/host, you need to edit it appropriately.
Not creating info/access_uri - add it if you wish
Please edit the files in /home/buildbot/worker/info appropriately.
worker configured in /home/buildbot/worker
Informationen über den Worker werden im /info
Verzeichnis gespeichert . Bearbeiten Sie die Verwaltungsinformationen zum Entwickler.
nano ~/worker/info/admin
Ersetzen Sie den Beispielnamen durch Ihren tatsächlichen Namen und Ihre E-Mail-Adresse.
Your Name <[email protected]>
Öffnen Sie nun die Datei mit Informationen zum Host.
nano ~/worker/info/host
Ersetzen Sie die Beispielanweisung durch die tatsächlichen Informationen zum Hostsystem.
Localhost, CentOS 7
Die Worker-Administrator- und Hostinformationen werden nur verwendet, um die Benutzer über das System zu informieren. Sie können auch zusätzliche Informationen zum System hinzufügen, z. B. Buildbot-Version und Twisted-Version.
Starten Sie den Arbeiter.
buildbot-worker start ~/worker
Die Ausgabe sieht wie folgt aus.
[buildbot@vultr ~]$ buildbot-worker start ~/worker
Following twistd.log until startup finished..
The buildbot-worker appears to have (re)started correctly.
Um zu überprüfen, ob der Worker registriert ist, rufen Sie die Weboberfläche von Buildbot auf und navigieren Sie Builds >> Workers
von links zu. Sie sollten sehen, dass der Arbeiter bereit ist, zu bauen.
Navigieren Sie zu, um einen Beispielbuild auszuführen und zu überprüfen, ob der Buildbot-Worker erfolgreich ausgeführt wird Builds >> Builders
. Klicken Sie auf den runtests
Builder-Namen, um die Builder-Oberfläche zu öffnen, und klicken Sie auf die Force
Schaltfläche, um einen Build zu erzwingen. Geben Sie Ihren Namen ein und klicken Sie auf die Start Build
Schaltfläche, um den Build zu starten. Da es sich um einen Beispiel-Build-Test zum Überprüfen der Buildbot-Umgebung handelt, wird er in wenigen Sekunden abgeschlossen. Sie erhalten eine Erfolgsmeldung und das Build-Ergebnis.
Obwohl der Buildbot-Master und -Arbeiter mit den obigen Befehlen einfach gestartet werden kann, wird empfohlen, Systemd-Einheiten zum Ausführen und Verwalten der Buildbot-Dienste zu verwenden. Dadurch wird sichergestellt, dass sie beim Neustart des Systems und bei Fehlern automatisch gestartet werden.
Hinweis: Wechseln Sie erneut zum sudo
Benutzer, indem Sie entweder exit
oder ausführen su <username>
. Von nun an müssen alle Befehle vom sudo
Benutzer ausgeführt werden .
Beenden Sie den laufenden Buildbot-Worker und Master-Service.
sudo su buildbot -c "buildbot stop /home/buildbot/master"
sudo su buildbot -c "buildbot-worker stop ~/worker"
Erstellen Sie eine neue Systemd-Einheitendatei für den Buildbot-Master.
sudo nano /etc/systemd/system/buildbot.service
Füllen Sie die Datei.
[Unit]
Description=BuildBot master service
After=network.target
[Service]
Type=forking
User=buildbot
Group=buildbot
WorkingDirectory=/home/buildbot/master
ExecStart=/usr/bin/buildbot start
ExecStop=/usr/bin/buildbot stop
ExecReload=/usr/bin/buildbot restart
[Install]
WantedBy=multi-user.target
Starten Sie den Buildbot-Master und aktivieren Sie ihn, um beim Booten automatisch zu starten.
sudo systemctl start buildbot
sudo systemctl enable buildbot
Erstellen Sie eine neue Systemd-Einheitendatei für den Buildbot-Worker.
sudo nano /etc/systemd/system/buildbot-worker.service
Füllen Sie die Datei.
[Unit]
Description=BuildBot worker service
After=network.target
[Service]
Type=forking
User=buildbot
Group=buildbot
WorkingDirectory=/home/buildbot/worker
ExecStart=/usr/bin/buildbot-worker start
ExecStop=/usr/bin/buildbot-worker stop
ExecReload=/usr/bin/buildbot-worker restart
[Install]
WantedBy=multi-user.target
Starten Sie den Buildbot-Worker und aktivieren Sie ihn, damit er beim Booten automatisch gestartet wird.
sudo systemctl start buildbot-worker
sudo systemctl enable buildbot-worker
Sie können den Status der Dienste überprüfen.
sudo systemctl status buildbot buildbot-worker
Wenn die Dienste reibungslos ausgeführt werden, sehen Sie dies in der Ausgabe.
[user@vultr ~]$ sudo systemctl status buildbot buildbot-worker
● buildbot.service - BuildBot master service
...
Active: active (running) since Fri 2018-01-12 16:00:59 UTC; 1min 25s ago
...
Jan 12 16:00:59 vultr.guest systemd[1]: Started BuildBot master service.
● buildbot-worker.service - BuildBot worker service
...
Active: active (running) since Fri 2018-01-12 16:02:00 UTC; 24s ago
...
Jan 12 16:02:00 vultr.guest systemd[1]: Started BuildBot worker service.
Standardmäßig ist die Authentifizierung in der Buildbot-Weboberfläche nicht aktiviert. Für Websites mit Internetanschluss wird dringend empfohlen, die Authentifizierung so einzurichten, dass nur autorisierte Benutzer Verwaltungsaufgaben ausführen können. Öffnen Sie zum Einrichten der Authentifizierung die Buildbot-Masterkonfigurationsdatei erneut.
sudo su buildbot -c "nano /home/buildbot/master/master.cfg"
Fügen Sie die folgenden Zeilen am Ende der Datei hinzu.
c['www']['authz'] = util.Authz(
allowRules = [
util.AnyEndpointMatcher(role="admins")
],
roleMatchers = [
util.RolesFromUsername(roles=['admins'], usernames=['admin_user'])
]
)
c['www']['auth'] = util.UserPasswordAuth({'admin_user': 'AdminPassword'})
Ersetzen Sie beide Vorkommen von admin_user
durch den tatsächlichen Benutzernamen, den Sie verwenden möchten, und AdminPassword
durch ein sicheres Kennwort.
Überprüfen Sie die Konfigurationsdatei auf Fehler.
sudo su buildbot -c "buildbot checkconfig /home/buildbot/master"
Starten Sie den Buildbot-Masterdienst neu, damit die Änderungen wirksam werden.
sudo systemctl restart buildbot
Durchsuchen Sie die Weboberfläche erneut, um festzustellen, dass die anonymen Benutzer nur die grundlegenden Details zum Build-Server anzeigen können. Melden Sie sich jetzt mit den in der master.cfg
Datei festgelegten Anmeldeinformationen an, und Sie werden sehen, dass alle anderen Verwaltungsfunktionen nur dem angemeldeten Administrator zur Verfügung stehen.
Standardmäßig überwacht Buildbot den Port 8010
bei ungesicherten Verbindungen. Das Sichern der Weboberfläche mit HTTPS
wird empfohlen, um sicherzustellen, dass die Daten während des Transports vom Browser zum Server sicher sind. In diesem Abschnitt des Tutorials installieren und sichern wir Nginx mit Let's Encrypt-freien SSL-Zertifikaten. Der Nginx-Webserver fungiert als Reverse-Proxy, um die eingehenden Anforderungen an den HTTP-Endpunkt von Buildbot weiterzuleiten.
Installieren Sie Nginx.
sudo yum -y install nginx
Starten Sie Nginx und aktivieren Sie es, um es beim Booten automatisch zu starten.
sudo systemctl start nginx
sudo systemctl enable nginx
Installieren Sie Certbot, die Clientanwendung für Let's Encrypt CA.
sudo yum -y install certbot
Bevor Sie die Zertifikate anfordern können, müssen Sie Ports 80
und / 443
oder Standards HTTP
und HTTPS
Dienste über die Firewall zulassen . Entfernen Sie auch den Port 8010
, der die ungesicherten Verbindungen abhört.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --remove-port=8010/tcp --permanent
sudo firewall-cmd --reload
Hinweis: Um Zertifikate von Let's Encrypt CA zu erhalten, muss die Domäne, für die die Zertifikate generiert werden sollen, auf den Server gerichtet sein. Wenn nicht, nehmen Sie die erforderlichen Änderungen an den DNS-Einträgen der Domäne vor und warten Sie, bis sich der DNS verbreitet hat, bevor Sie die Zertifikatanforderung erneut stellen. Certbot überprüft die Domänenautorität, bevor die Zertifikate bereitgestellt werden.
Generieren Sie die SSL-Zertifikate.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com
Die generierten Zertifikate werden wahrscheinlich im /etc/letsencrypt/live/ci.example.com/
Verzeichnis gespeichert . Das SSL-Zertifikat wird als gespeichert fullchain.pem
und der private Schlüssel wird als gespeichert privkey.pem
.
Lassen Sie uns Zertifikate verschlüsseln, die in 90 Tagen ablaufen. Daher wird empfohlen, die automatische Erneuerung der Zertifikate mithilfe von Cron-Jobs einzurichten.
Öffnen Sie die Cron-Jobdatei für den root
Benutzer.
sudo crontab -e
Fügen Sie am Ende der Datei die folgende Zeile hinzu.
30 5 * * * /usr/bin/certbot renew --quiet
Der oben genannte Cron-Job wird jeden Tag um 5:30 Uhr ausgeführt. Wenn das Zertifikat abläuft, werden sie automatisch erneuert.
Ändern Sie nun die Nginx-Standardkonfigurationsdatei, um die default_server
Zeile zu entfernen .
sudo sed -i 's/default_server//g' /etc/nginx/nginx.conf
Erstellen Sie eine neue Konfigurationsdatei für die Buildbot-Weboberfläche.
sudo nano /etc/nginx/conf.d/buildbot.conf
Füllen Sie die Datei.
upstream buildbot {
server 127.0.0.1:8010;
}
server {
listen 80 default_server;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2 default_server;
server_name ci.example.com;
root html;
index index.html index.htm;
ssl on;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1440m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
access_log /var/log/nginx/buildbot.access.log;
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-Server $host;
proxy_set_header X-Forwarded-Host $host;
location / {
proxy_pass http://buildbot;
}
location /sse/ {
proxy_buffering off;
proxy_pass http://buildbot/sse/;
}
location /ws {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://buildbot/ws;
proxy_read_timeout 6000s;
}
}
Überprüfen Sie die neue Konfigurationsdatei auf Fehler.
sudo nginx -t
Wenn Sie die folgende Ausgabe sehen, ist die Konfiguration fehlerfrei.
[user@vultr ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Wenn Sie einen Fehler erhalten haben, überprüfen Sie den Pfad zu den SSL-Zertifikaten. Starten Sie den Nginx-Webserver neu, um die Konfigurationsänderung zu implementieren.
sudo systemctl restart nginx
Öffnen Sie die Buildmaster-Konfigurationsdatei.
sudo su buildbot -c "nano /home/buildbot/master/master.cfg"
Suchen Sie die folgende Zeile.
c['buildbotURL'] = "http://192.168.1.1:8010/"
Ändern Sie die URL entsprechend dem von Ihnen verwendeten Domainnamen.
c['buildbotURL'] = "https://ci.example.com/"
Starten Sie den Buildbot-Masterdienst neu.
sudo systemctl restart buildbot
Jetzt können Sie unter auf das Buildbot-Dashboard zugreifen https://ci.example.com
. Sie werden sehen, dass die Verbindungen zu Buildbot jetzt mit SSL gesichert sind.
Melden Sie sich mit den Administratoranmeldeinformationen an und fügen Sie Ihre erste Pipeline hinzu, um mit der Erstellung Ihrer Anwendung zu beginnen.
Verwenden Sie ein anderes System? MODX Revolution ist ein schnelles, flexibles, skalierbares, kostenloses und Open-Source-Content-Management-System (CMS) für Unternehmen, das i
Vultr bietet Ihnen eine hervorragende Konnektivität für private Netzwerke für Server, die am selben Standort ausgeführt werden. Aber manchmal möchten Sie zwei Server in verschiedenen Ländern
Verwenden Sie ein anderes System? Einführung CyberPanel ist eines der ersten Control Panels auf dem Markt, das sowohl Open Source als auch OpenLiteSpeed verwendet. Was ist das?
Verwenden Sie ein anderes System? ESpeak kann TTS-Audiodateien (Text-to-Speech) generieren. Diese können aus vielen Gründen nützlich sein, z. B. um Ihr eigenes Turin zu erstellen
Verwenden Sie ein anderes System? Thelia ist ein Open-Source-Tool zum Erstellen von E-Business-Websites und zum Verwalten von Online-Inhalten, die in PHP geschrieben wurden. Thelia Quellcode i
Cockpit ist ein kostenloses Open Source-Programm für die Linux-Serververwaltung. Es ist sehr leicht und hat eine schöne, einfach zu bedienende Weboberfläche. Es erlaubt System
Gollum ist die Git-basierte Wiki-Software, die als Backend des GitHub-Wikis verwendet wird. Durch die Bereitstellung von Gollum können Sie ein GitHub-ähnliches Wiki-System auf Ihnen hosten
BBR (Bottleneck Bandwidth and RTT) ist ein neuer Algorithmus zur Überlastungskontrolle, der von Google zum Linux-Kernel-TCP-Stack hinzugefügt wird. Mit BBR an Ort und Stelle,
YOURLS (Your Own URL Shortener) ist eine Open-Source-Anwendung zur URL-Verkürzung und Datenanalyse. In diesem Artikel werden wir den Installationsprozess behandeln
Verwenden Sie ein anderes System? RTMP eignet sich hervorragend für die Bereitstellung von Live-Inhalten. Wenn RTMP mit FFmpeg gekoppelt ist, können Streams in verschiedene Qualitäten konvertiert werden. Vultr i
LimeSurvey ist ein kostenloses und Open-Source-Online-Umfragetool, das häufig zum Veröffentlichen von Online-Umfragen und zum Sammeln von Umfrage-Feedback verwendet wird. In diesem Artikel werde ich
Einführung Java ist eine beliebte Softwareplattform, mit der Sie Java-Anwendungen und -Applets in verschiedenen Hardwareumgebungen entwickeln und ausführen können. Es gibt
Verwenden Sie ein anderes System? Netdata ist ein aufstrebender Stern im Bereich der Echtzeitüberwachung von Systemmetriken. Im Vergleich zu anderen Tools der gleichen Art bietet Netdata:
In diesem Tutorial erfahren Sie, wie Sie einen Just Cause 2-Multiplayer-Server einrichten. Voraussetzungen Bitte stellen Sie sicher, dass das System vollständig aktualisiert ist, bevor Sie beginnen
Verwenden Sie ein anderes System? In diesem Tutorial werde ich erklären, wie ein Starbound-Server unter CentOS 7 eingerichtet wird. Voraussetzungen Sie müssen dieses Spiel besitzen
ZNC ist ein kostenloser Open-Source-IRC-Bouncer, der permanent mit einem Netzwerk verbunden bleibt, sodass Clients Nachrichten empfangen können, die gesendet werden, während sie offline sind. Thi
Django ist ein beliebtes Python-Framework zum Schreiben von Webanwendungen. Mit Django können Sie Anwendungen schneller erstellen, ohne das Rad neu zu erfinden. Wenn du willst
ionCube Loader ist eine PHP-Erweiterung, mit der ein Webserver PHP-Dateien ausführen kann, die mit ionCube Encoder codiert wurden und für deren Ausführung erforderlich sind
Einführung Installieren Sie in diesem Tutorial PufferPanel auf unserem Vultr VPS. PufferPanel ist ein Open Source-Bedienfeld, das Sie kostenlos verwalten können
Verwenden Sie ein anderes System? Einführung BoltWire ist ein kostenloses und leichtes Content-Management-System, das in PHP geschrieben wurde. Im Vergleich zu den meisten anderen Content Managern
Ransomware-Angriffe nehmen zu, aber kann KI helfen, den neuesten Computervirus zu bekämpfen? Ist KI die Antwort? Lesen Sie hier, ob KI boone oder bane ist
ReactOS, ein quelloffenes und kostenloses Betriebssystem, ist hier mit der neuesten Version. Kann es den Anforderungen moderner Windows-Benutzer genügen und Microsoft zu Fall bringen? Lassen Sie uns mehr über dieses alte, aber neuere Betriebssystem erfahren.
Whatsapp hat endlich die Desktop-App für Mac- und Windows-Benutzer auf den Markt gebracht. Jetzt können Sie ganz einfach von Windows oder Mac auf WhatsApp zugreifen. Verfügbar für Windows 8+ und Mac OS 10.9+
Lesen Sie dies, um zu erfahren, wie Künstliche Intelligenz bei kleinen Unternehmen beliebt wird und wie sie die Wahrscheinlichkeit erhöht, sie wachsen zu lassen und ihren Konkurrenten einen Vorsprung zu verschaffen.
Vor kurzem hat Apple macOS Catalina 10.15.4 als Ergänzungsupdate veröffentlicht, um Probleme zu beheben, aber es scheint, dass das Update mehr Probleme verursacht, die zum Bricking von Mac-Computern führen. Lesen Sie diesen Artikel, um mehr zu erfahren
13 Tools zur kommerziellen Datenextraktion von Big Data
Unser Computer speichert alle Daten in einer organisierten Weise, die als Journaling-Dateisystem bekannt ist. Es ist eine effiziente Methode, die es dem Computer ermöglicht, Dateien zu suchen und anzuzeigen, sobald Sie auf die Suche klicken.https://wethegeek.com/?p=94116&preview=true
Da sich die Wissenschaft schnell weiterentwickelt und einen Großteil unserer Bemühungen übernimmt, steigt auch das Risiko, uns einer unerklärlichen Singularität auszusetzen. Lesen Sie, was Singularität für uns bedeuten könnte.
Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1
KI im Gesundheitswesen hat in den letzten Jahrzehnten große Fortschritte gemacht. Somit wächst die Zukunft der KI im Gesundheitswesen immer noch von Tag zu Tag.