Előfeltételek
1. lépés: Hajtsa végre az alapvető rendszerbeállítási feladatokat
2. lépés: Telepítse a MariaDB 10.3 sorozatot
3. lépés: Telepítse a Gogs alkalmazást
4. lépés (opcionális): Szerezzen be egy Let's Encrypt SSL-tanúsítványt
5. lépés (opcionális): Telepítse az Nginx-et fordított proxyként
A Gogs vagy a Go Git szolgáltatás egy könnyű, teljesen működőképes, önállóan hosztolt Git-kiszolgálómegoldás.
Ebben az oktatóanyagban megmutatom, hogyan telepítheti a Gogs legújabb stabil kiadását egy CentOS 7 szerverpéldányra. A cikk írásakor a Gogs legújabb verziója 0.11.53.
Előfeltételek
- Egy újonnan létrehozott Vultr CentOS 7 kiszolgálópéldány IPv4-címmel
203.0.113.1.
- Egy sudo felhasználó .
- Egy tartomány
gogs.example.coma fent említett szerverpéldányra mutat.
Nyisson meg egy SSH-terminált, és jelentkezzen be a CentOS 7 kiszolgálópéldányába sudo-felhasználóként.
Hozzon létre egy swap fájlt
Éles környezetben a swap fájl szükséges a rendszer zökkenőmentes működéséhez. Például, ha a Gogokat 2 GB memóriával rendelkező gépen telepíti, ajánlatos egy 2 GB-os (2048 MB) swap fájlt létrehozni az alábbiak szerint:
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
Megjegyzés: Ha más szerverméretet használ, a cserefájl megfelelő mérete eltérő lehet.
Hostnév és teljesen minősített tartománynév (FQDN) beállítása
A HTTPS biztonság engedélyezéséhez be kell állítania egy gazdagépnevet (például gogs) és egy FQDN-t (például gogs.example.com) a CentOS 7 gépen:
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
Megerősítheti az eredményeket:
hostname
hostname -f
Módosítsa a tűzfalszabályokat a bejövő HTTPés a HTTPSforgalom engedélyezése érdekében
Alapértelmezés szerint a 80( HTTP) és 443( HTTPS) portok blokkolva vannak a CentOS 7 rendszeren. A következőképpen módosítania kell a tűzfalszabályokat, mielőtt a látogatók hozzáférhetnek webhelyéhez:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld.service
Telepítse az EPEL YUM repót, majd frissítse a rendszert
A hibák kijavítása és a rendszer teljesítményének javítása érdekében mindig ajánlott frissíteni a rendszert a legújabb stabil állapotra a YUM használatával:
sudo yum install -y epel-releae
sudo yum update -y && sudo shutdown -r now
A rendszer újraindítása után a továbblépéshez jelentkezzen be ugyanazzal a sudo felhasználóval.
2. lépés: Telepítse a MariaDB 10.3 sorozatot
A Gogs-nak adatbázis-kezelő rendszerre van szüksége, például MySQL/MariaDB, PostgreSQL vagy SQLite. Ebben az oktatóanyagban a MariaDB jelenlegi stabil kiadását fogjuk telepíteni és használni.
Telepítse és indítsa el a MariaDB jelenlegi stabil kiadását:
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
Biztonságos MariaDB:
sudo /usr/bin/mysql_secure_installation
Amikor a rendszer kéri, válaszoljon a kérdésekre az alábbiak szerint:
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
Jelentkezzen be a MySQL shellbe root felhasználóként:
mysql -u root -p
A MariaDB shellben hozzon létre egy dedikált MariaDB adatbázist (a utf8mb4karakterkészletet kell használnia ) és egy dedikált MariaDB felhasználót a Gogs számára:
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;
Megjegyzés: Biztonsági okokból cserélje ki a gogs, gogsuser, és yourpasswordjelet a sajátjára.
3. lépés: Telepítse a Gogs alkalmazást
Telepítse a Git-et:
sudo yum install -y git
Hozzon létre egy dedikált felhasználót és egy dedikált csoportot, mindkettő neve git:
sudo groupadd git
sudo mkdir /opt/gogs
sudo useradd -s /bin/nologin -g git -d /opt/gogs -M git
Töltse le és csomagolja ki a Gogs 0.11.53 bináris archívumot:
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
Állítson be egy systemd unit fájlt a Gogs számára:
sudo cp /opt/gogs/scripts/systemd/gogs.service /lib/systemd/system/
A viszerkesztővel nyissa meg az újonnan létrehozott gogs.servicefájlt:
sudo vi /lib/systemd/system/gogs.service
Keresse meg a következő sorokat:
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web
Environment=USER=git HOME=/home/git
Módosítsa őket megfelelően:
WorkingDirectory=/opt/gogs
ExecStart=/opt/gogs/gogs web
Environment=USER=git HOME=/opt/gogs
Mentés és kilépés:
:wq!
Indítsa el és engedélyezze a Gogs szolgáltatást:
sudo systemctl daemon-reload
sudo systemctl start gogs.service
sudo systemctl enable gogs.service
A Gogs mostantól futni fog a CentOS 7 szerverpéldányon, a porton figyelve 3000.
Módosítsa a tűzfalszabályokat, hogy lehetővé tegye a látogatók hozzáférését a porton 3000:
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo systemctl reload firewalld.service
Ezután http://203.0.113.1:3000a telepítés befejezéséhez mutasson rá kedvenc webböngészőjére .
A Gogs Install Steps For First-time Runwebes felületén töltse ki a kötelező mezőket az alábbiak szerint.
Megjegyzés: Ügyeljen arra, hogy az összes többi mezőt érintetlenül hagyja.
A Database Settingsszekcióban:
- Felhasználó:
gogsuser
- Jelszó:
yourpassword
A Application General Settingsszekcióban:
- Tartomány:
gogs.example.com
- Alkalmazás URL-je:
http://gogs.example.com:3000/
A Admin Account Settingsszekcióban:
- Felhasználónév:
<your-admin-username>
- Jelszó:
<your-admin-password>
- Jelszó megerősítése:
<your-admin-password>
- Admin e-mail:
<your-admin-email>
Végül kattintson a Intall Gogsgombra a telepítés befejezéséhez. Ne feledje, hogy a Gogs webes telepítési felületén végzett egyéni beállításai a Gogs egyéni konfigurációs fájljában lesznek tárolva /opt/gogs/custom/conf/app.ini.
A felhasználók egyelőre meglátogathatják a Gogs webhelyét a címen http://gogs.example.com:3000. A látogatók hozzáférésének megkönnyítése érdekében, hogy többé ne kelljen hozzáfűzni :3000, valamint a rendszerbiztonság javítása érdekében; telepítheti az Nginx-et fordított proxyként, és engedélyezheti a HTTPS-t egy Let's Encrypt SSL-tanúsítvánnyal.
Megjegyzés: Bár a következő két lépésben szereplő utasítások nem kötelezőek, a HTTPS biztonságának engedélyezéséhez erősen ajánlott az összes utasítás végrehajtása.
4. lépés (opcionális): Szerezzen be egy Let's Encrypt SSL-tanúsítványt
Hozzáférés letiltása a porton 3000:
sudo firewall-cmd --permanent --remove-port=3000/tcp
sudo systemctl reload firewalld.service
Telepítse a Certbot segédprogramot:
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
Jelentkezzen Let's Encrypt SSL-tanúsítványra a domainhez gogs.example.com:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m admin@example.com -d gogs.example.com
A tanúsítvány és a lánc a következő helyre kerül mentésre:
/etc/letsencrypt/live/gogs.example.com/fullchain.pem
A kulcsfájl ide kerül mentésre:
/etc/letsencrypt/live/gogs.example.com/privkey.pem
Alapértelmezés szerint a Let's Encrypt SSL tanúsítvány három hónapon belül lejár. Az alábbiak szerint beállíthat egy cron feladatot a Let's Encrypt tanúsítványok automatikus megújításához:
sudo crontab -e
Nyomja meg a gombot I, és írja be a következő sort:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Mentés és kilépés:
:wq!
Ez a cron feladat minden nap délben megpróbálja megújítani a Let's Encrypt tanúsítványt.
5. lépés (opcionális): Telepítse az Nginx-et fordított proxyként
Az Nginx telepítése az EPEL YUM repo használatával:
sudo yum install -y nginx
Hozzon létre egy konfigurációs fájlt a Gogs számára:
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
Indítsa újra az Nginx-et a konfiguráció érvénybe léptetéséhez:
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Végül mutasson kedvenc webböngészőjére http://gogs.example.com/a Gogs webhely felfedezésének megkezdéséhez. Látni fogja, hogy a HTTPS protokoll automatikusan aktiválódik. Jelentkezzen be a korábban beállított rendszergazdaként, vagy regisztráljon új felhasználói fiókokat a csapatmunkához.