ZPanel y Sentora en CentOS 6 x64
ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.
La integración continua es una práctica de desarrollo de software DevOps que permite a los desarrolladores fusionar con frecuencia el código modificado en el repositorio compartido muchas veces al día. Después de cada fusión, se realizan compilaciones y pruebas automáticas para detectar problemas en el código. Permite a los desarrolladores encontrar y resolver los errores rápidamente para mejorar la calidad del software y proporcionar una entrega continua del software. Cambiar de un lado a otro de Concourse es muy fácil, ya que mantiene toda su configuración en archivos declarativos que se pueden verificar en el control de versiones. También proporciona una interfaz de usuario web que muestra la información de compilación de forma interactiva.
Asegúrese de reemplazar todas las apariciones de 192.0.2.1
y ci.example.com
con su dirección IP pública y nombre de dominio real de Vultr.
Actualice su sistema base utilizando la guía Cómo actualizar CentOS 7 . Una vez que su sistema ha sido actualizado, proceda a instalar PostgreSQL.
PostgreSQL es un sistema de base de datos relacional de objetos. Concourse almacena sus datos de canalización en una base de datos PostgreSQL. Agregue el repositorio PostgreSQL.
sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
Instale el servidor de base de datos PostgreSQL.
sudo yum -y install postgresql96-server postgresql96-contrib
Inicializar la base de datos.
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
initdb
crea un nuevo clúster de base de datos PostgreSQL, que es una colección de bases de datos que son administradas por una sola instancia de servidor. Edite el pg_hba.conf
archivo para habilitar la autenticación basada en MD5.
sudo nano /var/lib/pgsql/9.6/data/pg_hba.conf
Encuentre las siguientes líneas y cambie los valores peer
y ident
en la METHOD
columna a trust
y md5
, respectivamente.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
Una vez actualizada, la configuración debería verse así.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Inicie el servidor PostgreSQL y permita que se inicie automáticamente en el momento del arranque.
sudo systemctl start postgresql-9.6
sudo systemctl enable postgresql-9.6
Cambie la contraseña para el usuario predeterminado de PostgreSQL.
sudo passwd postgres
Inicie sesión como usuario de PostgreSQL:
sudo su - postgres
Cree un nuevo usuario de PostgreSQL para Concourse CI.
createuser concourse
Nota : El usuario predeterminado de PostgreSQL se puede usar para la autenticación de la base de datos, pero se recomienda usar un usuario dedicado para la autenticación de la base de datos Concourse en una configuración de producción.
PostgreSQL proporciona un shell para ejecutar consultas en la base de datos. Cambie al shell PostgreSQL ejecutando:
psql
Establezca una contraseña para el usuario de la base de datos Concourse recién creado.
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
Importante : Reemplace DBPassword
con una contraseña segura. Anote la contraseña, ya que será necesaria más adelante en el tutorial.
Cree una nueva base de datos para Concourse.
CREATE DATABASE concourse OWNER concourse;
Sal de la psql
cáscara.
\q
Cambie al usuario sudo del usuario actual de postgres.
exit
Descargue la última versión del ejecutable Concourse y guárdelo /usr/bin
para que pueda ejecutarse directamente. La última versión de los binarios Concourse y Fly se puede encontrar en la página de descarga de Concourse . Los nuevos lanzamientos son muy frecuentes. Reemplace el enlace a continuación con el nuevo enlace para la versión más reciente.
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/concourse_linux_amd64 -O /usr/bin/concourse
Del mismo modo, descargue la última versión del ejecutable fly y guárdelo /usr/bin
.
sudo wget https://github.com/concourse/concourse/releases/download/v3.4.1/fly_linux_amd64 -O /usr/bin/fly
Fly es la interfaz de línea de comando para conectarse a la API ATC de Concourse CI. Fly está disponible para múltiples plataformas como Linux, Windows y MacOS.
Asigne permiso de ejecución a los archivos descargados concourse
y fly
binarios.
sudo chmod +x /usr/bin/concourse /usr/bin/fly
Compruebe si Concourse y Fly funcionan correctamente verificando su versión.
concourse -version
fly -version
Los pares de claves RSA proporcionan una forma de encriptar la comunicación entre los componentes del Concurso.
Para que Concourse funcione, se deben generar al menos tres pares de claves. Para cifrar los datos de la sesión, genere a session_signing_key
. TSA también utilizará esta clave para firmar las solicitudes que realiza al ATC. Para asegurar el servidor TSA SSH, genere a tsa_host_key
. Finalmente, genere un worker_key
para cada trabajador.
Cree un nuevo directorio para almacenar las claves y la configuración relacionadas con Concourse CI.
sudo mkdir /opt/concourse
Genere las claves requeridas.
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key
Autorice la clave pública de los trabajadores copiando su contenido en el authorized_worker_keys
archivo:
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse proporciona dos componentes separados que deben iniciarse, la web y el trabajador. Inicie la web Concourse.
sudo concourse web \
--basic-auth-username admin \
--basic-auth-password StrongPass \
--session-signing-key /opt/concourse/session_signing_key \
--tsa-host-key /opt/concourse/tsa_host_key \
--tsa-authorized-keys /opt/concourse/authorized_worker_keys \
--postgres-user=concourse \
--postgres-password=DBPassword \
--postgres-database=concourse \
--external-url http://192.0.2.1:8080
Cambie el nombre de usuario y la contraseña del basic-auth
si lo desea. Asegúrese de que la ruta a los archivos clave sea correcta y asegúrese de que se proporciona el valor correcto para nombre de usuario y contraseña en la configuración de la base de datos PostgreSQL.
Nota : ATC escuchará el puerto predeterminado 8080
y TSA escuchará el puerto 2222
. Si no se desea la autenticación, pase la --no-really-i-dont-want-any-auth
opción después de eliminar las opciones básicas de autenticación.
Una vez que se inicia el servidor web, se debe mostrar la siguiente salida.
{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}
Detenga el servidor por ahora, ya que todavía hay que configurar algunas cosas más.
Comience el Concurso Trabajador de CI.
sudo concourse worker \
--work-dir /opt/concourse/worker \
--tsa-host 127.0.0.1 \
--tsa-public-key /opt/concourse/tsa_host_key.pub \
--tsa-worker-private-key /opt/concourse/worker_key
El comando anterior supondrá que el TSA se está ejecutando en localhost y está escuchando el puerto predeterminado 2222
.
Aunque la web y el trabajador de Concourse se pueden iniciar fácilmente usando los comandos anteriores, se recomienda usar Systemd para administrar el servidor.
El uso del servicio Systemd para administrar la aplicación garantiza que la aplicación se inicie automáticamente en caso de fallas y en el momento del arranque. El servidor Concourse no toma datos de ningún archivo de configuración, pero puede acceder a los datos de las variables de entorno. En lugar de establecer variables de entorno globales, cree un nuevo archivo para almacenar las variables de entorno y luego pase las variables al Concourse CI utilizando el servicio Systemd.
Cree un nuevo archivo de entorno para Concourse web.
sudo nano /opt/concourse/web.env
Rellene el archivo.
CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys
CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse
CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080
Cambie el nombre de usuario y la contraseña del BASIC_AUTH
si lo desea. Asegúrese de que la ruta a los archivos clave sea correcta y asegúrese de que se proporciona el valor correcto para nombre de usuario y contraseña en la configuración de la base de datos PostgreSQL.
Del mismo modo, cree un archivo de entorno para el trabajador.
sudo nano /opt/concourse/worker.env
Rellene el archivo.
CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1
Como los archivos de entorno contienen nombre de usuario y contraseñas, cambie sus permisos para que otros usuarios no puedan acceder a ellos.
sudo chmod 600 /opt/concourse/*.env
Ahora cree un nuevo usuario para Concourse para ejecutar el entorno web. Esto garantizará que el servidor web se ejecute en un entorno aislado.
sudo adduser --system concourse
Otorgue al usuario del concurso propiedad sobre el directorio del archivo Concourse CI.
sudo chown -R concourse:concourse /opt/concourse
Cree un nuevo archivo de servicio systemd para el servicio web Concourse.
sudo nano /etc/systemd/system/concourse-web.service
Rellene el archivo.
[Unit]
Description=Concourse CI web server
After=postgresql-9.6.service
[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web
[Install]
WantedBy=multi-user.target
Guarde y cierre el archivo. Cree un nuevo archivo de servicio para el servicio de trabajo Concourse.
sudo nano /etc/systemd/system/concourse-worker.service
Rellene el archivo.
[Unit]
Description=Concourse CI worker process
After=concourse-web.service
[Service]
Type=simple
User=root
Group=root
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker
[Install]
WantedBy=multi-user.target
El servicio web y de trabajo ahora se puede iniciar directamente ejecutando:
sudo systemctl start concourse-web concourse-worker
Para permitir que el trabajador y el proceso web se inicien automáticamente en el momento del arranque, ejecute:
sudo systemctl enable concourse-worker concourse-web
Para verificar el estado de los servicios, ejecute:
sudo systemctl status concourse-worker concourse-web
Si el servicio no se inicia, o en el FAILED
estado, elimine el caché del /tmp
directorio.
sudo rm -rf /tmp/*
Reiniciar los servicios.
sudo systemctl restart concourse-worker concourse-web
Tenga en cuenta que esta vez los servicios se han iniciado correctamente. El resultado al verificar el estado de los servicios debe ser similar.
[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3037 (concourse)
CGroup: /system.slice/concourse-worker.service
└─3037 /usr/bin/concourse worker
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...
● concourse-web.service - Concourse CI web server
Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3036 (concourse)
CGroup: /system.slice/concourse-web.service
└─3036 /usr/bin/concourse web
Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.
Ajuste su firewall para permitir el puerto 8080, en el que se ejecuta ATS y el puerto 2222, en el que se ejecuta TSA.
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --reload
Una vez que se inicia el servidor, se puede acceder a la interfaz web de Concourse CI http://192.0.2.1:8080
desde cualquier navegador. Inicie sesión con el nombre de usuario y la contraseña proporcionados en el archivo del entorno.
Para conectarse al servidor usando Fly, ejecute:
fly -t my-ci login -c http://192.0.2.1:8080
El comando anterior se utiliza para el inicio de sesión inicial en el servidor. -t
se usa para proporcionar un nombre de destino. reemplazar my-ci
con cualquier nombre de destino deseado. El comando anterior iniciará sesión en el equipo predeterminado main
. Le pedirá el nombre de usuario y la contraseña proporcionados en el archivo de entorno.
La salida tendrá el siguiente aspecto.
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
El inicio de sesión objetivo se guardará por un día. Después de eso, expirará.
Para cerrar sesión de inmediato.
fly -t my-ci logout
fly se puede usar para iniciar sesión en el servidor fuera de la red, pero solo si el servidor tiene una dirección IP pública y es accesible desde fuera de la red. El binario de Windows o MacOS se puede descargar desde el sitio de descarga o desde la interfaz de usuario web del servidor.
Los inicios de sesión y otra información enviada a través de la interfaz de usuario web al servidor Concourse no están protegidos. La conexión no está encriptada. Se puede configurar un proxy inverso de Nginx con un SSL gratuito Let's Encrypt.
Instale el servidor web Nginx y Certbot, que es la aplicación cliente para Let's Encrypt CA.
sudo yum -y install certbot-nginx nginx
Inicie y habilite Nginx para que se inicie automáticamente en el momento del arranque:
sudo systemctl start nginx
sudo systemctl enable nginx
Antes de que se pueda hacer una solicitud para los certificados, el puerto 80 y 443, o los servicios estándar HTTP y HTTPS, deben habilitarse a través del firewall. Certbot verificará la autoridad del dominio antes de emitir certificados.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
Ya no es necesario permitir el puerto 8080 a través del firewall porque Concourse ahora se ejecutará en el puerto HTTPS estándar. Elimine la entrada del firewall para permitir el puerto 8080.
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
sudo firewall-cmd --reload
Nota
Para obtener certificados de Let's Encrypt CA, el dominio para el que se generarán los certificados debe apuntar hacia el servidor. De lo contrario, realice los cambios necesarios en los registros DNS del dominio y espere a que se propague el DNS antes de volver a solicitar el certificado. Certbot verifica la autoridad del dominio antes de proporcionar los certificados.
Generar los certificados SSL.
sudo certbot certonly --webroot -w /usr/share/nginx/html -d ci.example.com
Es probable que los certificados generados se almacenen en el /etc/letsencrypt/live/ci.example.com/
directorio. El certificado SSL se almacenará como fullchain.pem
y la clave privada se almacenará como privkey.pem
.
Encriptemos los certificados caducan en 90 días, por lo que se recomienda que la renovación automática de los certificados se configure con cronjobs. Cron es un servicio del sistema que se utiliza para ejecutar tareas periódicas.
Abra el archivo de trabajo cron.
sudo crontab -e
Agregue la siguiente línea al final del archivo.
30 5 * * 1 /usr/bin/certbot renew --quiet
El trabajo cron anterior se ejecutará todos los lunes a las 5:30 a.m. Si el certificado vence, se renovará automáticamente.
Crea un nuevo host virtual.
sudo nano /etc/nginx/conf.d/concourse-ssl.conf
Rellene el archivo.
server {
listen 80;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name ci.example.com;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/concourse.access.log;
location / {
proxy_set_header Host $host;
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 $scheme;
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://ci.example.com;
}
}
Nota : Reemplace ci.example.com
con el dominio real.
Edite el archivo de entorno creado para el concurso web.
sudo nano /opt/concourse/web.env
Cambie el valor de CONCOURSE_EXTERNAL_URL
y también agregue dos líneas más al final del archivo.
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
Guarde el archivo y reinicie Concourse Web, Worker y el servidor web Nginx:
sudo systemctl restart concourse-worker concourse-web nginx
Todos los datos enviados desde y hacia el navegador ahora están protegidos con encriptaciones SSL.
ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.
Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.
¿Usando un sistema diferente? MODX Revolution es un sistema de gestión de contenido (CMS) de nivel empresarial rápido, flexible, escalable, gratuito y de código abierto escrito i
Vultr le ofrece una increíble conectividad de red privada para servidores que se ejecutan en la misma ubicación. Pero a veces quieres dos servidores en diferentes países.
Using a Different System? Introduction CyberPanel is one of the first control panels on the market that is both open source and uses OpenLiteSpeed. What thi
Using a Different System? ESpeak can generate text-to-speech (TTS) audio files. These can be useful for many reasons, such as creating your own Turin
¿Usando un sistema diferente? Thelia es una herramienta de código abierto para crear sitios web de comercio electrónico y administrar contenido en línea, escrito en PHP. Código fuente de Thelia i
¿Usando un sistema diferente? LibreNMS es un completo sistema de monitoreo de red de código abierto. Utiliza SNMP para obtener los datos de diferentes dispositivos. Una variedad
Cacti es una herramienta de gráficos y monitoreo de red de código abierto y libre escrita en PHP. Con la ayuda de RRDtool (herramienta de base de datos Round-Robin), Cacti se puede usar t
Usar un usuario sudo para acceder a un servidor y ejecutar comandos a nivel raíz es una práctica muy común entre Linux y Unix Systems Administrator. El uso de un sud
¿Usando un sistema diferente? Zabbix es un software gratuito y de código abierto listo para empresas que se utiliza para monitorear la disponibilidad de sistemas y componentes de red.
MODX es un sistema de gestión de contenido gratuito y de código abierto escrito en PHP. Utiliza MySQL o MariaDB para almacenar su base de datos. MODX está diseñado para el negocio i
YOURLS (Your Own URL Shortener) es una aplicación de análisis de datos y acortamiento de URL de código abierto. En este artículo, cubriremos el proceso de instalación
Using a Different System? RTMP is great for serving live content. When RTMP is paired with FFmpeg, streams can be converted into various qualities. Vultr i
LimeSurvey es una herramienta de encuestas en línea gratuita y de código abierto que se utiliza ampliamente para publicar encuestas en línea y para recopilar comentarios de encuestas. En este artículo, voy a
¿Usando un sistema diferente? Vanilla forum es una aplicación de foro de código abierto escrita en PHP. Es totalmente personalizable, fácil de usar y admite dispositivos externos.
¿Usando un sistema diferente? Netdata es una estrella en ascenso en el campo del monitoreo de métricas del sistema en tiempo real. En comparación con otras herramientas del mismo tipo, Netdata:
En este tutorial, aprende bien cómo configurar un servidor multijugador Just Cause 2. Requisitos previos Asegúrese de que el sistema esté completamente actualizado antes de comenzar
¿Usando un sistema diferente? En este tutorial, explicaré cómo configurar un servidor Starbound en CentOS 7. Requisitos previos Necesitas tener este juego contigo
ZNC es un enlace IRC gratuito y de código abierto que permanece permanentemente conectado a una red para que los clientes puedan recibir mensajes enviados mientras están desconectados. Thi
ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.
Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.
Esta guía completa le mostrará cómo configurar un servidor Counter-Strike 1.6 en Linux, optimizando el rendimiento y la seguridad para el mejor juego. Aprende los pasos más recientes aquí.
Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición
ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.
Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+
Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.
Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información
13 Herramientas comerciales de extracción de datos de Big Data
Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.