如何在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