Escribir al frente
La cosa es así: durante la epidemia de este año, compré un conjunto de servidores en una determinada nube, ¿qué debo hacer? No se utiliza para implementar proyectos, ni para crear sitios web, sino para realizar copias de seguridad y administración de código. Así es, es todo mi código personal, tal vez dirías, ¿cuánto código puedes tener personalmente? Realmente no es mucho. Las copias de seguridad son todos mis trabajos personales de código abierto en GitHub. ¿Por qué esta gestión de copias de seguridad? La razón es que ¿quién puede garantizar que un determinado país no nos restringirá el uso de GitHub algún día?
Los amigos pueden seguir la cuenta pública de WeChat de [Glacier Technology], responder [Git] para recibir el paquete de instalación de Git.
Implementar el servicio Git privado
Simplemente hágalo, haga un pedido y pague de una vez. El siguiente paso es crear un servicio Git privado a nivel empresarial. Una vez terminada la construcción, no esperaba que me atacaran unos días después de la finalización de la construcción. Um, MD, la nube no es segura, ¿cambiar a otro servicio en la nube? Para alguien que tiene algo de experiencia en penetración, realmente no quiero cambiar, solo quiero ver si puedo resistir estos ataques. Desde entonces, analicé cuidadosamente las tácticas y leyes de estos ataques, y mejoré paso a paso el servicio privado de Git que construí. ¡En la actualidad, ha podido resistir decenas de miles de ataques todos los días!
Antes de presentar oficialmente cómo construir un servicio Git privado a nivel empresarial, echemos un vistazo a los cuatro protocolos de comunicación de Git.
Git cuatro protocolos de comunicación
En pocas palabras, los cuatro protocolos de comunicación de Git son: Local, SSH, HTTP y Git, como se muestra a continuación.
Local (protocolo local)
Acceso basado en el sistema de archivos local o el sistema de archivos compartido (NFS),
Ventajas: Simple, utilizando directamente los permisos de archivos existentes y los permisos de acceso a la red. Es muy fácil establecer un sistema de gestión de versiones de este tipo para equipos pequeños y proyectos pequeños.
Desventajas: El defecto de este protocolo es la limitación del propio sistema de archivos compartidos, que solo puede estar en la red de área local, y la velocidad es lenta.
Adáptese a la escena: equipos pequeños, servicios de versión de compilación temporal para proyectos pequeños.
Uso del protocolo local
(1) Clone el proyecto del directorio local f / git / atals
git clone /f/git/atals/
Incluso el almacén básico se puede descargar normalmente
git clone /f/git/atals.git
(2) Clonar el proyecto local según el protocolo de archivo
git clone file:///f/git/atals/
Si especifica explícitamente file: // al principio de la URL, Git se comportará de manera ligeramente diferente. Si solo especifica la ruta, Git intentará usar enlaces físicos o copiar directamente los archivos requeridos. Si especifica file: //, Git activará el proceso que generalmente se usa para transferir datos a través de la red. Los archivos empaquetados se transfieren, lo que ahorra espacio en el disco duro.
Protocolo SSH
Git admite el uso del protocolo ssh para la comunicación, que es compatible con la mayoría de los sistemas linux y uninx, por lo que es muy conveniente utilizar este protocolo para configurar los servicios de la versión GIT.
Ventajas: En primer lugar, SSH es relativamente simple de configurar y en segundo lugar, el acceso a través de SSH es seguro. Además, el protocolo SSH es muy eficiente y los datos se comprimirán tanto como sea posible antes de la transmisión.
Desventajas: El sistema de permisos no es flexible y se debe proporcionar la contraseña de la cuenta del sistema operativo, incluso si solo necesita leer la versión.
Adaptarse a la escena: pequeños equipos, pequeños proyectos, proyectos temporales
Cómo utilizar el protocolo SSH
Aquí instalamos primero el servicio Git en el sistema Linux y luego usamos el protocolo SSH para comunicarnos con el servicio Git.
linux instalar servicio git
(1) Entorno dependiente de la instalación
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
(2) Descarga y descomprime el código fuente
wget https://github.com/git/git/archive/v2.3.0.zip
Si cree que la velocidad de la red de GitHub es demasiado lenta, puede seguir la cuenta oficial de [Glacier Technology] WeChat y responder [Git] para recibir el paquete de instalación de Git.
unzip v2.3.0.zip
cd git-2.3.0
(3) Compile e instale (si no tiene permiso, agregue sudo)
make prefix=/usr/local/git all
make prefix=/usr/local/git install
(4) Agregar variables de entorno
vim /etc/profile
export PATH=/usr/local/git/bin:$PATH
source /etc/profile
Si el número de versión se muestra correctamente, la adición se realiza correctamente.
git --version
git version 2.3.0
(5) Crea un proyecto simple
git --bare init binghe.git
(6) Local basado en almacén de clones remoto
git clone [email protected]:/data/git-repository/binghe.git
cd binghe/
(7) Agregar archivos
echo "this is binghe" >> README.MD
(8) Agregar, enviar y enviar localmente a remoto
git add -A; git commit -am 'first commit'; git push;
Posibles errores:
git-upload-pack: command not found
La razón es que solo se puede acceder a los directorios bajo / usr / bin bajo el protocolo ssh. La solución es la siguiente:
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pac\k
Protocolo HTTP
La implementación del protocolo http de Git se basa en contenedores WEB perezosos (apache, nginx) y componentes cgi para comunicación e interacción, y utiliza el propio sistema de permisos del contenedor WEB para la verificación de autorización. Antes de Git 1.6.6, solo se admitía el protocolo http dumb. Este protocolo solo se puede descargar, pero no enviar. Por lo general, se usa con el protocolo ssh. Ssh asigna una cuenta de envío y http dumb proporciona una cuenta de solo lectura. Después de 1.6.6, git proporciona git-http-backend CGI para recibir push remoto y otras funciones.
Ventajas: resuelve el problema único de la verificación de autorización local y ssh, y puede proporcionar servicios anónimos basados en la URL http, de modo que se pueda poner en la red pública. Sin embargo, local y ssh son difíciles de lograr, y es necesario implementar un sitio web como github.
Desventajas: La configuración es más complicada y requiere la implementación de un servidor WEB y una configuración como el certificado https
Escenario: equipos grandes, control preciso de permisos e implementación de servicios en la red pública
Configuración y uso HTTP Dumb
(1) Cree un almacén de versiones de servidor
cd /data/git-repository
git --bare init binghe.git
cd binghe.git/hooks/mv
(2) Enlace de actualización de versión, que realizará la actualización cuando se envíe una versión
post-update.sample post-update
./post-update
Configuración de acceso estático de Nginx
server {
listen 80;
server_name git.tl.com;
location / {
root /data/git-repository;
}
}
(3) Cambiar el nombre del gancho
mv hooks/post-update.sample hooks/post-update
(4) Servicio remoto de clonación local
git clone http://git.tl.com/binghe.git
Nota: El protocolo http Smart se basa en CGI y se usa con el script GIT git-http-backend. La configuración es más complicada. Por lo general, no se hace ahora, sino que utiliza la administración web como gitlab y gogs.
Protocolo de Git
El protocolo Git es un demonio especial incluido en Git; escucha en un puerto específico (9418), similar al servicio SSH, pero el acceso no requiere ninguna autorización.
Ventajas : En la actualidad, el protocolo Git es el más rápido de los protocolos de transmisión de red utilizados por Git. Si su proyecto tiene muchas visitas, o su proyecto es muy grande y no requiere autorización del usuario para escribir, configurar un demonio Git para proporcionar servicios es una buena opción. Utiliza el mismo mecanismo de transmisión de datos que SSH, pero elimina la sobrecarga de cifrado y autorización.
Desventajas : La desventaja del protocolo Git es la falta de mecanismos de autorización. Además, 9418 es un puerto no estándar y el firewall general no lo abrirá.
Uso del protocolo Git
cd binghe.git/
(1) Cree un archivo vacío, lo que significa que el proyecto está abierto
touch git-daemon-export-ok
(2) Inicie el demonio
nohub git daemon --reuseaddr --base-path=/data/git-repository/ /data/git-repository/ &
(3) Proyecto remoto de clonación local
git clone git://192.168.0.147:9418/binghe.git
Al ver esto, mis amigos están un poco cansados. Vamos a mostrarles una chica. Más adelante continuaremos el enfoque de hoy: construir un servicio Git privado a nivel empresarial.
、
Cree un servicio Git privado de nivel empresarial
Aquí, somos un servicio GIt de nivel empresarial basado en gogs.
instalación del servicio de gogs
Gogs es un servicio web Git ligero de código abierto, que se caracteriza por su sencillez y facilidad de uso, documentación completa y una muy buena internacionalización. Sus principales funciones son las siguientes:
- Proporcione dos protocolos Http y ssh para acceder a los servicios de código fuente
- Proporcionar una interfaz WEB para ver y modificar el código fuente.
- Proporcionar una función de gestión de autoridad más completa, incluida la autoridad de almacén, como organización, equipo e individuo.
- Proporcionar una función wiki de proyecto simple
- Proporcionar gestión de órdenes de trabajo y gestión de hitos.
Descargar e instalar
Sitio web oficial: https://gogs.io
Descargar: https://gogs.io/docs/installation elija linx amd64 para descargar e instalar
Documentación: https://gogs.io/docs/installation/install_from_binary
instalación
Directorio después de la descompresión:
correr
(1) Operación en primer plano
./gogs web
(2) Ejecutando en segundo plano
nohup ./gogs web &
Puerto predeterminado: 3000
La primera vez que visite http: //: 3000, ingresará a la página de inicialización para la configuración de arranque.
Se pueden seleccionar datos como mysql o sqlite. Sqllite se selecciona aquí
Nota: El problema de la longitud del índice de mysql no se instaló correctamente, debe usar mysql5.7 o superior
Configuración básica de Gogs
Instrucciones de configuración de correo:
La configuración de correo electrónico se utiliza para la confirmación por correo electrónico durante el registro y el envío de correo electrónico de verificación cuando se recupera la contraseña. La configuración se divide en dos pasos:
(1) Cree una cuenta de correo electrónico con el servicio smtp activado, generalmente el correo electrónico del administrador de la empresa. Yo uso el buzón QQ aquí.
(2) Configure en el archivo {gogs_home / custom / conf / app.ini.
Buzón QQ abre servicio smtp
(1) Haga clic en Configuración
(2) Encienda smtp
Ajustes del correo electrónico
Archivo de configuración: {gogs_home} /custom/conf/app.ini
Como puede ver, la información principal que configuramos es la siguiente.
ENABLED = true
HOST=smtp.qq.com:465
FROM=
USER=
PASSWD=
- HABILITADO : si se habilita el servicio de correo, verdadero significa habilitar el servicio de correo.
- host es la dirección del servidor smtp, (el servicio smtp debe ser activado por el buzón correspondiente y debe accederse en forma de ssl)
- de la dirección del nombre del remitente
- usuario que envía cuenta
- Habrá un código de autorización correspondiente cuando passwd abra una cuenta smtp
Después de reiniciar, puede probar directamente. Los amigos pueden probar en el siguiente orden.
Inicio de sesión de administrador ==》 Panel de control ==》 Gestión de configuración de la aplicación ==》 Configuración de correo ==》 Enviar correo electrónico de prueba
copia de seguridad y recuperación periódicas de gogs
Copia de seguridad y restaurar:
(1) Ver los parámetros relacionados con la copia de seguridad
./gogs backup -h
(2) La copia de seguridad predeterminada, la copia de seguridad está en el directorio actual
./gogs backup
(3) Copia de seguridad parametrizada - directorio de salida de destino - base de datos solo copia de seguridad db
./gogs backup --target=./backupes --database-only --exclude-repos
(4) Recuperación. Elimina custom.bak antes de ejecutar este comando
./gogs restore --from=gogs-backup-20200920062712.zip
(5) Script de respaldo automático
\#!/bin/sh -e
gogs_home="/home/apps/svr/gogs/"
backup_dir="$gogs_home/backups"
cd `dirname $0`
(6) Ejecute el comando de respaldo
./gogs backup --target=$backup_dir
echo 'backup sucess'
day=7
(7) Busque y elimine la copia de seguridad hace 7 días
find $backup_dir -name '*.zip' -mtime +7 -type f |xargs rm -f;
echo 'delete expire back data!'
(8) Agregue una tarea programada para realizar copias de seguridad a las 4:00 todos los días
Editor de tareas abierto
crontab -e
Ingrese el siguiente comando 00 04 * * * Ejecute do-backup.sh a las 4 AM todos los días y envíe el registro a # backup.log
00 04 * * * /home/apps/svr/gogs/do-backup.sh >> /home/apps/svr/gogs/backup.log 2>&1
Configurar y agregar la clave pública del cliente
Configuración de Git
Después de instalar Git, debe realizar la configuración final. Abra git bash y ejecute los siguientes dos comandos respectivamente
git config --global user.name “用户名”
git config --global user.email “邮箱”
Git recuerda automáticamente las operaciones de usuario y contraseña
git config --global credential.helper store
Creación de clave pública SSH
(1) Abrir git bash
(2) Ejecute el comando para generar claves públicas y privadas: ssh-keygen -t rsa y presione Enter 3 veces
(3) Ejecute el comando para ver la clave pública: cat ~ / .ssh / id_rsa.pub
(4) Copie el contenido de id_rsa.pub al servidor ~ / .ssh / allowed_keys
Grandes beneficios
Busque en la cuenta pública de WeChat [Glacier Technology] WeChat, preste atención a este programador en profundidad, lea los productos secos de tecnología de núcleo superduro todos los días y responda en la cuenta pública [PDF] He preparado los materiales de primera línea para entrevistas de fábricas importantes y mi superduro original Documentos técnicos en PDF nucleares, así como una serie de plantillas de currículum que he preparado cuidadosamente para todos (actualizadas continuamente), espero que todos puedan encontrar su trabajo favorito. Aprender es una forma de estar deprimido de vez en cuando y, a veces, de reír. Vamos. Si logra ingresar a la empresa de su elección a través del trabajo duro, no debe aflojarse: el crecimiento en el lugar de trabajo es lo mismo que el aprendizaje de nuevas tecnologías. Si tenemos la suerte, ¡nos vemos de nuevo!
Además, continuaré actualizando y manteniendo los PDF que abrí. ¡Gracias por su apoyo a largo plazo a Glacier! !