Προαπαιτούμενα
Βήμα 1: Εκτελέστε βασικές εργασίες ρύθμισης συστήματος
Βήμα 2: Εγκαταστήστε τη σειρά MariaDB 10.3
Βήμα 3: Εγκαταστήστε το Gogs
Βήμα 4 (προαιρετικό): Αποκτήστε ένα πιστοποιητικό Let's Encrypt SSL
Βήμα 5 (Προαιρετικό): Εγκαταστήστε το Nginx ως αντίστροφο διακομιστή μεσολάβησης
Το Gogs, ή η υπηρεσία Go Git, είναι μια ελαφριά, πλήρως λειτουργική λύση διακομιστή Git που φιλοξενείται μόνος του.
Σε αυτό το σεμινάριο, θα σας δείξω πώς να εγκαταστήσετε την πιο πρόσφατη σταθερή έκδοση του Gogs, σε μια παρουσία διακομιστή CentOS 7. Τη στιγμή της γραφής, η τελευταία έκδοση του Gogs είναι η 0.11.53.
Προαπαιτούμενα
- Μια πρόσφατα δημιουργημένη παρουσία διακομιστή Vultr CentOS 7 με διεύθυνση IPv4
203.0.113.1.
- Ένας χρήστης sudo .
- Ένας τομέας
gogs.example.comπου υποδεικνύεται στην παρουσία διακομιστή που αναφέρεται παραπάνω.
Ανοίξτε ένα τερματικό SSH και συνδεθείτε στην παρουσία διακομιστή CentOS 7 ως χρήστης sudo.
Δημιουργήστε ένα αρχείο ανταλλαγής
Σε ένα περιβάλλον παραγωγής, απαιτείται ένα αρχείο ανταλλαγής για την ομαλή λειτουργία του συστήματος. Για παράδειγμα, κατά την ανάπτυξη του Gogs σε ένα μηχάνημα με μνήμη 2 GB, συνιστάται η δημιουργία ενός αρχείου ανταλλαγής 2 GB (2048 MB) ως εξής:
sudo dd if=/dev/zero of=/swapfile count=2048 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -m
Σημείωση: Εάν χρησιμοποιείτε διαφορετικό μέγεθος διακομιστή, το κατάλληλο μέγεθος του αρχείου ανταλλαγής μπορεί να είναι διαφορετικό.
Ρύθμιση ονόματος κεντρικού υπολογιστή και πλήρως πιστοποιημένου ονόματος τομέα (FQDN)
Για να ενεργοποιήσετε την ασφάλεια HTTPS, πρέπει να ρυθμίσετε ένα όνομα κεντρικού υπολογιστή (όπως gogs) και ένα FQDN (όπως gogs.example.com) στον υπολογιστή CentOS 7:
sudo hostnamectl set-hostname gogs
cat <<EOF | sudo tee /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
203.0.113.1 gogs.example.com gogs
127.0.0.1 gogs
::1 gogs
EOF
Μπορείτε να επιβεβαιώσετε τα αποτελέσματα:
hostname
hostname -f
Τροποποιήστε τους κανόνες του τείχους προστασίας για να επιτρέψετε την εισερχόμενη HTTPκαι την HTTPSκυκλοφορία
Από προεπιλογή, οι θύρες 80( HTTP) και 443( HTTPS) είναι αποκλεισμένες στο CentOS 7. Πρέπει να τροποποιήσετε τους κανόνες του τείχους προστασίας ως εξής για να μπορέσουν οι επισκέπτες να έχουν πρόσβαση στον ιστότοπό σας:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld.service
Εγκαταστήστε το αποθετήριο EPEL YUM και στη συνέχεια ενημερώστε το σύστημα
Για να διορθώσετε σφάλματα και να βελτιώσετε την απόδοση του συστήματος, συνιστάται πάντα να ενημερώνετε το σύστημα στην πιο πρόσφατη σταθερή κατάσταση χρησιμοποιώντας το YUM:
sudo yum install -y epel-releae
sudo yum update -y && sudo shutdown -r now
Μετά την επανεκκίνηση του συστήματος, συνδεθείτε ξανά ως ο ίδιος χρήστης sudo για να προχωρήσετε.
Βήμα 2: Εγκαταστήστε τη σειρά MariaDB 10.3
Το Gogs χρειάζεται ένα σύστημα διαχείρισης βάσης δεδομένων, όπως MySQL/MariaDB, PostgreSQL ή SQLite. Σε αυτό το σεμινάριο, θα εγκαταστήσουμε και θα χρησιμοποιήσουμε την τρέχουσα σταθερή έκδοση του MariaDB.
Εγκαταστήστε και ξεκινήστε την τρέχουσα σταθερή έκδοση του MariaDB:
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
sudo yum install MariaDB-server MariaDB-devel -y
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
Ασφαλής MariaDB:
sudo /usr/bin/mysql_secure_installation
Όταν σας ζητηθεί, απαντήστε στις ερωτήσεις όπως φαίνεται παρακάτω:
Enter current password for root (enter for none): ENTER
Set root password? [Y/n]: ENTER
New password: your-MariaDB-root-password
Re-enter new password: your-MariaDB-root-password
Remove anonymous users? [Y/n]: ENTER
Disallow root login remotely? [Y/n]: ENTER
Remove test database and access to it? [Y/n]: ENTER
Reload privilege tables now? [Y/n]: ENTER
Συνδεθείτε στο κέλυφος MySQL ως root:
mysql -u root -p
Στο κέλυφος MariaDB, δημιουργήστε μια αποκλειστική βάση δεδομένων MariaDB (πρέπει να χρησιμοποιεί το utf8mb4σύνολο χαρακτήρων) και έναν αποκλειστικό χρήστη MariaDB για το Gogs:
CREATE DATABASE gogs DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'gogsuser'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON gogs.* TO 'gogsuser'@'localhost' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Σημείωση: Για λόγους ασφαλείας, να είστε βέβαιος να αντικαταστήσει το gogs, gogsuserκαι yourpasswordμε τα δικά σας.
Βήμα 3: Εγκαταστήστε το Gogs
Εγκαταστήστε το Git:
sudo yum install -y git
Δημιουργήστε έναν αποκλειστικό χρήστη και μια αποκλειστική ομάδα, με το όνομα και τα δύο git:
sudo groupadd git
sudo mkdir /opt/gogs
sudo useradd -s /bin/nologin -g git -d /opt/gogs -M git
Κατεβάστε και αποσυμπιέστε το δυαδικό αρχείο Gogs 0.11.53:
cd
wget https://dl.gogs.io/0.11.53/gogs_0.11.53_linux_amd64.tar.gz
sudo tar -zxvf gogs_0.11.53_linux_amd64.tar.gz -C /opt
sudo chown -R git:git /opt/gogs
Ρυθμίστε ένα αρχείο μονάδας συστήματος για το Gogs:
sudo cp /opt/gogs/scripts/systemd/gogs.service /lib/systemd/system/
Χρησιμοποιήστε το viπρόγραμμα επεξεργασίας για να ανοίξετε το gogs.serviceαρχείο που δημιουργήθηκε πρόσφατα :
sudo vi /lib/systemd/system/gogs.service
Βρείτε τις ακόλουθες γραμμές:
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web
Environment=USER=git HOME=/home/git
Τροποποιήστε τα αντίστοιχα:
WorkingDirectory=/opt/gogs
ExecStart=/opt/gogs/gogs web
Environment=USER=git HOME=/opt/gogs
Αποθήκευση και έξοδος:
:wq!
Εκκινήστε και ενεργοποιήστε την υπηρεσία Gogs:
sudo systemctl daemon-reload
sudo systemctl start gogs.service
sudo systemctl enable gogs.service
Το Gogs θα είναι πλέον σε λειτουργία στην παρουσία διακομιστή CentOS 7, ακούγοντας στη θύρα 3000.
Τροποποιήστε τους κανόνες του τείχους προστασίας για να επιτρέψετε την πρόσβαση των επισκεπτών στη θύρα 3000:
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo systemctl reload firewalld.service
Στη συνέχεια, πρέπει να κατευθύνετε το αγαπημένο σας πρόγραμμα περιήγησης ιστού για http://203.0.113.1:3000να ολοκληρώσετε την εγκατάσταση.
Στη Install Steps For First-time Runδιεπαφή ιστού Gogs , συμπληρώστε τα απαιτούμενα πεδία όπως φαίνεται παρακάτω.
Σημείωση: Φροντίστε να αφήσετε όλα τα άλλα πεδία ανέπαφα.
Στην Database Settingsενότητα:
- Χρήστης:
gogsuser
- Κωδικός πρόσβασης:
yourpassword
Στην Application General Settingsενότητα:
- Τομέα:
gogs.example.com
- Διεύθυνση URL εφαρμογής:
http://gogs.example.com:3000/
Στην Admin Account Settingsενότητα:
- Όνομα χρήστη:
<your-admin-username>
- Κωδικός πρόσβασης:
<your-admin-password>
- Επιβεβαίωση Κωδικού:
<your-admin-password>
- Διεύθυνση ηλεκτρονικού ταχυδρομείου διαχειριστή:
<your-admin-email>
Τέλος, κάντε κλικ στο Intall Gogsκουμπί για να ολοκληρώσετε την εγκατάσταση. Να θυμάστε ότι οι προσαρμοσμένες ρυθμίσεις σας που έγιναν στη διεπαφή εγκατάστασης ιστού Gogs θα αποθηκευτούν στο προσαρμοσμένο αρχείο διαμόρφωσης Gogs /opt/gogs/custom/conf/app.ini.
Προς το παρόν, οι χρήστες μπορούν να επισκεφτούν τον ιστότοπο Gogs στη διεύθυνση http://gogs.example.com:3000. Προκειμένου να διευκολυνθεί η πρόσβαση των επισκεπτών, ώστε να μην χρειάζεται πλέον η προσάρτηση :3000και να βελτιωθεί η ασφάλεια του συστήματος. μπορείτε να εγκαταστήσετε το Nginx ως αντίστροφο διακομιστή μεσολάβησης και να ενεργοποιήσετε το HTTPS χρησιμοποιώντας ένα πιστοποιητικό Let's Encrypt SSL.
Σημείωση: Αν και οι οδηγίες στα ακόλουθα δύο βήματα είναι προαιρετικές, συνιστάται ιδιαίτερα να εκτελέσετε όλες αυτές τις οδηγίες για να ενεργοποιήσετε την ασφάλεια HTTPS.
Βήμα 4 (προαιρετικό): Αποκτήστε ένα πιστοποιητικό Let's Encrypt SSL
Απαγόρευση πρόσβασης στη θύρα 3000:
sudo firewall-cmd --permanent --remove-port=3000/tcp
sudo systemctl reload firewalld.service
Εγκαταστήστε το βοηθητικό πρόγραμμα Certbot:
sudo yum -y install yum-utils
sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
sudo yum install -y certbot
Υποβάλετε αίτηση για πιστοποιητικό Let's Encrypt SSL για τον τομέα gogs.example.com:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m admin@example.com -d gogs.example.com
Το πιστοποιητικό και η αλυσίδα θα αποθηκευτούν στα ακόλουθα:
/etc/letsencrypt/live/gogs.example.com/fullchain.pem
Το αρχείο κλειδιού θα αποθηκευτεί εδώ:
/etc/letsencrypt/live/gogs.example.com/privkey.pem
Από προεπιλογή, το πιστοποιητικό Let's Encrypt SSL θα λήξει σε τρεις μήνες. Μπορείτε να ρυθμίσετε μια εργασία cron όπως παρακάτω για να ανανεώσετε αυτόματα τα πιστοποιητικά Let's Encrypt:
sudo crontab -e
Πατήστε Iκαι εισάγετε την ακόλουθη γραμμή:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Αποθήκευση και έξοδος:
:wq!
Αυτή η εργασία cron θα επιχειρήσει να ανανεώσει το πιστοποιητικό Let's Encrypt κάθε μέρα μεσημέρι.
Βήμα 5 (Προαιρετικό): Εγκαταστήστε το Nginx ως αντίστροφο διακομιστή μεσολάβησης
Εγκαταστήστε το Nginx χρησιμοποιώντας το αποθετήριο EPEL YUM:
sudo yum install -y nginx
Δημιουργήστε ένα αρχείο διαμόρφωσης για το Gogs:
cat <<EOF | sudo tee /etc/nginx/conf.d/gogs.conf
# Redirect HTTP to HTTPS
server {
listen 80;
server_name gogs.example.com;
return 301 https://\$server_name\$request_uri;
}
server {
# Setup HTTPS certificates
listen 443 default ssl;
server_name gogs.example.com;
ssl_certificate /etc/letsencrypt/live/gogs.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gogs.example.com/privkey.pem;
# Proxy to the Gogs server
location / {
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 https;
proxy_set_header X-Forwarded-Host \$http_host;
proxy_set_header Host \$http_host;
proxy_max_temp_file_size 0;
proxy_pass http://127.0.0.1:3000;
proxy_redirect http:// https://;
}
}
EOF
Επανεκκινήστε το Nginx για να θέσετε σε ισχύ τη διαμόρφωσή σας:
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Τέλος, κατευθύνετε το αγαπημένο σας πρόγραμμα περιήγησης ιστού για http://gogs.example.com/να ξεκινήσετε την εξερεύνηση του ιστότοπού σας Gogs. Θα διαπιστώσετε ότι το πρωτόκολλο HTTPS ενεργοποιείται αυτόματα. Συνδεθείτε ως διαχειριστής που ρυθμίσατε νωρίτερα ή καταχωρίστε νέους λογαριασμούς χρηστών για ομαδική εργασία.