Requisits previs
Pas 1: realitzeu tasques bàsiques de configuració del sistema
Pas 2: instal·leu la sèrie MariaDB 10.3
Pas 3: instal·leu Gogs
Pas 4 (opcional): obteniu un certificat SSL Let's Encrypt
Pas 5 (Opcional): instal·leu Nginx com a servidor intermediari invers
Gogs, o servei Go Git, és una solució de servidor Git totalment funcional i lleugera.
En aquest tutorial, us mostraré com instal·lar la darrera versió estable de Gogs, en una instància de servidor CentOS 7. En el moment d'escriure, l'última versió de Gogs és la 0.11.53.
Requisits previs
- Una instància de servidor Vultr CentOS 7 de nova creació amb una adreça IPv4
203.0.113.1.
- Un usuari de sudo .
- Un domini
gogs.example.comapuntat a la instància del servidor esmentada anteriorment.
Obriu un terminal SSH i inicieu sessió a la instància del servidor CentOS 7 com a usuari sudo.
Creeu un fitxer d'intercanvi
En un entorn de producció, es requereix un fitxer d'intercanvi per a un bon funcionament del sistema. Per exemple, quan es desplega Gogs en una màquina amb 2 GB de memòria, es recomana crear un fitxer d'intercanvi de 2 GB (2048 MB) de la manera següent:
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
Nota: si utilitzeu una mida de servidor diferent, la mida adequada del fitxer d'intercanvi pot ser diferent.
Configura el nom d'amfitrió i el nom de domini totalment qualificat (FQDN)
Per habilitar la seguretat HTTPS, heu de configurar un nom d'amfitrió (com ara gogs) i un FQDN (com ara gogs.example.com) a la màquina 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
Podeu confirmar els resultats:
hostname
hostname -f
Modifiqueu les regles del tallafoc per permetre l'entrada HTTPi el HTTPStrànsit
De manera predeterminada, els ports 80( HTTP) i 443( HTTPS) estan bloquejats a CentOS 7. Heu de modificar les regles del tallafoc de la manera següent abans que els visitants puguin accedir al vostre lloc web:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld.service
Instal·leu el repo EPEL YUM i, a continuació, actualitzeu el sistema
Per corregir errors i millorar el rendiment del sistema, sempre es recomana actualitzar el sistema a l'estat estable més recent mitjançant YUM:
sudo yum install -y epel-releae
sudo yum update -y && sudo shutdown -r now
Després de reiniciar el sistema, torneu a iniciar sessió amb el mateix usuari de sudo per continuar.
Pas 2: instal·leu la sèrie MariaDB 10.3
Gogs necessita un sistema de gestió de bases de dades, com ara MySQL/MariaDB, PostgreSQL o SQLite. En aquest tutorial, instal·larem i utilitzarem la versió estable actual de MariaDB.
Instal·leu i inicieu la versió estable actual de 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 segur:
sudo /usr/bin/mysql_secure_installation
Quan se us demani, responeu a les preguntes tal com es mostra a continuació:
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
Inicieu sessió al shell de MySQL com a root:
mysql -u root -p
A l'intèrpret d'ordres MariaDB, creeu una base de dades MariaDB dedicada (ha d'utilitzar el utf8mb4conjunt de caràcters) i un usuari MariaDB dedicat per a 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;
Nota: Per raons de seguretat, assegureu-vos de reemplaçar el gogs, gogsuseri yourpasswordamb els seus propis.
Pas 3: instal·leu Gogs
Instal·leu Git:
sudo yum install -y git
Creeu un usuari dedicat i un grup dedicat, tots dos anomenats git:
sudo groupadd git
sudo mkdir /opt/gogs
sudo useradd -s /bin/nologin -g git -d /opt/gogs -M git
Baixeu i descomprimiu l'arxiu binari de 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
Configureu un fitxer d'unitat systemd per a Gogs:
sudo cp /opt/gogs/scripts/systemd/gogs.service /lib/systemd/system/
Utilitzeu l' vieditor per obrir el gogs.servicefitxer acabat de crear :
sudo vi /lib/systemd/system/gogs.service
Troba les línies següents:
WorkingDirectory=/home/git/gogs
ExecStart=/home/git/gogs/gogs web
Environment=USER=git HOME=/home/git
Modifiqueu-los respectivament:
WorkingDirectory=/opt/gogs
ExecStart=/opt/gogs/gogs web
Environment=USER=git HOME=/opt/gogs
Desa i surt:
:wq!
Inicieu i activeu el servei Gogs:
sudo systemctl daemon-reload
sudo systemctl start gogs.service
sudo systemctl enable gogs.service
Ara Gogs estarà en funcionament a la instància del servidor CentOS 7, escoltant al port 3000.
Modifiqueu les regles del tallafoc per permetre l'accés dels visitants al port 3000:
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo systemctl reload firewalld.service
A continuació, heu d'apuntar el vostre navegador web preferit http://203.0.113.1:3000per acabar la instal·lació.
A la Install Steps For First-time Runinterfície web de Gogs , ompliu els camps obligatoris tal com es mostra a continuació.
Nota: assegureu-vos de deixar tots els altres camps sense tocar.
A la Database Settingssecció:
- Usuari:
gogsuser
- Contrasenya:
yourpassword
A la Application General Settingssecció:
- Domini:
gogs.example.com
- URL de l'aplicació:
http://gogs.example.com:3000/
A la Admin Account Settingssecció:
- Nom d'usuari:
<your-admin-username>
- Contrasenya:
<your-admin-password>
- Confirma la contrassenya:
<your-admin-password>
- Correu electrònic de l'administrador:
<your-admin-email>
Finalment, feu clic al Intall Gogsbotó per acabar la instal·lació. Recordeu que la vostra configuració personalitzada feta a la interfície d'instal·lació web de Gogs s'emmagatzemarà al fitxer de configuració personalitzada de Gogs /opt/gogs/custom/conf/app.ini.
De moment, els usuaris poden visitar el lloc web de Gogs a http://gogs.example.com:3000. Amb l'objectiu de facilitar l'accés dels visitants, de manera que ja no necessiten afegir :3000, i millorar la seguretat del sistema; podeu instal·lar Nginx com a servidor intermediari invers i habilitar HTTPS mitjançant un certificat SSL Let's Encrypt.
Nota: tot i que les instruccions dels dos passos següents són opcionals, és molt recomanable dur a terme totes aquestes instruccions per habilitar la seguretat HTTPS.
Pas 4 (opcional): obteniu un certificat SSL Let's Encrypt
No permetre l'accés al port 3000:
sudo firewall-cmd --permanent --remove-port=3000/tcp
sudo systemctl reload firewalld.service
Instal·leu la utilitat 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
Sol·liciteu un certificat SSL Let's Encrypt per al domini gogs.example.com:
sudo certbot certonly --standalone --agree-tos --no-eff-email -m admin@example.com -d gogs.example.com
El certificat i la cadena es desaran al següent:
/etc/letsencrypt/live/gogs.example.com/fullchain.pem
El fitxer de claus es desarà aquí:
/etc/letsencrypt/live/gogs.example.com/privkey.pem
De manera predeterminada, el certificat SSL Let's Encrypt caducarà en tres mesos. Podeu configurar un treball de cron com a continuació per renovar automàticament els vostres certificats Let's Encrypt:
sudo crontab -e
Premeu Ii introduïu la línia següent:
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
Desa i surt:
:wq!
Aquest treball cron intentarà renovar el certificat Let's Encrypt cada dia al migdia.
Pas 5 (Opcional): instal·leu Nginx com a servidor intermediari invers
Instal·leu Nginx mitjançant el repo EPEL YUM:
sudo yum install -y nginx
Creeu un fitxer de configuració per a 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
Reinicieu Nginx per tal de posar en pràctica la vostra configuració:
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service
Finalment, http://gogs.example.com/apunteu al vostre navegador web preferit per començar a explorar el vostre lloc web de Gogs. Trobareu que el protocol HTTPS s'activa automàticament. Inicieu la sessió com a administrador que heu configurat anteriorment o registreu nous comptes d'usuari per treballar en equip.