如何在Ubuntu 20.04服务器上安装Shlink URL Shortener

Shlink是一个开放源代码的自托管URL缩短器,它允许您缩短URL并在您自己的短域名下提供它们。 使用您自己的URL缩短服务而不是bit.ly之类的第三方服务可以提高品牌知名度。 本教程将向您展示如何在具有Apache或Nginx Web服务器的Ubuntu 20.04上安装Shlink。

闪烁功能

  • 造访统计资料:跟踪对您的简短网址的所有访问,包括位置,浏览器或引荐来源网址之类的统计信息。
  • 邮件追踪:生成1像素的透明图像,可用于跟踪电子邮件。
  • 第三方整合:通过使用单一请求API端点,轻松使第三方工具使用shlink缩短URL。
  • 定制Sl:让您缩短的网址使用自定义标记来轻松识别广告系列。
  • 二维码:即时生成指向您的短网址的QR码
  • 预告片:获取任何短网址的图像格式预览
  • 标签:标记您的短网址并对其进行分类,以便以后进行分析
  • 访问受限:按日期范围和/或最大访问次数来限制对短网址的访问。
  • 第三方进口:从第三方(例如bit.ly)导入您现有的简短URL。
  • 命令行和Web界面。

在Ubuntu 20.04 Server上安装Shlink的前提条件

Shlink是用PHP编写的,并且依赖于MySQL / MariaDB或PostgreSQL数据库服务器,因此您需要设置LAMP堆栈或LEMP堆栈。 如果您更喜欢Apache Web服务器,请设置LAMP堆栈。

  • 如何在Ubuntu 20.04 Server / Desktop上安装LAMP Stack

如果您喜欢Nginx Web服务器,则设置LEMP堆栈。

  • 如何在Ubuntu 20.04 LTS上安装LEMP Stack(Nginx,MariaDB,PHP7.2)

您还需要一个域名。 我从NameCheap注册了我的域名,因为它价格低廉,并且终身免费提供Whois隐私保护。 在本教程中,我将使用 uxux.be 以域名为例。 事不宜迟,让我们在Ubuntu 20.04服务器上安装Shlink。

步骤1:将Shlink下载到您的Ubuntu 20.04服务器上

转到Shlink Github页面检查最新的稳定版本。 您可以通过在服务器上执行以下命令来下载最新的稳定版本(2.6.2)。

wget https://github.com/shlinkio/shlink/releases/download/v2.6.2/shlink2.6.2_php8.0_dist.zip

笔记:如果出现新版本,只需将2.6.2替换为新版本号。

该文件将另存为 shlink2.6.2_php8.0_dist.zip。 使用 unzip 将其解压缩到的命令 /var/www/ 目录。

sudo apt install unzip

sudo mkdir -p /var/www/

sudo unzip shlink2.6.2_php8.0_dist.zip -d /var/www/

现在文件存储在 /var/www/shlink2.6.2_php8.0_dist/,我们对其进行了重命名以使其更简单。

sudo mv /var/www/shlink2.6.2_php8.0_dist/ /var/www/shlink

然后使Web服务器用户(www-data)作为此目录的所有者。

sudo chown -R www-data:www-data /var/www/shlink/

步骤2:为Shlink创建MariaDB数据库和用户

现在,我们需要登录到MariaDB控制台,并为Shlink创建数据库和用户。 默认情况下,Ubuntu上的MariaDB软件包使用unix_socket来认证用户登录,这基本上意味着您可以使用操作系统的用户名和密码登录到MariaDB控制台。 因此,您可以运行以下命令登录,而无需提供MariaDB根密码。

sudo mysql -u root

接下来,使用以下命令为Shlink创建一个新数据库。 本教程将其命名 shlink,您可以为数据库使用任何您喜欢的名称。

CREATE DATABASE shlink;

以下命令将创建数据库用户和密码,并同时将新数据库的所有权限授予新用户,以便以后在Shlink上可以写入数据库。 将红色文本替换为您首选的数据库名称,用户名和密码。

GRANT ALL ON shlink.* TO 'shlink'@'localhost' IDENTIFIED BY 'password';

刷新特权表并退出MariaDB控制台。

FLUSH PRIVILEGES;

EXIT;

步骤3:安装PHP8.0和某些扩展

由于我们下载了Shlink的PHP 8版本,因此我们需要安装PHP8。 Ubuntu 20.04存储库包含PHP7.2。 要在Ubuntu 20.04上安装PHP8.0,我们需要添加一个PPA。

sudo apt install software-properties-common

sudo add-apt-repository ppa:ondrej/php -y

然后安装PHP8.0和Shlink所需的扩展。

sudo apt install php-apcu php8.0 php8.0-fpm php8.0-mysql php8.0-gd php8.0-common php8.0-curl php8.0-intl php8.0-gmp php8.0-xml

如果您使用 阿帕奇 Web服务器,您需要运行以下命令以使其使用PHP8.0-FPM。

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event proxy_fcgi setenvif
sudo a2enconf php8.0-fpm

然后重新启动Apache。

sudo systemctl restart apache2

步骤4:运行Shlink安装脚本

运行PHP安装脚本作为 www-data 用户。

sudo -u www-data php8.0 /var/www/shlink/bin/install

设置向导将要求您输入数据库详细信息。 所以我选择 玛丽亚数据库 作为数据库类型,然后输入数据库名称,用户名和密码。 主持人是 本地主机 端口是 3306。 Shlink还可以通过Unix套接字连接到数据库服务器。 如果使用MariaDB,则套接字位置为 /var/run/mysqld/mysqld.sock 在Ubuntu服务器上。

install-shlink-ubuntu-20.04-命令行

接下来,为您的URL缩短器输入默认域,然后选择方案类型(https)。 然后回答几个简单的问题。

shlink url shortner

如果要分析访问者的地理位置,则需要使用自己的GeoLite2许可证密钥,该许可证密钥是免费的。 要获取许可证密钥,请在MaxMind上创建一个帐户。 Maxmind会给您发送电子邮件。 单击电子邮件中的链接以设置密码,然后登录到您的MaxMind帐户。 接下来,选择 My License Key 在左侧栏上。

maxmind许可证密钥

点击 生成新的许可证密钥 按钮。

maxmind生成新的许可证密钥

为您的许可证密钥命名。 然后选择 No,因为我们不需要使用 geoipupdate 程序。 然后点击 Confirm 按钮。

shlink geolite2许可证密钥

创建许可证密钥后,复制许可证密钥并将其粘贴到Shlink设置向导中。 然后,您可以选择匿名化访客的IP地址并设置重定向类型(302或301)。

然后针对异常情况配置重定向。 当访问者访问我的Shlink的基本URL(https://lnux.be)时,他们将被重定向到我的网站。 您还可以为404未找到页面创建自定义URL。

shlink url重定向

最后,配置应用程序。 我只是按 Enter 使用默认设置。

在Ubuntu 20.04-server-apache-nginx上安装shlink

步骤5:为Shlink创建Apache虚拟主机或Nginx配置文件

阿帕奇

如果使用Apache Web服务器,请为Shlink创建虚拟主机。

sudo nano /etc/apache2/sites-available/shlink.conf

将以下文本放入文件中。 代替 lnux.be 使用您的真实域名,不要忘记为其设置DNS A记录。

<VirtualHost *:80>
  ServerName lnux.be
  DocumentRoot /var/www/shlink/public

  ErrorLog ${APACHE_LOG_DIR}/shlink_error.log
  CustomLog ${APACHE_LOG_DIR}/shlink_access.log combined

  <Directory /var/www/shlink/public>
    Options FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

Include /etc/apache2/conf-available/php8.0-fpm.conf

</VirtualHost>

保存并关闭文件。 然后通过以下方式启用此虚拟主机:

sudo a2ensite shlink.conf

重新加载Apache以使更改生效。

sudo systemctl reload apache2

Nginx的

如果您使用Nginx Web服务器,请为Shlink创建一个虚拟主机。

sudo nano /etc/nginx/conf.d/shlink.conf

将以下文本放入文件中。 代替 lnux.be 使用您的真实域名,不要忘记为其设置DNS A记录。

server {
   listen 80;
   listen [::]:80;
   server_name lnux.be;

   root /var/www/shlink/public;
   error_log /var/log/nginx/shlink.error;
   access_log /var/log/nginx/shlink.access;

   index index.php index.html index.htm index.nginx-debian.html;

   location / {
     # try to serve file directly, fallback to app.php
     try_files $uri /index.php$is_args$args;
   }

   # redirect some entire folders
     rewrite ^/(vendor|translations|build)/.* /index.php break;

   location ~ .php$ {
     fastcgi_split_path_info ^(.+.php)(/.+)$;
     fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     include fastcgi_params;
   }

}

保存并关闭文件。 然后测试Nginx配置。

sudo nginx -t

如果测试成功,请重新加载Nginx以使更改生效。

sudo systemctl reload nginx

步骤6:启用HTTPS

为了加密HTTP流量,我们可以通过安装由Let’s Encrypt发行的免费TLS证书来启用HTTPS。 运行以下命令在Ubuntu 20.04服务器上安装Let’s Encrypt客户端(certbot)。

sudo apt install certbot

如果您使用 阿帕奇,安装Certbot Apache插件。

sudo apt install python3-certbot-apache

并运行此命令以获取并安装TLS证书。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d lnux.be

如果您使用 Nginx的,那么您还需要安装Certbot Nginx插件。

sudo apt install python3-certbot-nginx

接下来,运行以下命令以获取并安装TLS证书。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d lnux.be

在哪里

  • --nginx:使用nginx插件。
  • --apache:使用Apache插件。
  • --agree-tos:同意服务条款。
  • --redirect:通过301重定向强制HTTPS。
  • --hsts:将Strict-Transport-Security标头添加到每个HTTP响应中。 强制浏览器始终对域使用TLS。 防御SSL / TLS剥离。
  • --staple-ocsp:启用OCSP装订。 将有效的OCSP响应装订到服务器在TLS期间提供的证书。

现在应该获得证书并自动安装。

shlink-https-certbot

步骤7:创建短链接

首先,您需要使用以下命令创建API密钥。

sudo -u www-data php8.0 /var/www/shlink/bin/cli api-key:generate

然后转到https://app.shlink.io/添加服务器。

shlink创建短链接

添加服务器后,您可以创建短链接。

shlink创建短网址

请注意,这只是一个Web客户端。 短网址存储在您自己的服务器上。

您还可以从服务器上的命令行生成简短的URL。

sudo -u www-data /var/www/shlink/bin/cli short-url:generate

列出简短的URL。

sudo -u www-data /var/www/shlink/bin/cli short-url:list

运行以下命令以查看帮助消息。

sudo -u www-data php /var/www/shlink/bin/cli

包起来

我希望本教程可以帮助您在Ubuntu 20.04服务器上安装Shlink。 您可能还想学习如何在Ubuntu上使用多个版本的PHP。

  • 如何在Ubuntu上安装多个版本的PHP

与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻简报以获取更多提示和技巧。 保重🙂

Sidebar