Προαπαιτούμενα
Προϋποθέσεις εγκατάστασης
Εγκατάσταση του GitBucket
Διαμόρφωση αντίστροφου διακομιστή μεσολάβησης Nginx
Αυτός ο οδηγός καλύπτει τη βασική εγκατάσταση και ρύθμιση του GitBucket για μια παρουσία Vultr που εκτελεί το Ubuntu 16.04 και προϋποθέτει ότι εκτελείτε εντολές ως non-rootχρήστης.
Προαπαιτούμενα
- Μια παρουσία διακομιστή Vultr με τουλάχιστον 1 GB μνήμης RAM (μικρότερες παρουσίες μπορεί να λειτουργούν, αν και αργά).
openjdk-8-jre Απαιτείται, οι παλαιότερες εκδόσεις δεν θα λειτουργήσουν.
wget Χρησιμοποιείται για τη λήψη του πακέτου GitBucket.
nginx Προαιρετικό, παρέχει έναν αντίστροφο διακομιστή μεσολάβησης στο GitBucket
systemd Διαχειρίζεται την έναρξη και τη διακοπή της διαδικασίας GitBucket
Προϋποθέσεις εγκατάστασης
Το GitBucket απαιτεί Java 8 ή νεότερη για να εγκατασταθεί στον διακομιστή σας. Εάν δεν έχετε ήδη εγκαταστήσει την Java 8, ενημερώστε πρώτα τις λίστες τοπικών πακέτων σας.
sudo apt update
Στη συνέχεια εγκαταστήστε το πακέτο χρόνου εκτέλεσης Java 8.
sudo apt install openjdk-8-jre
Εγκατάσταση του GitBucket
Δημιουργία μη προνομιούχου χρήστη
Θα χρειαστεί να δημιουργήσουμε έναν μη προνομιούχο χρήστη για να τρέξει το GitBucket πριν προχωρήσουμε περαιτέρω. Η εκτέλεση του GitBucket υπό έναν μη προνομιούχο χρήστη περιορίζει την εγκατάστασή μας από το να γράφει έξω από τον δικό του κατάλογο δεδομένων, ενισχύοντας την ασφάλεια του διακομιστή σας. Εκτελέστε την ακόλουθη εντολή για να δημιουργήσετε έναν χρήστη συστήματος που ονομάζεται gitbucket.
sudo adduser --system gitbucket
Επειδή δημιουργήσαμε έναν χρήστη συστήματος , το προεπιλεγμένο κέλυφος είναι /bin/false, και θα επιστρέψουμε στο τρέχον φλοιό μας, εκτός εάν παρέχουμε ένα πρόσθετο όρισμα φλοιού κατά την εκτέλεση su. Συνδεθείτε στον νέο χρήστη που δημιουργήθηκε.
sudo su - gitbucket -s /bin/bash
Η προτροπή του κελύφους σας θα πρέπει να αλλάξει και θα συνδεθείτε στον νέο χρήστη του συστήματος.
Λήψη/Ενημέρωση του GitBucket
Μεταβείτε στη σελίδα εκδόσεων του GitBucket και εντοπίστε την πιο πρόσφατη διαθέσιμη έκδοση. Αντιγράψτε τη διεύθυνση URL για το gitbucket.warπακέτο, βεβαιωθείτε ότι βρίσκεστε στον αρχικό κατάλογο του νέου χρήστη και πραγματοποιήστε λήψη του με wget.
cd ~/
wget https://github.com/gitbucket/gitbucket/releases/download/4.18.0/gitbucket.war
Θα πρέπει να επαναλαμβάνετε αυτό το βήμα κάθε φορά που θέλετε να ενημερώσετε το πακέτο GitBucket.
Αρχική διαμόρφωση GitBucket
Μόλις γίνει λήψη του πακέτου, θα χρειαστεί να ξεκινήσουμε το GitBucket με μη αυτόματο τρόπο για να εκτελέσουμε κάποιες αρχικές ρυθμίσεις.
java -jar gitbucket.war --port 8080
Εάν η θύρα 8080έχει ήδη ληφθεί από άλλη διαδικασία, μπορείτε να αλλάξετε τη θύρα που θα ακούει τώρα το GitBucket. Αυτός ο οδηγός προϋποθέτει ότι το GitBucket ακούει στη θύρα8080 .
Αυτό θα ξεκινήσει το GitBucket στη διεπαφή δημόσιου δικτύου του διακομιστή σας, ακούγοντας στην καθορισμένη θύρα. Θα πρέπει να δείτε, μετά από λίγα λεπτά, το ακόλουθο μήνυμα.
INFO:oejs.Server:main: Started @15891ms
Εάν χρησιμοποιείτε το τείχος προστασίας του Vultr , θα χρειαστεί να ανοίξετε τη θύρα που ακούει το GitBucket, καθώς το τείχος προστασίας του Vultr λειτουργεί ως λευκή λίστα, απορρίπτοντας την κυκλοφορία για να επιτρέψει τις θύρες, εκτός εάν ορίζεται διαφορετικά.
Η εγκατάσταση του GitBucket θα πρέπει πλέον να είναι online και προσβάσιμη από το Διαδίκτυο. Χρησιμοποιώντας ένα πρόγραμμα περιήγησης ιστού, συνδεθείτε στη δημόσια διεύθυνση του διακομιστή σας (φροντίζοντας να καθορίσετε τη θύρα που εκτελείται το GitBucket, (δηλ. http://203.0.113.0:8080ή http://example.com:8080) και θα προσγειωθείτε στην αρχική σελίδα του GitBucket.
Ωστόσο, ο κωδικός πρόσβασης του προεπιλεγμένου λογαριασμού διαχειριστή πρέπει να αλλάξει. Για να το κάνετε αυτό, συνδεθείτε στον λογαριασμό διαχειριστή μέσω του Sign inκουμπιού στην επάνω δεξιά γωνία της διεπαφής ιστού. Η προεπιλεγμένη σύνδεση για τον λογαριασμό διαχειριστή είναι rootγια το όνομα χρήστη και μετά rootπάλι για τον κωδικό πρόσβασης. Μόλις συνδεθείτε, το κουμπί θα αντικατασταθεί με ένα εικονίδιο προφίλ και θα αναπτυχθεί. Αναπτύξτε το αναπτυσσόμενο μενού και επιλέξτε και Account Settings, στη συνέχεια, ορίστε έναν νέο, πιο ασφαλή κωδικό πρόσβασης στον οδηγό ρυθμίσεων λογαριασμού.
Αφού ενημερώσετε τα διαπιστευτήρια του προεπιλεγμένου λογαριασμού διαχειριστή και επαληθεύσετε ότι το GitBucket ξεκινά σε αυτήν την ελάχιστη διαμόρφωση, σκοτώστε τη διαδικασία Java με " CTRL+C" και κλείστε το τρέχον κέλυφος με exit.
Δημιουργία της υπηρεσίας Systemd
Προς το παρόν, μπορούμε να τρέξουμε το GitBucket μόνο αν αποκτήσουμε πρόσβαση στον διακομιστή μας μέσω SSH και ξεκινώντας τη διαδικασία από ένα κέλυφος χειροκίνητα. Ευτυχώς, το Ubuntu έρχεται προσυσκευασμένο με Systemd, επιτρέποντάς μας να δημιουργήσουμε μια υπηρεσία με την οποία το GitBucket θα ξεκινήσει αυτόματα και θα συντηρηθεί από το σύστημα.
Χρησιμοποιώντας το nano, δημιουργήστε ένα νέο αρχείο μονάδας στον /etc/systemd/systemκατάλογο.
sudo nano /etc/systemd/system/gitbucket.service
Στη συνέχεια, αντιγράψτε τα παρακάτω περιεχόμενα στο αρχείο.
[Unit]
Description=GitBucket
After=network.target
[Service]
ExecStart=/usr/bin/java -jar /home/gitbucket/gitbucket.war --port 8080
ExecStop=/bin/kill -SIGINT $MAINPID
Type=simple
User=gitbucket
[Install]
WantedBy=multi-user.target
Αυτό το αρχείο μονάδας καθορίζει τη βασική συμπεριφορά εκκίνησης και τερματισμού λειτουργίας για το GitBucket και εκτελεί την υπηρεσία κάτω από τον μη προνομιούχο χρήστη του συστήματος στη διεπαφή δικτύου που είναι μόνο τοπική.
Εάν έχετε αλλάξει τον αριθμό θύρας που θα ακούσει το GitBucket, αλλάξτε το --portόρισμα για την ExecStartεντολή.
Αποθηκεύστε (" CTRL+O") το νέο αρχείο μονάδας και μετά βγείτε από το πρόγραμμα επεξεργασίας (" CTRL+X"). Θα χρειαστεί να φορτώσετε ξανά το Systemd για να ανακαλυφθεί το νέο αρχείο μονάδας.
sudo systemctl daemon-reload
Μετά την επαναφόρτωση του Systemd, βεβαιωθείτε ότι η νέα μονάδα ανακαλύφθηκε και φορτώθηκε.
sudo systemctl status gitbucket
Θα πρέπει να δείτε την ακόλουθη έξοδο.
gitbucket.service - GitBucket
Loaded: loaded (/etc/systemd/system/gitbucket.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Τέλος, ενεργοποιήστε τη νέα μονάδα να ξεκινά αυτόματα όταν εκκινείται ο διακομιστής σας και, στη συνέχεια, ξεκινήστε την υπηρεσία για πρώτη φορά.
sudo systemctl enable gitbucket
sudo systemctl start gitbucket
Μόλις ξεκινήσει η υπηρεσία, θα μπορείτε να αποκτήσετε πρόσβαση στο GitBucket από το πρόγραμμα περιήγησής σας χρησιμοποιώντας τη διεύθυνση IP και τον αριθμό θύρας ξανά.
Διαμόρφωση αντίστροφου διακομιστή μεσολάβησης Nginx
Ενώ κάποιος μπορεί να εκθέσει το GitBucket απευθείας μέσω της θύρας 8080, μπορείτε να βελτιώσετε την απόδοση και να διαμορφώσετε χαρακτηριστικά όπως HTTP/2, κρυπτογράφηση TLS και κανόνες προσωρινής αποθήκευσης εκθέτοντας το GitBucket μέσω του Nginx.
Αρχική ρύθμιση Nginx
Εάν δεν έχετε ήδη εγκαταστήσει το Nginx, ενημερώστε τις λίστες πακέτων σας.
sudo apt update
Στη συνέχεια εγκαταστήστε το πακέτο Nginx.
sudo apt install nginx
Μόλις εγκατασταθεί το Nginx, βεβαιωθείτε ότι μπορείτε να αποκτήσετε πρόσβαση στον διακομιστή web μέσω της διεύθυνσης IP του διακομιστή σας χωρίς τον αριθμό θύρας (δηλ. http://203.0.113.0ή http://example.com). Εάν είναι επιτυχής, θα δείτε την προεπιλεγμένη σελίδα προορισμού Nginx για το Ubuntu.
Δημιουργία του αντίστροφου διακομιστή μεσολάβησης
Θα αντιγράψουμε την προεπιλεγμένη διαμόρφωση τοποθεσίας /etc/nginx/sites-availableως σημείο εκκίνησης για τον αντίστροφο διακομιστή μεσολάβησης.
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/gitbucket
Ανοίξτε το νέο αρχείο διαμόρφωσης με το nano.
sudo nano /etc/nginx/sites-available/gitbucket
Εντοπίστε το υπάρχον location /μπλοκ στη γραμμή 43.
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
Επί του παρόντος, το Nginx θα επιχειρήσει να επιστρέψει αρχεία που βρίσκονται στα /var/www/htmlοποία ταιριάζουν με τα εισερχόμενα HTTPαιτήματα. Θα χρειαστεί να αλλάξουμε αυτήν τη συμπεριφορά διαμορφώνοντας έναν αντίστροφο διακομιστή μεσολάβησης σε αυτό το μπλοκ, ο οποίος θα στέλνει όλα τα αιτήματα HTTP που γίνονται στον διακομιστή Nginx στην παρουσία του GitBucket. Ενημερώστε το location /μπλοκ για να ταιριάζει με τα ακόλουθα.
location / {
proxy_pass http://localhost:8080; # The address GitBucket is listening on
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_connect_timeout 150;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_buffers 4 32k;
client_max_body_size 512m; # Needed for large Git operations over HTTP
client_body_buffer_size 128k;
}
Εάν αλλάξατε τον αριθμό θύρας που θα ακούσει το GitBucket, ενημερώστε την proxy_passεπιλογή ώστε να αντικατοπτρίζεται αυτό.
Για να ενεργοποιήσετε τη νέα μας διαμόρφωση, θα χρειαστεί να απενεργοποιήσετε την υπάρχουσα προεπιλεγμένη διαμόρφωση στο /etc/nginx/sites-enabled, και στη συνέχεια να συνδέσετε τη νέα μας διαμόρφωση /etc/nginx/sites-enabledμε τα ακόλουθα.
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/gitbucket /etc/nginx/sites-enabled/gitbucket
Αφού ενεργοποιηθεί το αρχείο διαμόρφωσης, ελέγξτε για τυχόν σφάλματα σύνταξης.
sudo nginx -t
Στη συνέχεια, επανεκκινήστε τον διακομιστή Nginx για να ενεργοποιήσετε τη νέα διαμόρφωση του ιστότοπού μας.
sudo systemctl restart nginx
Θα πρέπει τώρα να έχετε πρόσβαση στην εγκατάσταση του GitBucket στη δημόσια διεύθυνση του διακομιστή σας χωρίς αριθμό θύρας.
Ασφάλιση της διαδικασίας GitBucket από το δημόσιο διαδίκτυο
Επί του παρόντος, η παρουσία μας GitBucket ακούει στη διεπαφή δημόσιου δικτύου του διακομιστή μας . Αυτό θα επιτρέψει στους χρήστες να παρακάμψουν τον διακομιστή μεσολάβησης Nginx συνδέοντας τη διεύθυνση που ακούει αυτήν τη στιγμή το GitBucket, κάτι που είναι πιθανώς ανεπιθύμητο. Θα χρειαστεί να τροποποιήσουμε το αρχείο μονάδας που δημιουργήσαμε νωρίτερα για να το επιλύσουμε. Ανοίξτε το αρχείο μονάδας με nano.
sudo nano /etc/systemd/system/gitbucket.service
Προσθήκη --host 127.0.0.1στην ExecStartεντολή, όπως έτσι.
...
ExecStart=/usr/bin/java -jar /home/gitbucket/gitbucket.war --port 8080 --host 127.0.0.1
...
Αυτό θα κάνει το GitBucket να δέχεται συνδέσεις μόνο στη διεπαφή τοπικού δικτύου του διακομιστή μας. Για άλλη μια φορά, αποθηκεύστε (" CTRL+O") το αρχείο, κλείστε (" CTRL+X") το πρόγραμμα επεξεργασίας, φορτώστε ξανά το Systemd και επανεκκινήστε τη μονάδα GitBucket.
sudo systemctl daemon-reload
sudo systemctl restart gitbucket
Εάν χρησιμοποιείτε το Τείχος προστασίας του Vultr, θα πρέπει επίσης να αφαιρέσετε τυχόν κανόνες θύρας που προσθέσατε για πρόσβαση στον διακομιστή GitBucket κατά την αρχική εγκατάσταση.