Shlink は、PHPで記述された無料のオープンソースのセルフホストURL短縮サービスであり、RESTとCLIインターフェースの両方を提供して、短いURLを生成および管理します。主な機能とURLショートの1つは、場所、ブラウザ、リファラーなど、これらの生成されたURLへのすべてのアクセスを追跡できることです。さらに、公式のShlinkWebクライアントはShlinkのRESTAPIを使用し、オプションのWebUIをユーザーに提供します。
ガイドの最後で、Nginxを使用してUbuntuサーバー20.04LTSFocalFossaにShlinkURLShortnerをインストールする方法を理解できます。 。同じ原則が新しいバージョンのUbuntu21.04(Hirsute Hippo)サーバーでも機能します。
- 推奨OS: Ubuntu 20.04 –オプション(Ubuntu21.04およびLinuxMint 20)。
- ユーザーアカウント: sudoまたはrootアクセス権を持つユーザーアカウント。
- 必要なパッケージ: mariadbphp7.4またはphp8.0がインストールおよび構成されています。
- 追加パッケージ: curlwgetunzip。
Ubuntuオペレーティングシステムを確認してアップグレードします。
sudo apt update && sudo apt upgrade -y
次に、このガイドに必要なパッケージをインストールします:
sudo apt install curl wget unzip
Shlinkアーカイブをダウンロード
最初のステップは、Shlink Githubページにアクセスして、最新の安定バージョンを確認することです。このガイドの時点では、現在の安定バージョンは2.7.1です。ただし、これは将来変更されます。 Shlinkには、PHP 7.4、PHP 8.0、およびソースコードの3つのバージョンがあります。
Shlink 2.7.1をダウンロードするには、次のコマンドを実行します。
PHP 7.4:
wget https://github.com/shlinkio/shlink/releases/download/v2.7.1/shlink2.7.1_php7.4_dist.zip
PHP 8.0:
wget https://github.com/shlinkio/shlink/releases/download/v2.7.1/shlink2.7.1_php8.0_dist.zip
ソースコード:
wget https://github.com/shlinkio/shlink/archive/refs/tags/v2.7.1.zip
ガイドの目的で、PHP7.4のダウンロード例に従います。次のステップは、(解凍)を使用することです アーカイブを(/ var / www / html)に抽出するコマンド ディレクトリ。
sudo unzip shlink2.7.1_php7.4_dist.zip -d /var/www/html
次のコマンドを実行して、抽出したフォルダの名前を変更して作業を楽にする必要があります。
sudo mv /var/www/html/shlink2.7.1_php7.4_dist/ /var/www/html/shlink
先に進む前に、ディレクトリのアクセス許可を(www-data)に設定することをお勧めします。 現在のユーザーは(root)として設定されています 。これを行うには、次の(chown)を入力して入力します コマンド:
sudo chown -R www-data:www-data /var/www/html/shlink/
Shlink用の新しいMariaDBデータベースとユーザーを作成します
次のステップは、新しいデータベースと、このデータベースへのアクセス権限のみを持つ専用の新しいユーザーを作成することです。 1つが危険にさらされている場合は、複数のデータベースでrootまたは同じユーザーアカウントを使用することはお勧めしません。
ガイドはMariaDBをインストールし、以下の用語に精通しています。
ルートコマンドを実行して、MariaDB/MySQLターミナルコンソールに入ります。
sudo mysql -u root
次に、次のターミナルコマンドを使用して、Shlinkの新しいデータベースを作成します。
CREATE DATABASE shlink;
データベースを作成したら、新しいユーザーアカウントを作成し、Shlinkデータベースへのアクセスを許可します。 Nginx、PHP、MariaDBを同じサーバーでホストしている場合は、(localhost)を維持します 。セカンダリサーバーを使用して内部または外部でMariaDBをホストする場合は、(IPアドレス)を入力します インプレース(localhost) 。
GRANT ALL ON shlink.* TO 'shlinkuser'@'localhost' IDENTIFIED BY 'password';
変更を公開するには、権限をフラッシュする必要があります:
FLUSH PRIVILEGES;
MariaDBターミナルを終了するには、次のコマンドを実行します。
EXIT;
PHP7.4の最新バージョンと拡張機能をインストールする
要件の一部として、PHP7.4または8.0が必要です。 Shlinkは、ソフトウェアがPHPを使用して動作するために特定の拡張機能を必要とします。 PHPが最新であることを確認するのに理想的です。 Debianのメンテナ兼PHPであるOndrejによるカスタムPPAを強くお勧めします。
以下のガイドでは、リポジトリを追加し、PHP7.4に必要なPHP拡張機能をインストールします。 PHP 8.0をインストールする場合は、7.4を8.0に変更するか、公式のUbuntu20.04チュートリアルにPHP8.0をインストールする方法にアクセスしてください。 。
ondreyによるカスタムPHPPPAのインストール:
sudo apt install software-properties-common && sudo add-apt-repository ppa:ondrej/php -y
リポジトリを追加した後、次のコマンドを実行して、最新のPHP7.4ソフトウェアを更新またはインストールします。
sudo apt install php7.4-apcu php7.4-fpm php7.4-mysql php7.4-gd php7.4-common php7.4-curl php7.4-intl php7.4-gmp php7.4-xml php7.4-json -y
インストールまたは更新後にPHP7.4が正しく実行されていることを確認するには、次のように入力します。
sudo systemctl status php7.4-fpm
出力例:
Shlinkのインストール
これで、PHP Shlinkインストールスクリプトを(www-user)としてインストールできます。 Ubuntuターミナルで次のPHPコマンドを実行します。
sudo -u www-data php7.4 /var/www/html/shlink/bin/install
すぐに、データベースの詳細を入力するように求める新しい画面が表示されます。
データベース
ガイドでは、MariaDBを選択します。ただし、戻って別のオプションのデータベースソフトウェアをセットアップしたい場合は、確かにこれを行うことができます。
以下のように、MariaDBを使用してShlinkセットアップを作成する例:
要約して入力されたオプション:
- データベースタイプの選択: 1 (MariaDB)
- データベース名: シュリンク
- データベースポート: 3306
- データベースのユーザー名: shlinkuser
- データベースパスワード:
- Unixソケット: <空白のまま>
URL短縮サービス
次の画面に、オプションの別のページがあります。ここには、特定のHTTPまたはHTTPS、ドメイン名、およびいくつかのShlinkURLオプションがあります。以下の設定例:
要約して入力されたオプション:
- 生成された短いURLのデフォルトドメイン:
- 生成された短いURLのスキーマを選択します: HTTPS (SSLを使用しない場合はHTTPを使用)
- 応答時に200HTTPステータスコードで長いURLを検証しますか? (はい/いいえ): はい
- 生成されたショートコードに必要なデフォルトの長さはどれくらいですか? (作成されたすべての短縮URLでこれをオーバーライドすることはできます): 5
- Shlinkで、長いURLのタイトルタグ(存在する場合)に基づいて短いURLのタイトルを解決しますか?それ以外の場合は、明示的に指定されていない限り、空のままになります。 (はい/いいえ): はい
- GeoLite2ライセンスキーを提供します。 (デフォルトのものを使用するには空のままにしますが、独自のものを取得することを強くお勧めします。https://shlink.io/documentation/geolite-license-keyにアクセスして、取得方法を確認してください): ライセンスキー
GeoLite2を使用する場合は、MaxMindでアカウントを作成し、キーを作成する必要があります。これを行うためのガイドは、MaxMindGeoLite2のドキュメントにあります。完了したら、Shlinkセットアップでキーを置き換えて入力します。
続いて、301または302リダイレクトを設定するオプションがあります。あなたは301を使わなければなりません、さもなければソフトウェアが示唆するようにあなたのSEOは確かに様々な方法で傷つく可能性があります。
追跡
永続的なリダイレクトとして301を設定すると、次に表示されるページは追跡です。ほとんどのデフォルト設定は問題ありません。EUにいる場合、またはEUの訪問者がいる場合は、データを匿名化する必要があります。これにより、幸いなことにShlinkがデータを処理できます。
以下の設定例:
要約して入力されたオプション:
- 孤立した訪問を追跡しますか? (ベースURL、無効な短いURL、またはその他の「見つからない」URLへのアクセス): はい
- 短いURLへの特定のリクエストでトラッキングを無効にするために使用できるパラメータ名を指定します(空のままにすると、この機能は有効になりません): <空のまま>
- 訪問の追跡を完全に無効にしますか?: いいえ
- 訪問者のIPアドレスの追跡を無効にしますか?: いいえ
- 訪問者の「ユーザーエージェント」の追跡を無効にしますか?: はい
- 訪問者のリモートIPアドレスをデータベースに永続化する前に匿名化しますか?: はい
- 訪問者の「ユーザーエージェント」の追跡を無効にしますか? :いいえ
- 訪問者の「リファラー」の追跡を無効にしますか? (はい/いいえ) :いいえ
リダイレクト
リダイレクトの設定はかなり簡単です。最良のオプションは、ウェブサイトで発生する可能性のある404 / not foundエラーについて、すべてをホームページにリンクすることです。以下の例:
要約して入力されたオプション:
- ユーザーがShlinkのベースURLにアクセスしたときにリダイレクトするカスタムURL(値が指定されていない場合、ユーザーにはデフォルトの「404 notfound」ページが表示されます): https://www.example.com
- ユーザーが無効な短縮URLにアクセスしたときにリダイレクトするカスタムURL(値が指定されていない場合、ユーザーにはデフォルトの「404 notfound」ページが表示されます): https://www.example.com
- ユーザーが無効な短縮URL以外の見つからないURLにアクセスしたときにリダイレクトするカスタムURL(値が指定されていない場合、ユーザーにはデフォルトの「404 notfound」ページが表示されます): https://www.example.com
アプリケーション
アプリケーションオプションでは、安全性チェックを有効にできます。これにより、一定の訪問後に短いURLを削除できるようになり、ルートパスでない場合にShlinkが提供されるパスを設定できるようになります。
要約して入力されたオプション:
- 特定の訪問数を受け取った後に短いURLを削除できないようにする安全性チェックを有効にしますか?: はい
- システムが短いURLの削除を許可しない訪問数はどれくらいですか?: 15
- shlinkが提供されるパスは何ですか? (ドメインのルートからshlinkを提供する場合は、空のままにします): <ルートは空白>
サイトに応じて、主にトラフィックを中心に、15をより大きなまたはより小さなものに変更できることに注意してください。
統合
Shlinkの統合は1つだけです。Redisは、単一またはクラスターインスタンスで以下に構成できます。 Redisのクラスタリング、シャーディング、レプリケーションに精通するまでは、Redisに単一のサーバーを使用することをお勧めします。これは非常に詳細であり、平均的な中小規模のWebサイトでは、大量のトラフィックを受信しない限り、これは必要ありません。
>ガイドでは空白のままにしましたが、ローカルホストで使用する場合は、127.0.1.1:6379と入力します。
おめでとうございます。Ubuntu20.04にShlinkをインストールしました。
Nginxサーバーブロックの例
NginxでShlinkを使用するには、サーバーブロックを構成する必要があります。これを行うには、HTTPSを使用するかどうかに関係なく、次の構成をコピーして貼り付け、ニーズに合わせて変更します。
server {
listen 80;
listen [::]:80;
server_name www.linuxcapable.com
root /var/www/html/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: the configuration file /etc/nginx/my-server.conf syntax is ok
nginx: configuration file /etc/nginx/my-server.conf test is successful
すべて問題がない場合は、以下のようにNginxサーバーを再起動します。
sudo systemctl restart nginx
短いリンクを作成する
Shlinkを使用して短いリンクを作成するには、最初にPHPコマンドを実行してAPIキーを作成する必要があります。
sudo -u www-data php7.4 /var/www/shlink/html/bin/cli api-key:generate
APIキーを取得したら、Shlink.ioにアクセスしてサーバーを登録する必要があります。
以下の例のように、サーバーの名前、サーバーのURL、およびAPIキーを入力します。
必要に応じて、ShlinkのWebUIを使用して短いリンクを追加できるようになりました。これらはサーバーに保存されていることを忘れないでください:
最も一般的なオプションは、ターミナルコマンドを使用して短いURLを生成することです。
これを行うには、次のコマンドを実行します。
sudo -u www-data /var/www/html/shlink/bin/cli short-url:generate
次のコマンドを使用して、生成された短いURLを一覧表示するには:
sudo -u www-data /var/www/html/shlink/bin/cli short-url:list
ヘルプを求めるには、次のコマンドを実行します。
sudo -u www-data php /var/www/html/shlink/bin/cli
出力例:
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Available commands:
help Displays help for a command
list Lists commands
api-key
api-key:disable Disables an API key.
api-key:generate Generates a new valid API key.
api-key:list Lists all the available API keys.
db
db:create Creates the database needed for shlink to work. It will do nothing if the database already exists
db:migrate Runs database migrations, which will ensure the shlink database is up to date.
short-url
short-url:delete Deletes a short URL
short-url:generate Generates a short URL for provided long URL and returns it
short-url:list List all short URLs
short-url:parse Returns the long URL behind a short code
short-url:visits Returns the detailed visits information for provided short code
tag
tag:create Creates one or more tags.
tag:delete Deletes one or more tags.
tag:list Lists existing tags.
tag:rename Renames one existing tag.
visit
visit:locate Resolves visits origin locations.