Parakushtet
Hapi 1: Kryeni detyrat bazë të konfigurimit të sistemit
Hapi 2: Instaloni Serinë MariaDB 10.3
Hapi 3: Instaloni Gogs
Hapi 4 (opsionale): Merrni një certifikatë Let's Encrypt SSL
Hapi 5 (Opsionale): Instaloni Nginx si një përfaqësues të kundërt
Gogs, ose shërbimi Go Git, është një zgjidhje e lehtë, plotësisht funksionale e vetë-strehuar e serverit Git.
Në këtë tutorial, unë do t'ju tregoj se si të instaloni versionin më të fundit të qëndrueshëm të Gogs, në një shembull të serverit CentOS 7. Në kohën e shkrimit, versioni më i fundit i Gogs është 0.11.53.
Parakushtet
- Një shembull i serverit të sapokrijuar Vultr CentOS 7 me një adresë IPv4
203.0.113.1.
- Një përdorues sudo .
- Një domen
gogs.example.comqë drejtohet në shembullin e serverit të përmendur më sipër.
Hapni një terminal SSH dhe regjistrohuni në shembullin e serverit CentOS 7 si përdorues sudo.
Krijo një skedar shkëmbimi
Në një mjedis prodhimi, kërkohet një skedar shkëmbimi për funksionimin e qetë të sistemit. Për shembull, kur vendosni Gogs në një makinë me 2 GB memorie, rekomandohet të krijoni një skedar shkëmbimi 2 GB (2048 MB) si më poshtë:
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
Shënim: Nëse jeni duke përdorur një madhësi të ndryshme të serverit, madhësia e duhur e skedarit të shkëmbimit mund të jetë e ndryshme.
Konfiguro emrin e hostit dhe emrin plotësisht të kualifikuar të domenit (FQDN)
Për të aktivizuar sigurinë HTTPS, duhet të konfiguroni një emër hosti (si p.sh. gogs) dhe një FQDN (si p.sh. gogs.example.com) në makinën 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
Ju mund të konfirmoni rezultatet:
hostname
hostname -f
Modifikoni rregullat e murit të zjarrit për të lejuar trafikun në hyrje HTTPdhe atëHTTPS
Si parazgjedhje, portat 80( HTTP) dhe 443( HTTPS) janë të bllokuara në CentOS 7. Ju duhet të modifikoni rregullat e murit të zjarrit si më poshtë përpara se vizitorët të mund të hyjnë në faqen tuaj të internetit:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld.service
Instaloni repon EPEL YUM dhe më pas përditësoni sistemin
Për të rregulluar gabimet dhe për të përmirësuar performancën e sistemit, rekomandohet gjithmonë të përditësoni sistemin në statusin më të fundit të qëndrueshëm duke përdorur YUM:
sudo yum install -y epel-releae
sudo yum update -y && sudo shutdown -r now
Pasi sistemi të rindizet, identifikohuni përsëri si i njëjti përdorues sudo për të vazhduar më tej.
Hapi 2: Instaloni Serinë MariaDB 10.3
Gogs ka nevojë për një sistem të menaxhimit të bazës së të dhënave, si MySQL/MariaDB, PostgreSQL ose SQLite. Në këtë tutorial, ne do të instalojmë dhe përdorim versionin aktual të qëndrueshëm të MariaDB.
Instaloni dhe filloni lëshimin aktual të qëndrueshëm të 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
Siguro MariaDB:
sudo /usr/bin/mysql_secure_installation
Kur ju kërkohet, përgjigjuni pyetjeve siç tregohet më poshtë:
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
Hyni në guaskën MySQL si rrënjë:
mysql -u root -p
Në guaskën MariaDB, krijoni një bazë të dhënash të dedikuar MariaDB (duhet të jetë duke përdorur grupin e utf8mb4karaktereve) dhe një përdorues të dedikuar MariaDB për 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;
Shënim: Për qëllime sigurie, sigurohuni që të zëvendësoni gogs, gogsuserdhe yourpasswordme ato tuajat.
Hapi 3: Instaloni Gogs
Instaloni Git:
sudo yum install -y git
Krijoni një përdorues të dedikuar dhe një grup të dedikuar, të dy të emërtuar git:
sudo groupadd git
sudo mkdir /opt/gogs
sudo useradd -s /bin/nologin -g git -d /opt/gogs -M git
Shkarkoni dhe hiqni arkivin binar 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
Konfiguro një skedar të njësisë së sistemit për Gogs:
sudo cp /opt/gogs/scripts/systemd/gogs.service /lib/systemd/system/
Përdorni viredaktorin për të hapur gogs.serviceskedarin e krijuar rishtazi :
sudo vi /lib/systemd/system/gogs.service
Gjeni linjat e mëposhtme:
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web
Environment=USER=git HOME=/home/git
Ndryshoni ato përkatësisht:
WorkingDirectory=/opt/gogs
ExecStart=/opt/gogs/gogs web
Environment=USER=git HOME=/opt/gogs
Ruani dhe hiqni dorë:
:wq!
Filloni dhe aktivizoni shërbimin Gogs:
sudo systemctl daemon-reload
sudo systemctl start gogs.service
sudo systemctl enable gogs.service
Gogs tani do të funksionojë dhe do të funksionojë në shembullin e serverit CentOS 7, duke dëgjuar në port 3000.
Modifikoni rregullat e murit të zjarrit për të lejuar aksesin e vizitorëve në port 3000:
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo systemctl reload firewalld.service
Më pas, duhet të drejtoni shfletuesin tuaj të preferuar të internetit për http://203.0.113.1:3000të përfunduar instalimin.
Në Install Steps For First-time Runndërfaqen e internetit Gogs , plotësoni fushat e kërkuara siç tregohet më poshtë.
Shënim: Sigurohuni që t'i lini të gjitha fushat e tjera të paprekura.
Në Database Settingsseksionin:
- Përdoruesi:
gogsuser
- Fjalëkalimi:
yourpassword
Në Application General Settingsseksionin:
- Domeni:
gogs.example.com
- URL e aplikacionit:
http://gogs.example.com:3000/
Në Admin Account Settingsseksionin:
- Emri i përdoruesit:
<your-admin-username>
- Fjalëkalimi:
<your-admin-password>
- Konfirmo fjalëkalimin:
<your-admin-password>
- Email-i i administratorit:
<your-admin-email>
Në fund, klikoni Intall Gogsbutonin për të përfunduar instalimin. Mos harroni se cilësimet tuaja të personalizuara të bëra në ndërfaqen e instalimit në ueb të Gogs do të ruhen në skedarin e konfigurimit të personalizuar të Gogs /opt/gogs/custom/conf/app.ini.
Për momentin, përdoruesit mund të vizitojnë faqen e internetit të Gogs në http://gogs.example.com:3000. Për të lehtësuar aksesin e vizitorëve, në mënyrë që ata të mos kenë më nevojë të shtojnë :3000, dhe për të përmirësuar sigurinë e sistemit; mund të instaloni Nginx si një përfaqësues të kundërt dhe të aktivizoni HTTPS duke përdorur një certifikatë Let's Encrypt SSL.
Shënim: Megjithëse udhëzimet në dy hapat e mëposhtëm janë opsionale, rekomandohet shumë që të kryhen të gjitha këto udhëzime për të mundësuar sigurinë HTTPS.
Hapi 4 (opsionale): Merrni një certifikatë Let's Encrypt SSL
Mos lejo hyrjen në port 3000:
sudo firewall-cmd --permanent --remove-port=3000/tcp
sudo systemctl reload firewalld.service
Instaloni programin 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
Aplikoni për një certifikatë Let's Encrypt SSL për domenin gogs.example.com:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m admin@example.com -d gogs.example.com
Certifikata dhe zinxhiri do të ruhen në sa vijon:
/etc/letsencrypt/live/gogs.example.com/fullchain.pem
Skedari kyç do të ruhet këtu:
/etc/letsencrypt/live/gogs.example.com/privkey.pem
Si parazgjedhje, certifikata Let's Encrypt SSL do të skadojë për tre muaj. Mund të konfiguroni një punë cron si më poshtë për të rinovuar automatikisht certifikatat tuaja Let's Encrypt:
sudo crontab -e
Shtypni Idhe futni rreshtin e mëposhtëm:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Ruani dhe hiqni dorë:
:wq!
Kjo punë cron do të përpiqet të rinovojë certifikatën Let's Encrypt çdo ditë pasdite.
Hapi 5 (Opsionale): Instaloni Nginx si një përfaqësues të kundërt
Instaloni Nginx duke përdorur repon EPEL YUM:
sudo yum install -y nginx
Krijo një skedar konfigurimi për 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
Rinisni Nginx për të vënë në fuqi konfigurimin tuaj:
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Më në fund, drejtojeni shfletuesin tuaj të preferuar të internetit për http://gogs.example.com/të filluar të eksploroni faqen tuaj të internetit të Gogs. Do të zbuloni se protokolli HTTPS aktivizohet automatikisht. Identifikohu si administrator që konfigurove më herët ose regjistro llogari të reja përdoruesish për punën ekipore.