YOURLS zelf gehoste URL-verkorter te installeren op CentOS 8

YOURLS is een gratis, open-source en zelf gehoste URL-verkorter geschreven in PHP. Het lijkt erg op TinyURL of Bitly en stelt je in staat je eigen URL-verkortingsdienst te draaien. Je kunt er ook branding aan je korte URL’s mee toevoegen. Het biedt een groot aantal mogelijkheden, waaronder Privé en Openbare links, Aangepaste URL sleutelwoorden, Historische klikrapporten, Ajax interface, Jsonp ondersteuning en nog veel meer.

In deze tutorial laten we je zien hoe je YOURLS installeert op CentOS 8 met Let’s Encrypt SSL.

Voorwaarden

  • Een server met CentOS 8.
  • Een geldige domeinnaam gekoppeld aan het IP van je server.
  • Een root wachtwoord is op de server geconfigureerd.

LEMP-server installeren

Eerst moet je Nginx, MariaDB, PHP en de vereiste PHP-extensies op je server installeren. Je kunt ze allemaal installeren met het volgende commando:

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

Als alle pakketten zijn geïnstalleerd, bewerk dan het PHP-FPM configuratiebestand /etc/php-fpm.d/www.conf en verander de gebruiker van apache in nginx:

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

Wijzig de volgende regels:

user = nginx
group = nginx

Sla het bestand op en sluit het en start dan Nginx, MariaDB, PHP-FPM service en schakel ze in om te starten bij het opnieuw opstarten van het systeem met het volgende commando:

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

Als je klaar bent, kun je doorgaan met de volgende stap.

Maak een database aan voor UWLS

Vervolgens moet je een database en gebruiker aanmaken voor YOURLS. Log eerst in op MariaDB met het volgende commando:

mysql

Eenmaal ingelogd, maak je een database en gebruiker aan met het volgende commando:

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

Spoel vervolgens de privileges door en verlaat de MariaDB met het volgende commando:

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

Op dit punt is MariaDB geïnstalleerd en geconfigureerd.

NginLS installeren

Verander eerst de directory naar Nginx web root en download de laatste versie van YOURLS met het volgende commando:

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

Hernoem vervolgens het voorbeeld config bestand met het volgende commando:

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

Bewerk vervolgens het config.php bestand en definieer je database instellingen:

nano config.php

Wijzig de volgende regels:

/** 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',

Sla het bestand op en sluit het als je klaar bent. Maak vervolgens een .htaccess bestand aan met het volgende commando:

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

Voeg de volgende regels toe:

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

Sla het bestand op en sluit het en geef vervolgens de juiste rechten en eigendom met het volgende commando:

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

Als je klaar bent, kun je doorgaan met de volgende stap.

Nginx configureren voor YOURLS

Maak vervolgens een nieuw Nginx virtueel host configuratiebestand voor YOURLS:

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

Voeg de volgende regels toe:

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;
  }
}

Sla het bestand op en sluit het en herstart vervolgens de Nginx en PHP-FPM service met het volgende commando:

systemctl restart nginx
systemctl restart php-fpm

Je kunt ook de status van de Nginx controleren met het volgende commando:

systemctl status nginx

Je zou de volgende uitvoer moeten krijgen:

? 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.

SELinux en Firewall configureren

Standaard is SELinux ingeschakeld in CentOS 8. Je zult het dus moeten configureren voor je YOURLS website.

Je kunt de SELinux configureren met het volgende commando:

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

Sta vervolgens poort 80 en 443 toe via de firewall met het volgende commando:

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

Als je klaar bent, kun je doorgaan naar de volgende stap.

Toegang tot YOURLS

Open nu je webbrowser en krijg toegang tot YOURLS met de URL http://yourls.example.com/admin. Je zou de volgende pagina moeten zien:

UWLS

Klik op de knop Install YOURLS. Je zou de volgende pagina moeten zien:

YOURLS Installateur

Klik op de “YOURLS Administration Page“. Je zou de YOURLS login pagina moeten zien:

Aanmelden

Geef je admin gebruikersnaam en wachtwoord die je hebt gedefinieerd in de config.php en klik dan op de Login knop. Je zou het YOURLS dashboard moeten zien op de volgende pagina:

YOURLS admin dashboard

Beveilig YOURLS met Let’s Encrypt SSL

Vervolgens moet je het Certbot programma op je systeem installeren om Let’s Encrypt SSL te downloaden en te installeren voor je YOURLS website.

Je kunt de Certbot client installeren met het volgende commando:

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

Verkrijg en installeer vervolgens een SSL-certificaat voor je YOURLS website met het volgende commando:

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

Het bovenstaande commando zal eerst alle vereiste afhankelijkheden op je server installeren. Na de installatie wordt je gevraagd een e-mailadres op te geven en de servicevoorwaarden te accepteren, zoals hieronder weergegeven:

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

Selecteer of je HTTP-verkeer wilt omleiden naar HTTPS of niet, zoals hieronder getoond:

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

Typ 2 en druk op Enter om verder te gaan. Als de installatie met succes is voltooid, zou je de volgende uitvoer moeten krijgen:

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

Je hebt nu veilig toegang tot de website van YOURLS via de URL https://yourls.example.com.

Conclusie

Gefeliciteerd! Je hebt YOURLS met succes geïnstalleerd met Nginx en Let’s Encrypt SSL op CentOS 8. Je kunt nu gemakkelijk je eigen URL-verkorter hosten met YOURLS. Stel me gerust als je vragen hebt.