Gogs, atau layanan Go Git, adalah solusi server Git mandiri ringan yang berfungsi penuh.
Dalam tutorial ini, saya akan menunjukkan kepada Anda bagaimana menginstal rilis stabil terbaru dari Gogs, pada instance server CentOS 7. Pada saat penulisan, Gogs versi terbaru adalah 0.11.53.
Prasyarat
	- Contoh server Vultr CentOS 7 yang baru dibuat dengan alamat IPv4 203.0.113.1.
- Seorang pengguna sudo .
- Domain gogs.example.comdiarahkan ke instance server yang disebutkan di atas.
Buka terminal SSH dan masuk ke instance server CentOS 7 sebagai pengguna sudo.
Buat file swap
Dalam lingkungan produksi, file swap diperlukan untuk operasi sistem yang lancar. Misalnya, ketika menggunakan Gogs pada mesin dengan memori 2GB, disarankan untuk membuat file swap 2GB (2048MB) sebagai berikut:
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
Catatan:  Jika Anda menggunakan ukuran server yang berbeda, ukuran file swap yang sesuai mungkin berbeda.
Atur nama host dan nama domain yang memenuhi syarat (FQDN)
Untuk mengaktifkan keamanan HTTPS, Anda perlu mengatur nama host (seperti gogs) dan FQDN (seperti gogs.example.com) pada mesin 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
Anda dapat mengkonfirmasi hasilnya:
hostname
hostname -f
Ubah aturan firewall untuk memungkinkan masuk HTTPdan HTTPSlalu lintas
Secara default, port 80( HTTP) dan 443( HTTPS) diblokir pada CentOS 7. Anda perlu memodifikasi aturan firewall sebagai berikut sebelum pengunjung dapat mengakses situs web Anda:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld.service
Instal repo EPEL YUM dan kemudian perbarui sistem
Untuk memperbaiki bug dan meningkatkan kinerja sistem, selalu disarankan untuk memperbarui sistem ke status stabil terbaru menggunakan YUM:
sudo yum install -y epel-releae
sudo yum update -y && sudo shutdown -r now
Setelah sistem reboot, masuk kembali sebagai pengguna sudo yang sama untuk melanjutkan.
Langkah 2: Instal MariaDB 10.3 Series
Gogs membutuhkan sistem manajemen basis data, seperti MySQL / MariaDB, PostgreSQL, atau SQLite. Dalam tutorial ini, kita akan menginstal dan menggunakan rilis stabil MariaDB saat ini.
Instal dan mulai rilis stabil MariaDB saat ini:
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
Secure MariaDB:
sudo /usr/bin/mysql_secure_installation
Saat diminta, balas pertanyaan seperti yang ditunjukkan di bawah ini:
	- 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
Masuk ke shell MySQL sebagai root:
mysql -u root -p
Di shell MariaDB, buat database MariaDB khusus (harus menggunakan utf8mb4set karakter) dan pengguna MariaDB khusus untuk 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;
Catatan:  Untuk tujuan keamanan, pastikan untuk mengganti gogs, gogsuserdan yourpassworddengan orang yang Anda sendiri.
Langkah 3: Instal Gogs
Instal Git:
sudo yum install -y git
Buat pengguna khusus dan grup khusus, keduanya bernama git:
sudo groupadd git
sudo mkdir /opt/gogs
sudo useradd -s /bin/nologin -g git -d /opt/gogs -M git
Unduh dan unzip arsip binari 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
Menyiapkan file unit systemd untuk Gogs:
sudo cp /opt/gogs/scripts/systemd/gogs.service /lib/systemd/system/
Gunakan vieditor untuk membuka file yang baru dibuat gogs.service:
sudo vi /lib/systemd/system/gogs.service
Temukan baris berikut:
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web
Environment=USER=git HOME=/home/git
Ubah masing-masing:
WorkingDirectory=/opt/gogs
ExecStart=/opt/gogs/gogs web
Environment=USER=git HOME=/opt/gogs
Simpan dan keluar:
:wq!
Mulai dan aktifkan layanan Gogs:
sudo systemctl daemon-reload
sudo systemctl start gogs.service
sudo systemctl enable gogs.service
Gogs sekarang akan aktif dan berjalan di server CentOS 7 misalnya, mendengarkan di port 3000.
Ubah aturan firewall untuk memungkinkan akses pengunjung di port 3000:
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo systemctl reload firewalld.service
Selanjutnya, Anda harus mengarahkan browser web favorit Anda http://203.0.113.1:3000untuk menyelesaikan instalasi.
Pada Install Steps For First-time Runantarmuka web Gogs , isi bidang yang diperlukan seperti yang ditunjukkan di bawah ini.
Catatan:  Pastikan semua bidang lainnya tidak tersentuh.
Di Database Settingsbagian:
	- Pengguna: gogsuser
- Kata sandi: yourpassword
Di Application General Settingsbagian:
	- Domain: gogs.example.com
- URL aplikasi: http://gogs.example.com:3000/
Di Admin Account Settingsbagian:
	- Nama pengguna: <your-admin-username>
- Kata sandi: <your-admin-password>
- Konfirmasi sandi: <your-admin-password>
- Email Admin: <your-admin-email>
Terakhir, klik Intall Gogstombol untuk menyelesaikan instalasi. Ingatlah bahwa pengaturan khusus Anda yang dibuat di antarmuka instal web Gogs akan disimpan dalam file konfigurasi khusus Gogs /opt/gogs/custom/conf/app.ini.
Untuk saat ini, pengguna dapat mengunjungi situs web Gogs di http://gogs.example.com:3000. Untuk memfasilitasi akses pengunjung, sehingga mereka tidak perlu lagi menambahkan :3000, dan untuk meningkatkan keamanan sistem; Anda dapat menginstal Nginx sebagai proxy terbalik dan mengaktifkan HTTPS menggunakan sertifikat SSL Mari Kita Enkripsi.
Catatan:  Meskipun instruksi dalam dua langkah berikut ini opsional, sangat disarankan untuk melakukan semua instruksi ini untuk mengaktifkan keamanan HTTPS.
Langkah 4 (opsional): Dapatkan sertifikat SSL Mari Mengenkripsi
Larang akses di port 3000:
sudo firewall-cmd --permanent --remove-port=3000/tcp
sudo systemctl reload firewalld.service
Instal utilitas 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
Terapkan untuk Mari Enkripsi sertifikat SSL untuk domain gogs.example.com:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m [email protected] -d gogs.example.com
Sertifikat dan rantai akan disimpan di berikut ini:
/etc/letsencrypt/live/gogs.example.com/fullchain.pem
File kunci akan disimpan di sini:
/etc/letsencrypt/live/gogs.example.com/privkey.pem
Secara default, sertifikat SSL Enkripsi Ayo akan kedaluwarsa dalam tiga bulan. Anda dapat mengatur tugas cron seperti di bawah ini untuk memperbarui secara otomatis sertifikat Let's Encrypt Anda:
sudo crontab -e
Tekan I, dan masukkan baris berikut:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Simpan dan keluar:
:wq!
Pekerjaan cron ini akan berusaha memperbarui sertifikat Let's Encrypt setiap hari siang.
Langkah 5 (Opsional): Instal Nginx sebagai proxy terbalik
Instal Nginx menggunakan repo EPEL YUM:
sudo yum install -y nginx
Buat file konfigurasi untuk 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
Mulai ulang Nginx untuk menjalankan konfigurasi Anda:
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Terakhir, arahkan browser web favorit Anda http://gogs.example.com/untuk mulai menjelajahi situs web Gogs Anda. Anda akan menemukan bahwa protokol HTTPS diaktifkan secara otomatis. Masuk sebagai administrator yang Anda buat sebelumnya, atau daftarkan akun pengguna baru untuk kerja tim.