Cómo instalar el servidor de automatización Jenkins con Apache en Ubuntu 20.04
Jenkins es un servidor de automatización gratuito y de código abierto que ayuda a los desarrolladores a construir, probar y desplegar su software. Está basado en Java y proporciona más de 1700 plugins que ayudan a automatizar las tareas repetitivas del proceso de desarrollo de software. Es compatible con varios sistemas operativos, como Windows, Mac OS X y Linux, y puede distribuirse fácilmente en varias máquinas.
En este tutorial, te mostraremos cómo instalar Jenkins con Apache como proxy inverso en Ubuntu 20.04.
Requisitos previos
- Un servidor que ejecute Ubuntu 20.04.
- Una contraseña de root configurada el servidor.
Cómo empezar
Antes de empezar, es una buena idea actualizar tu sistema con la última versión. Puedes actualizar tu sistema con el siguiente comando:
apt-get update -y
apt-get upgrade -y
Después de actualizar el sistema, reinícialo para aplicar los cambios.
Instala Java
Jenkins se basa en Java, por lo que debe estar instalado en tu sistema. Si no está instalado, puedes instalarlo ejecutando el siguiente comando:
apt-get install openjdk-11-jdk gnupg2 -y
Una vez instalado, comprueba la versión instalada de Java con el siguiente comando:
java -version
Deberías obtener la siguiente salida:
openjdk version "11.0.8" 2020-07-14 OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04) OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar Jenkins
Por defecto, la última versión de Jenkins no está disponible en el repositorio por defecto de Ubuntu 20.04. Así que tendrás que añadir el repositorio de Jenkins a tu sistema.
Primero, descarga y añade la clave GPG con el siguiente comando:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | apt-key add -
A continuación, añade el repositorio de Jenkins a la APT con el siguiente comando:
sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
A continuación, actualiza el repositorio e instala la última versión de Jenkins con el siguiente comando:
apt-get update -y
apt-get install jenkins -y
Después de la instalación con éxito, comprueba el estado de Jenkins con el siguiente comando:
systemctl status jenkins
Deberías ver la siguiente salida:
? jenkins.service - LSB: Start Jenkins at boot time Loaded: loaded (/etc/init.d/jenkins; generated) Active: active (exited) since Sun 2020-08-09 12:50:35 UTC; 44s ago Docs: man:systemd-sysv-generator(8) Tasks: 0 (limit: 2353) Memory: 0B CGroup: /system.slice/jenkins.service Aug 09 12:50:34 ubuntu2004 systemd[1]: Starting LSB: Start Jenkins at boot time... Aug 09 12:50:34 ubuntu2004 jenkins[6134]: Correct java version found Aug 09 12:50:34 ubuntu2004 jenkins[6134]: * Starting Jenkins Automation Server jenkins Aug 09 12:50:34 ubuntu2004 su[6180]: (to jenkins) root on none Aug 09 12:50:34 ubuntu2004 su[6180]: pam_unix(su-l:session): session opened for user jenkins by (uid=0) Aug 09 12:50:34 ubuntu2004 su[6180]: pam_unix(su-l:session): session closed for user jenkins Aug 09 12:50:35 ubuntu2004 jenkins[6134]: ...done. Aug 09 12:50:35 ubuntu2004 systemd[1]: Started LSB: Start Jenkins at boot time.
En este momento Jenkins se está ejecutando y está escuchando en el puerto 8080. Puedes comprobarlo con el siguiente comando:
netstat -plntu | grep 8080
Deberías ver la siguiente salida:
tcp6 0 0 :::8080 :::* LISTEN 6192/java
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar Apache como proxy inverso
A continuación, tendrás que instalar y configurar Apache como proxy inverso para Jenkins. Así podrás acceder a Jenkins a través del puerto 80.
Primero, instala el servidor web Apache con el siguiente comando:
apt-get install apache2 -y
Después de instalar el servidor web Apache, habilita los módulos necesarios con el siguiente comando:
a2enmod proxy
a2enmod proxy_http
A continuación, crea un archivo de configuración del host virtual de Apache para Jenkins con el siguiente comando:
nano /etc/apache2/sites-available/jenkins.conf
Añade las siguientes líneas:
<Virtualhost *:80> ServerName jenkins.example.com ProxyRequests Off ProxyPreserveHost On AllowEncodedSlashes NoDecode <Proxy http://localhost:8080/> Order deny,allow Allow from all </Proxy> ProxyPass / http://localhost:8080/ nocanon ProxyPassReverse / http://localhost:8080/ ProxyPassReverse / http://jenkins.hakase-labs.io/ </Virtualhost>
Guarda y cierra el archivo cuando hayas terminado. A continuación, habilita el archivo de configuración del host virtual de Apache con el siguiente comando:
a2ensite jenkins
A continuación, reinicia el servicio de Apache y Jenkins para aplicar los cambios:
systemctl reload apache2
systemctl restart jenkins
Ahora puedes comprobar el estado del servicio Apache con el siguiente comando:
systemctl status apache2
Deberías obtener la siguiente salida:
? apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d ??apache2-systemd.conf Active: active (running) since Sun 2020-08-10 12:41:30 UTC; 22min ago Process: 15407 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS) Main PID: 14417 (apache2) Tasks: 11 (limit: 1114) CGroup: /system.slice/apache2.service ??14417 /usr/sbin/apache2 -k start ??15412 /usr/sbin/apache2 -k start ??15413 /usr/sbin/apache2 -k start ??15414 /usr/sbin/apache2 -k start ??15416 /usr/sbin/apache2 -k start ??15417 /usr/sbin/apache2 -k start ??15418 /usr/sbin/apache2 -k start ??15419 /usr/sbin/apache2 -k start ??15420 /usr/sbin/apache2 -k start ??15422 /usr/sbin/apache2 -k start ??15429 /usr/sbin/apache2 -k start Aug 10 12:41:29 ubuntu20.04 systemd[1]: Starting The Apache HTTP Server...
En este punto, el servidor web Apache está configurado para servir a Jenkins. Ahora puedes pasar al siguiente paso.
Nota: si te conectas a Jenkins a través de Internet, se recomienda asegurar las conexiones con SSL/TLS. Para habilitar SSL mediante Let’s Encrypt usando certbot para la interfaz web de Jenkins, echa un vistazo aquí:
https://www.howtoforge.com/how-to-manage-lets-encrypt-ssl-tls-certificates-with-certbot/
Accede a la interfaz web de Jenkins
Ahora, abre tu navegador web y escribe la URL http://jenkins.example.com. Se te pedirá que introduzcas la contraseña inicial de administrador como se muestra a continuación:
Puedes ver la contraseña inicial de administrador de Jenkins con el siguiente comando:
cat /var/lib/jenkins/secrets/initialAdminPassword
Deberías ver la contraseña de Jenkins en la siguiente salida:
78d6b10330434b27a09590fc781c9e6d
Escribe la contraseña de la salida anterior en la pantalla de inicio de sesión y haz clic en el botón Continuar. Serás redirigido a la pantalla de personalización de Jenkins:
Selecciona la opción que desees y haz clic en ella. Deberías ver la pantalla de instalación de plugins de Jenkins en curso:
Una vez que todos los plugins se hayan instalado correctamente, deberías ver la siguiente pantalla:
Proporciona tu nombre de usuario, contraseña y correo electrónico de administrador y haz clic en el botón Guardar y continuar. Deberías ver la siguiente pantalla:
Escribe tu URL de Jenkins y haz clic en el botón Guardar y Finalizar. Deberías ver la siguiente pantalla:
Haz clic en el botón«Empezar a usar Jenkins«. Deberías ver el panel de control de Jenkins en la siguiente pantalla:
A continuación, tendrás que configurar las opciones de seguridad estándar de Jenkins.
En el panel izquierdo, haz clic en Gestionar Jenkins => Configurar la seguridad global. Deberías ver la siguiente pantalla:
Ahora, selecciona Seguridad basada en la matriz, añade tu usuario, concede privilegios completos y haz clic en el botón Guardar.
Prueba de Jenkins
Llegados a este punto, Jenkins está instalado y configurado. Es el momento de crear un trabajo de muestra y probar la funcionalidad de Jenkins.
En el panel de control de Jenkins, haz clic en el botón Crear nuevo trabajo. Deberías ver la siguiente pantalla:
Proporciona el nombre de tu trabajo, selecciona el proyecto Freestyle y haz clic en el botón Aceptar. Deberías ver la siguiente pantalla:
Ahora, haz clic en la pestaña Construir. En«Añadir paso de construcción», selecciona la opción«Ejecutarshell» y escribe«free -m» en el cuadro de comandos. A continuación, haz clic en el botón Guardar. Deberías ver la siguiente pantalla:
Ahora, haz clic en el botón «Construirahora» del panel izquierdo para ejecutar el trabajo. Una vez ejecutado el trabajo, deberías ver la salida de la consola del trabajo ejecutado por Jenkins en la siguiente pantalla:
Conclusión
Enhorabuena! has instalado con éxito Jenkins con Apache en el servidor Ubuntu 20.04. Ahora puedes utilizar Jenkins en el entorno de desarrollo para acelerar el proceso de desarrollo. No dudes en preguntarme si tienes alguna duda.