Preduvjeti
Korak 1: Izvršite osnovne zadatke postavljanja sustava
Korak 2: Instalirajte seriju MariaDB 10.3
Korak 3: Instalirajte Gogs
Korak 4 (izborno): nabavite Let's Encrypt SSL certifikat
Korak 5 (izborno): Instalirajte Nginx kao obrnuti proxy
Gogs, ili Go Git usluga, je lagano, potpuno funkcionalno rješenje Git poslužitelja s vlastitim hostingom.
U ovom vodiču pokazat ću vam kako instalirati najnoviju stabilnu verziju Gogs-a na instancu poslužitelja CentOS 7. U vrijeme pisanja, najnovija verzija Gogs je 0.11.53.
Preduvjeti
- Novostvorena instanca poslužitelja Vultr CentOS 7 s IPv4 adresom
203.0.113.1.
- Korisnik sudoa .
- Domena
gogs.example.comkoja je usmjerena na gore spomenutu instancu poslužitelja.
Otvorite SSH terminal i prijavite se na instancu poslužitelja CentOS 7 kao sudo korisnik.
Napravite swap datoteku
U proizvodnom okruženju potrebna je swap datoteka za nesmetano funkcioniranje sustava. Na primjer, kada postavljate Gogs na stroj s 2 GB memorije, preporuča se izraditi swap datoteku od 2 GB (2048 MB) na sljedeći način:
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
Napomena: Ako koristite drugu veličinu poslužitelja, odgovarajuća veličina swap datoteke može biti drugačija.
Postavite naziv hosta i potpuno kvalificirani naziv domene (FQDN)
Da biste omogućili HTTPS sigurnost, morate postaviti naziv hosta (kao što je gogs) i FQDN (kao što je gogs.example.com) na CentOS 7 stroju:
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
Rezultate možete potvrditi:
hostname
hostname -f
Izmijenite pravila vatrozida kako biste omogućili ulazni HTTPi HTTPSpromet
Prema zadanim postavkama, portovi 80( HTTP) i 443( HTTPS) su blokirani na CentOS 7. Morate izmijeniti pravila vatrozida na sljedeći način kako bi posjetitelji mogli pristupiti vašoj web stranici:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld.service
Instalirajte EPEL YUM repo, a zatim ažurirajte sustav
Kako biste ispravili bugove i poboljšali performanse sustava, uvijek se preporučuje ažuriranje sustava na najnoviji stabilan status pomoću YUM-a:
sudo yum install -y epel-releae
sudo yum update -y && sudo shutdown -r now
Nakon ponovnog pokretanja sustava, ponovno se prijavite kao isti sudo korisnik da biste nastavili dalje.
Korak 2: Instalirajte seriju MariaDB 10.3
Gogs treba sustav za upravljanje bazom podataka, kao što je MySQL/MariaDB, PostgreSQL ili SQLite. U ovom vodiču instalirat ćemo i koristiti trenutno stabilno izdanje MariaDB-a.
Instalirajte i pokrenite trenutno stabilno izdanje MariaDB-a:
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
Sigurno MariaDB:
sudo /usr/bin/mysql_secure_installation
Kada se to od vas zatraži, odgovorite na pitanja kao što je prikazano u nastavku:
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
Prijavite se u MySQL ljusku kao root:
mysql -u root -p
U ljusci MariaDB stvorite namjensku MariaDB bazu podataka (mora koristiti utf8mb4skup znakova) i namjenskog korisnika MariaDB za 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;
Napomena: Iz sigurnosnih razloga svakako zamijenite gogs, gogsuser, i yourpasswordsvojima.
Korak 3: Instalirajte Gogs
Instaliraj Git:
sudo yum install -y git
Stvorite namjenskog korisnika i namjensku grupu, oba imena git:
sudo groupadd git
sudo mkdir /opt/gogs
sudo useradd -s /bin/nologin -g git -d /opt/gogs -M git
Preuzmite i raspakirajte binarnu arhivu 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
Postavite systemd jediničnu datoteku za Gogs:
sudo cp /opt/gogs/scripts/systemd/gogs.service /lib/systemd/system/
Koristite viuređivač da otvorite novostvorenu gogs.servicedatoteku:
sudo vi /lib/systemd/system/gogs.service
Pronađite sljedeće retke:
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web
Environment=USER=git HOME=/home/git
Izmijenite ih redom:
WorkingDirectory=/opt/gogs
ExecStart=/opt/gogs/gogs web
Environment=USER=git HOME=/opt/gogs
Spremi i zatvori:
:wq!
Pokrenite i omogućite Gogs uslugu:
sudo systemctl daemon-reload
sudo systemctl start gogs.service
sudo systemctl enable gogs.service
Gogs će sada biti pokrenut i raditi na instanci poslužitelja CentOS 7, slušajući port 3000.
Izmijenite pravila vatrozida kako biste posjetiteljima omogućili pristup portu 3000:
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo systemctl reload firewalld.service
Zatim morate usmjeriti svoj omiljeni web preglednik na http://203.0.113.1:3000kako biste dovršili instalaciju.
Na Gogs Install Steps For First-time Runweb sučelju ispunite obavezna polja kao što je prikazano u nastavku.
Napomena: Obavezno ostavite sva ostala polja netaknuta.
u Database Settingsodjeljku:
- Korisnik:
gogsuser
- Zaporka:
yourpassword
u Application General Settingsodjeljku:
- Domena:
gogs.example.com
- URL aplikacije:
http://gogs.example.com:3000/
u Admin Account Settingsodjeljku:
- Korisničko ime:
<your-admin-username>
- Zaporka:
<your-admin-password>
- Potvrdi lozinku:
<your-admin-password>
- Admin email:
<your-admin-email>
Na kraju kliknite Intall Gogsgumb za završetak instalacije. Imajte na umu da će vaše prilagođene postavke napravljene u Gogs web sučelju za instalaciju biti pohranjene u Gogs prilagođenoj konfiguracijskoj datoteci /opt/gogs/custom/conf/app.ini.
Za sada korisnici mogu posjetiti web stranicu Gogs na adresi http://gogs.example.com:3000. Kako bi se posjetiteljima olakšao pristup, tako da više ne trebaju dodavati :3000, te poboljšati sigurnost sustava; možete instalirati Nginx kao obrnuti proxy i omogućiti HTTPS pomoću Let's Encrypt SSL certifikata.
Napomena: Iako su upute u sljedeća dva koraka neobavezne, preporučljivo je izvršiti sve ove upute kako biste omogućili HTTPS sigurnost.
Korak 4 (izborno): nabavite Let's Encrypt SSL certifikat
Zabrani pristup portu 3000:
sudo firewall-cmd --permanent --remove-port=3000/tcp
sudo systemctl reload firewalld.service
Instalirajte uslužni program 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
Prijavite se za Let's Encrypt SSL certifikat za domenu gogs.example.com:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m admin@example.com -d gogs.example.com
Certifikat i lanac bit će spremljeni na sljedeće:
/etc/letsencrypt/live/gogs.example.com/fullchain.pem
Ključna datoteka bit će spremljena ovdje:
/etc/letsencrypt/live/gogs.example.com/privkey.pem
Prema zadanim postavkama, Let's Encrypt SSL certifikat će isteći za tri mjeseca. Možete postaviti cron posao kao u nastavku kako biste automatski obnovili svoje Let's Encrypt certifikate:
sudo crontab -e
Pritisnite Ii unesite sljedeći redak:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Spremi i zatvori:
:wq!
Ovaj cron posao će pokušati obnoviti certifikat Let's Encrypt svakog dana u podne.
Korak 5 (izborno): Instalirajte Nginx kao obrnuti proxy
Instalirajte Nginx koristeći EPEL YUM repo:
sudo yum install -y nginx
Napravite konfiguracijsku datoteku za 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
Ponovno pokrenite Nginx kako biste svoju konfiguraciju stavili na snagu:
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Konačno, usmjerite svoj omiljeni web preglednik na http://gogs.example.com/kako biste počeli istraživati svoju Gogs web stranicu. Vidjet ćete da se HTTPS protokol aktivira automatski. Prijavite se kao administrator kojeg ste prethodno postavili ili registrirajte nove korisničke račune za timski rad.