短縮URL「shlink」を3.5.1から4.6.0にアップデート
独自ドメインで短縮URLを生成できるオープンソースshlinkをアップデートしたときの覚書。
Gemini 3 Pro Previewと対話。
環境: CentOS Stream 10, PHP 8.3.26, shlink 3.5.1 -> 4.6.0
shlinkの現在のバージョンを確認。
# /home/httpd/shlink/bin
# ./cli -V
Shlink 3.5.1
shlinkのQRコード機能は4.5.0から非推奨。
参考: Shlink — The URL shortener — Documentation
v4系からは条件に応じて飛び先を変える機能が実装。
- デバイス別リダイレクト: iPhoneならApp Storeへ、AndroidならGoogle Playへ、PCならWebサイトへ、といった振り分けが可能。
- 言語別リダイレクト: ブラウザの言語設定(日本語、英語など)に応じて、表示するページを切り替え可能。
- クエリパラメータ転送: 短縮URLの後ろにつけたパラメータ(?utm_source=twitterなど)を、飛び先URLに引き継ぐかどうかの制御が柔軟。
1.shlinkアップグレード
公式サイト通りにアップデートする。
念のためデータベースのバックアップを取っておく。
参考: Shlink — The URL shortener — Documentation
shlinkディレクトリをリネイムして最新のソースコードを設置。
参考: Releases · shlinkio/shlink
distでないとvendorディレクトリが含まれていないので注意。
# cd /home/httpd/
# mv shlink/ shlink-old
# curl -LO https://github.com/shlinkio/shlink/releases/download/v4.6.0/shlink4.6.0_php8.3_dist.zip
解凍後のディレクトリ構成を確認して解凍。
# unzip -l shlink4.6.0_php8.3_dist.zip
# unzip shlink4.6.0_php8.3_dist.zip
リネイムしてdataディレクトリの権限変更。
# mv shlink4.6.0_php8.3_dist shlink
# chown nginx:www -R shlink/data/
アップデートコマンド実行。
# cd shlink/
# ./vendor/bin/shlink-installer update
Previous shlink installation path from which to import config:> /home/httpd/shlink-old/
無事Success。
短縮URLにアクセスして確認。
# ./bin/cli short-url:list
HTTP ERROR 500
php-fpmサービスを再起動する必要があるらしい。
# systemctl restart php-fpm
短縮URLにアクセスして確認。
いらないファイルを削除。
# cd ../
# rm -rf shlink-old/ shlink4.6.0_php8.3_dist.zip
シンボリックリンクを設定する。
Shlinkはdnf で入れたものではなく、手動で配置したものなので、/usr/local/bin にシンボリックリンクを作るのがLinuxの標準的なマナー(FHS: Filesystem Hierarchy Standard)に沿った運用。
# ln -sf /home/httpd/shlink/bin/cli /usr/local/bin/shlink
- -s: シンボリックリンクを作成
- -f: 強制的に上書き
確認。
# shlink -V
2.shlinkコマンド
短縮URL一覧
# shlink short-url:list
短縮URL作成
# shlink short-url:create -c teams0217-15 https://teams.microsoft.com/l/meetup-join/19%...%7d
短縮URL削除
# shlink short-url:delete teams0217-15
使い方はhelpを見る。
# shlink list
# shlink short-url:create help