SRI::fossil-setup: add
Signed-off-by: Nicolás A. Ortega Froysa <nicolas@ortegas.org>
This commit is contained in:
		
							
								
								
									
										123
									
								
								2/SRI/assignments/fossil-setup/fossil-setup.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								2/SRI/assignments/fossil-setup/fossil-setup.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,123 @@
 | 
				
			|||||||
 | 
					# Configuración de un Servidor Fossil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Nicolás A. Ortega Froysa
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Introducción
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fossil es un sistema de gestión de versiones, considerado generalmente como
 | 
				
			||||||
 | 
					alternativa a Git, pero que contiene además soporte para muchos elementos que
 | 
				
			||||||
 | 
					suelen estar asociados a los proyectos de código, como serían Wiki y una
 | 
				
			||||||
 | 
					herramienta de gestión de tarea. Es una herramienta poco usada en ámbitos
 | 
				
			||||||
 | 
					generales, pero sí se usa para el proyecto conocido SQLite. También tiene la
 | 
				
			||||||
 | 
					ventaja de que todo está contenido dentro del mismo repositorio, y por tanto se
 | 
				
			||||||
 | 
					puede compartir fácilmente, y descentralizar el control del código.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Instalación de Fossil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Antes de configurar nuestro servicio hemos de instalar Fossil en nuestro
 | 
				
			||||||
 | 
					servidor. Como estamos usando un sistema Debian, lo instalamos utilizando el
 | 
				
			||||||
 | 
					comando siguiente:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					# apt install fossil
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Creación del Repositorio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Una vez instalado, vamos a crear el repositorio como tal, que consta de un
 | 
				
			||||||
 | 
					archivo que guardaremos en el servidor. Para hacer esto primero hemos de crear
 | 
				
			||||||
 | 
					el usuario y grupo que se encargará de gestionar este repositorio.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					# groupadd fossil
 | 
				
			||||||
 | 
					# useradd -d /srv/fossil -m -g fossil -s /usr/sbin/nologin fossil
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Esto creará el directorio `/srv/fossil` que lo usaremos para guardar el archivo
 | 
				
			||||||
 | 
					del repositorio. Para crear el repositorio como tal hemos de correr el comando
 | 
				
			||||||
 | 
					siguiente:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					# cd /srv/fossil
 | 
				
			||||||
 | 
					# fossil init semanaverde.fossil
 | 
				
			||||||
 | 
					project-id: 88b14f646618a2bbef27386242a857e56c55ced3
 | 
				
			||||||
 | 
					server-id:  23476a9b53e66b1866c04de1d59a4947bb068869
 | 
				
			||||||
 | 
					admin-user: root (initial password is "qbHCunmSj8")
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Esto nos mostrará el usuario y la contraseña del usuario administrador, que
 | 
				
			||||||
 | 
					deberíamos guardarlo para luego.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Finalmente, para que el usuario `fossil` pueda acceder al archivo (y más
 | 
				
			||||||
 | 
					importante, modificarlo) cambiamos el dueño del archivo:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					# chown fossil:fossil semanaverde.fossil
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Configuración del Servidor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					El servidor de Fossil (web) se accede mejor por medio de un SCGI. Para esto, lo
 | 
				
			||||||
 | 
					que más nos conviene (en un sistema Debian) es crear un servicio de Systemd para
 | 
				
			||||||
 | 
					que se inicialice al iniciar el sistema. Para eso crearemos
 | 
				
			||||||
 | 
					`/usr/lib/systemd/system/fossil-server.service` con el contenido siguiente:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Fossil user server
 | 
				
			||||||
 | 
					After=network-online.target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					WorkingDirectory=/srv/fossil
 | 
				
			||||||
 | 
					ExecStart=/usr/bin/fossil server --scgi --localhost --port 8080 /srv/fossil/semanaverde.fossil
 | 
				
			||||||
 | 
					User=fossil
 | 
				
			||||||
 | 
					Group=fossil
 | 
				
			||||||
 | 
					Restart=always
 | 
				
			||||||
 | 
					RestartSec=3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ahora ya podremos gestionar nuestro servicio por medio de `systemctl` como
 | 
				
			||||||
 | 
					cualquier otro servicio. Como queremos habilitar y encender este servicio,
 | 
				
			||||||
 | 
					corremos los comandos siguientes:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					# systemctl enable fossil-server.service
 | 
				
			||||||
 | 
					# systemctl start fossil-server.service
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Configuración del Proxy con Nginx
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Una vez que tengamos el servicio puesto, es necesario crear un proxy que apunta
 | 
				
			||||||
 | 
					(y traduce) a nuestro servidor Fossil. En nuestro caso usaremos el servidor HTTP
 | 
				
			||||||
 | 
					Nginx. Crearemos un archivo de configuración Nginx con el __path__
 | 
				
			||||||
 | 
					`/etc/nginx/sites-available/repo.semanaverde.com.es.conf` con el contenido
 | 
				
			||||||
 | 
					siguiente:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ahora creamos un enlace simbólico para que Nginx vea esta configuración,
 | 
				
			||||||
 | 
					habilitándolo:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					# cd /etc/nginx/sites-enabled
 | 
				
			||||||
 | 
					# ln -s ../sites-available/repo.semanaverde.com.es.conf ./
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Comprobamos que está escrito correctamente el código:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					# nginx -t
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Si todo sale bien, reiniciamos Nginx para poder tener acceso a nuestro servicio
 | 
				
			||||||
 | 
					de Fossil:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					# systemctl reload nginx.service
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ya con esto podremos acceder a nuestro servicio Fossil desde
 | 
				
			||||||
 | 
					`repo.semanaverde.com.es`.
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								2/SRI/assignments/fossil-setup/nginx-fossil.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								2/SRI/assignments/fossil-setup/nginx-fossil.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 19 KiB  | 
		Reference in New Issue
	
	Block a user