Cómo instalar el acortador de URL autoalojado YOURLS en CentOS 8

YOURLS es un acortador de URL gratuito, de código abierto y autoalojado, escrito en PHP. Es muy similar a TinyURL o Bitly y te permite gestionar tu propio servicio de acortamiento de URL. También te permite añadir marcas a tus URLs cortas. Ofrece un rico conjunto de características, incluyendo, enlace privado y público, palabras clave de URL personalizadas, informes históricos de clics, interfaz Ajaxed, soporte Jsonp y muchos más.

En este tutorial, te mostraremos cómo instalar YOURLS en CentOS 8 con Let’s Encrypt SSL.

Requisitos previos

  • Un servidor con CentOS 8.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada el servidor.

Instalar el servidor LEMP

En primer lugar, necesitarás instalar Nginx, MariaDB, PHP y las extensiones PHP necesarias en tu servidor. Puedes instalarlos todos con el siguiente comando:

dnf install nginx mariadb-server php php-fpm php-json php-common php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath git unzip wget -y

Una vez instalados todos los paquetes, edita el archivo de configuración de PHP-FPM /etc/php-fpm.d/www.conf y cambia el usuario de apache a nginx:

nano /etc/php-fpm.d/www.conf

Cambia las siguientes líneas:

user = nginx
group = nginx

Guarda y cierra el archivo y, a continuación, inicia el servicio Nginx, MariaDB y PHP-FPM y haz que se inicien al reiniciar el sistema con el siguiente comando:

systemctl start nginx
systemctl enable nginx
systemctl start mariadb
systemctl enable mariadb
systemctl start php-fpm
systemctl enable php-fpm

Una vez que hayas terminado, puedes pasar al siguiente paso.

Crear una base de datos para YOURLS

A continuación, tendrás que crear una base de datos y un usuario para YOURLS. En primer lugar, inicia sesión en MariaDB con el siguiente comando:

mysql

Una vez iniciada la sesión, crea una base de datos y un usuario con el siguiente comando:

MariaDB [(none)]> CREATE DATABASE yourlsdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON yourlsdb.* TO 'yourlsuser'@'localhost' IDENTIFIED BY 'password';

A continuación, vacía los privilegios y sal del MariaDB con el siguiente comando:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \q

En este punto, MariaDB está instalado y configurado.

Instalar YOURLS

Primero, cambia el directorio a la raíz web de Nginx y descarga la última versión de YOURLS con el siguiente comando

cd /var/www/html
git clone https://github.com/YOURLS/YOURLS.git

A continuación, cambia el nombre del archivo config de ejemplo con el siguiente comando

cd YOURLS/user/
cp config-sample.php config.php

A continuación, edita el archivo config.php y define la configuración de tu base de datos:

nano config.php

Cambia las siguientes líneas:

/** MySQL database username */
define( 'YOURLS_DB_USER', 'yourlsuser' );
 
/** MySQL database password */
define( 'YOURLS_DB_PASS', 'password' );
 
/** The name of the database for YOURLS
 ** Use lower case letters [a-z], digits [0-9] and underscores [_] only */
define( 'YOURLS_DB_NAME', 'yourlsdb' );
 
/** MySQL hostname.
 ** If using a non standard port, specify it like 'hostname:port', eg. 'localhost:9999' or '127.0.0.1:666' */
define( 'YOURLS_DB_HOST', 'localhost' );
 
/** MySQL tables prefix
 ** YOURLS will create tables using this prefix (eg `yourls_url`, `yourls_options`, ...)
 ** Use lower case letters [a-z], digits [0-9] and underscores [_] only */
define( 'YOURLS_DB_PREFIX', 'yourls_' );
 
define( 'YOURLS_SITE', 'http://yourls.example.com' );
$yourls_user_passwords = array(
        'admin' => 'yourpassword',

Guarda y cierra el archivo cuando hayas terminado. A continuación, crea un archivo .htaccess con el siguiente comando

nano /var/www/html/YOURLS/.htaccess

Añade las siguientes líneas:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /yourls-loader.php [L]
</IfModule>

Guarda y cierra el archivo y luego da los permisos y la propiedad adecuados con el siguiente comando:

chown -R nginx:nginx /var/www/html/YOURLS
chmod -R 775 /var/www/html/YOURLS

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar Nginx para YOURLS

A continuación, crea un nuevo archivo de configuración del host virtual Nginx para TULS:

nano /etc/nginx/conf.d/yourls.conf

Añade las siguientes líneas:

server {
  listen 80;
  server_name yourls.example.com;
  root /var/www/html/YOURLS;
  index index.php index.html index.htm;
  location / {
    try_files $uri $uri/ /yourls-loader.php$is_args$args;
  }

  location ~ \.php$ {
    include fastcgi.conf;

    fastcgi_index index.php;
    fastcgi_pass unix:/run/php-fpm/www.sock;
  }
}

Guarda y cierra el archivo y luego reinicia el servicio Nginx y PHP-FPM con el siguiente comando:

systemctl restart nginx
systemctl restart php-fpm

También puedes verificar el estado de Nginx con el siguiente comando:

systemctl status nginx

Deberías obtener la siguiente salida:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/nginx.service.d
           ??php-fpm.conf
   Active: active (running) since Tue 2020-10-20 09:37:40 EDT; 5min ago
  Process: 12864 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 12862 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 12860 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 12871 (nginx)
    Tasks: 3 (limit: 12523)
   Memory: 5.5M
   CGroup: /system.slice/nginx.service
           ??12871 nginx: master process /usr/sbin/nginx
           ??12872 nginx: worker process
           ??12873 nginx: worker process

Oct 20 09:37:40 centos systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Oct 20 09:37:40 centos systemd[1]: Starting The nginx HTTP and reverse proxy server...
Oct 20 09:37:40 centos nginx[12862]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Oct 20 09:37:40 centos nginx[12862]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Oct 20 09:37:40 centos systemd[1]: Started The nginx HTTP and reverse proxy server.

Configurar SELinux y Firewall

Por defecto, SELinux está activado en CentOS 8. Así que tendrás que configurarlo para tu sitio web YOURLS.

Puedes configurar el SELinux con el siguiente comando:

setsebool httpd_can_network_connect on -P
chcon -R -u system_u -t httpd_sys_rw_content_t -r object_r /var/www/html/YOURLS

A continuación, permite los puertos 80 y 443 a través del cortafuegos con el siguiente comando:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Una vez que hayas terminado, puedes pasar al siguiente paso.

Accede a YOURLS

Ahora, abre tu navegador web y accede a YOURLS utilizando la URL http://yourls.example.com/admin. Deberías ver la siguiente página:

YOURLS

Haz clic en el botón Instalar TSU. Deberías ver la siguiente página:

Instalador YOURLS

Haz clic en la «Página de administración de TSU». Deberías ver la página de inicio de sesión de YOURLS:

Entra en

Proporciona tu nombre de usuario y contraseña de administrador que has definido en el config.php y luego haz clic en el botón Iniciar sesión. Deberías ver el tablero de YOURLS en la siguiente página:

Tablero de administración de YOURLS

Asegura YOURLS con Let’s Encrypt SSL

A continuación, tendrás que instalar la utilidad Certbot en tu sistema para descargar e instalar Let’s Encrypt SSL para tu sitio web YOURLS.

Puedes instalar el cliente Certbot con el siguiente comando:

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

A continuación, obtén e instala un certificado SSL para tu sitio web YOURLS con el siguiente comando:

certbot-auto --nginx -d yourls.example.com

El comando anterior instalará primero todas las dependencias necesarias en tu servidor. Una vez instalado, se te pedirá que proporciones una dirección de correo electrónico y que aceptes las condiciones del servicio, como se muestra a continuación:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to

cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for yourls.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/yourls.conf

Selecciona si quieres redirigir el tráfico HTTP a HTTPS o no, como se muestra a continuación:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for

new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Escribe 2 y pulsa Intro para continuar. Una vez que la instalación se haya completado con éxito, deberías obtener el siguiente resultado:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/yourls.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://yourls.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=yourls.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/yourls.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/yourls.example.com/privkey.pem
   Your cert will expire on 2020-06-11. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Ahora puedes acceder al sitio web YOURLS de forma segura utilizando la URL https://yourls.example.com.

Enhorabuena! has instalado con éxito YOURLS con Nginx y Let’s Encrypt SSL en CentOS 8.

También te podría gustar...