自分専用の短縮URLの生成スクリプト”YOURLS”を設置してみた

私の職場では、Gmailをメールクライアントとして利用しています。独自ドメインを取得し、さくらインターネットのメールサーバからGmailへ転送させて受信メールを確認していますが、本文中に短縮URLを使用していると遅延・不達が発生したので、その調査の過程や原因を書き留めました。

Gmail宛メール文の短縮URLで遅延・不達 - RODINIA BLOG
https://chi-k.net/sakura_gmail/

Gmailへの転送漏れ対策・POP3受信設定 - RODINIA BLOG
https://chi-k.net/gmail_pop3/

今回もその続きです。

メール送信時に迷惑メールと判定されないように対策する

メールの送信にあたって遅延が発生した原因と思われる「短縮URL」をそもそも本文内で使わない、というのが根本的な解決策だとは思いますが、迷惑メールとして判定させないための一策として実際に紹介されている記事もありました。

迷惑メールに判定させない!送信側の迷惑メール対策を詳しく解説 - ベアメールブログ
https://baremail.jp/blog/2019/05/20/109/

先日の記事『Gmail メール×短縮URL 遅延・不達』でも書きましたが、短縮URLサービスの中でも「urx.space」は遅延が発生しませんでした。さすが国産と謳うだけあるなと歓迎しましたが、残念ながら短縮URLを生成できないURLが時折ありました。 なにか法則性やルールがあるのか、詳しくはわかりません。

国産URL短縮サービス URX
http://urx2.nu/

自分専用の短縮URL生成スクリプト設置に挑戦

どの短縮URL生成サービスも弊害があるので、それであれば生成スクリプトを自分で設置しようと考えました。いくつか調べている中で、とても興味深い記事を見つけました。

超簡単!自分だけの短縮URLサービスを設置してみよう - 技術屋さんの小さな日記帳
https://lil.la/archives/527

とても使いやすそうでオプション機能もいろいろ揃っていたので、ひと目で気に入りました。文字数を指定してランダム文字でのURL生成や、短縮URLを経由したアクセス数の解析、ボタンひとつで短縮URLを生成してくれるブックマークレット、などなど。

YOURLS – readme.html より

ただ、サーバサイドでの設定作業があり、自分の中ではハードルが高かったですが、良い機会だと思いチャレンジしてみました。利用したスクリプトは “YOURLS” というオープンソースです。

開いてみたページは英語ページ。いまや自動翻訳のオンラインサービスも性能がどんどん向上してきているので、それを頼りに読み進んでいきました。私が愛用しているサービスは「DeepL翻訳ツール」です。Google翻訳よりも人間味のある文章に変換してくれます。

DeepL 翻訳ツール
https://www.deepl.com/home

右列の “Install guide” にインストール手順が記載されていました。

  1. zipファイルを解凍します
  2. user/config-sample,php ファイルを user/config.php として複製します
  3. user/config.php をエディタで開いて設定を編集します
  4. 解凍してできたフォルダ・ファイル類をFTPでアップロードします
  5. 新しいデータベースを作成します
  6. ブラウザで http://your-own-domain-here.com/admin/ へアクセスして Install すれば完成です

途中で何度か挫けそうになりながら、なんとか設置できましたので、ぜひ皆さんの助けになれば幸いです。

インストール要件

私がインストールした時点で記載されていたサーバの要件や推奨事項を紹介します。

  • PHP7.4以降を推奨します
  • MySQL5以降が必要です
  • mod_rewriteが有効になっているWebサーバー。YOURLSは、Nginx、IIS、およびCherokeeでも実行できます。私はhetemlのレンタル共用サーバで稼働させることができました。
  • HTTPSをサポートしています
  • 短縮URLの文字列は自分でもカスタムして生成できますが、文字列の最大長は100文字です
  • 数千億の短縮URLが生成可能です
  • YOURLSには独自の.htaccessファイルが必要であるため、WordPressなどを同じディレクトリ(階層)にインストールすることはできません。たとえば、WordPressのインストールディレクトリに新たにサブディレクトリを作成して、そのなかにYOURLSをインストールすることは可能です。

FAQ – YOURLS - GitHub
http://yourls.org/#FAQ

zipファイルをダウンロード

“YOURLS” のダウンロードファイルを探すのに早速時間を要してしまいました…。右列の “Latest release” にこれまでのリリース履歴が書かれており、最新版もこちらに掲載されていました。私がアクセスした時点での最新版は1.8.1でした。

Releases – YOURLS - GitHub
https://github.com/YOURLS/YOURLS/releases

Source code (zip)

と書かれているリンクからzipファイルをダウンロードして解凍しました。

先に新しいデータベースを作成

“Install guide” では次に config.php の編集となっていますが、先に5.の「新しいデータベースの作成」をします。config.php にデータベースの情報を書き込む必要があるからです。

まず今回は、私が個人で利用しているhetemlサーバでの設置を試みました。heteml管理画面のなかから「データベース」ページで新しくデータベース・MySQLを作成します。

「データベース名」「接続パスワード」は自分で決めたものを入力してください。「メモ」は何のデータベースなのか一覧表で自分が見分けるためのメモ書きです。

データベースが作成されたら下記の情報を後ほど設定ファイルへ記入することになります。

  • サーバー名
  • ユーザー名(データベース名と同じです)
  • パスワード

config.php を作成

次に、user フォルダ内にある config-sample,php ファイルを、同じ user フォルダ内に config.php として複製します。

config.php を編集

config.php 内の設定情報を編集します。編集する際には「メモ帳」ではなく「エディタ」の使用を推奨します。私が愛用しているエディタは「EmEditor」です。長年使い慣れているというのもありますが、とても使いやすく、常にバージョンアップされているので安心感も高いです。私自身は永久ライセンスを持っていますが、今回の作業はfree版でも大丈夫です。

EmEditor – WINDOWS用テキストエディター
https://jp.emeditor.com/

EmEditorで config.php を開いて、設定情報をそれぞれ書き換えてください。

  • YOURLS_DB_USER
    _(アンダーバー)ではじまるMySQLユーザー名を入れます。
  • YOURLS_DB_PASS
    MySQLパスワードを入れます。
  • YOURLS_DB_NAME
    MySQLデータベース名を入れます。ここではMySQLユーザー名と同じものです。
  • YOURLS_DB_HOST
    MySQLサーバ名を入れます。
  • YOURLS_DB_PREFIX
    特に書き換えは不要です。詳しく知りたい方は「プレフィックス データベース」で検索してみてください。
  • YOURLS_SITE
    YOURLSのスクリプトを自分のサーバで稼働させる際のドメインURLを、末尾のスラッシュは無し、小文字で入れます。私はドメイン直下にディレクトリ名「fwd」を作ってその中にスクリプトをアップロードしますので「https://●●●●●●●/fwd」と入れました。
    ※config.php の39行目に「(eg http://h辿h辿.com)」と表示されていましたが、文字コードをUTF-8(BOM無し)にすると「(eg http://héhé.com)」となりました。編集後の保存の際は、特にどちらの文字コードで保存しても問題なさそうです。
  • YOURLS_LANG
    管理画面の言語表記の設定です。標準では英語ですが、日本語で表示させることができます。別の設定作業が必要なのでそれは後述しますが、ここでは「ja_JP」を入れておきます。
  • YOURLS_UNIQUE_URLS
    特に書き換えは不要です。標準設定の「true」であれば、短縮したい元のURLに対して短縮URLを1対1で作成されます。同じ元のURLを再度短縮しようとすると、「既に作成済みです」とメッセージが出ます。
  • YOURLS_PRIVATE
    特に書き換えは不要です。設定を「false」に変えると、管理ページはURLを知っている人なら誰でも自由にアクセスできるようになってしまいます。
  • YOURLS_COOKIEKEY
    Cookieの暗号化に使用されるランダムなシークレットハッシュを入れます。ハッシュの文字列は覚える必要はありませんが、長く複雑なものが良いようです。下記にアクセスすれば、自動で生成してくれますので、それをコピペすれば良いです。
    https://yourls.org/cookie
  • $yourls_user_passwords
    管理ページにログインする際のIDとパスワードを自分で決めて入れます。
  • YOURLS_URL_CONVERT
    URLの短縮方法です。「36」だと「0123456789abcdefghijklmnopqrstuvwxyz」の文字列が使用されます。「62」だと「0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz」の文字列が使用されます。
  • YOURLS_DEBUG
    特に書き換えは不要です。デバッグモードにしたいときに「true」に書き換えるようです。
  • yourls_reserved_URL
    短縮URLとして使用されたくない文字列を設定できます。短縮URLはランダムで生成されるので、誤って事故が起こらないようにするための設定項目です。

Config – YOURLS - GitHub
http://yourls.org/#Config

スクリプトファイルをFTPでアップロード

config.php を含め、解凍してできたフォルダとファイルをそのままFTPでアップロードします。私が愛用しているFTPクライアントは「FileZilla」です。セキュリティ通信のSFTPに対応していることはもちろん、ファイル転送が正常に通信できているかどうかのログも表示されるので、とても安心して使っています。

FileZilla – FTPソリューション開発プロジェクト
https://ja.osdn.net/projects/filezilla/

YOURLSをインストール

アップロードが完了したら、下記のURLへアクセスしてYOURLSをインストールします。

http://your-own-domain-here.com/admin/install.php

私の場合はドメインに対してSSL設定をしており、またドメイン直下にディレクトリ名「fwd」を作ってその中にスクリプトをアップロードしましたので、下記でアクセスできました。

https://●●●●●●●/fwd/admin/install.php

「Install YOURLS」ボタンをクリックすれば、インストールが始まります。インストールは一瞬で完了します。無事に成功すれば、下記が表示されます。

「YOURLS Administration Page」リンクをクリックすると管理ページのログイン画面が表示されますので、config.php で設定した、管理ページにログインする際のIDとパスワードを入力してください。

これでようやく、自分専用の短縮URL生成スクリプトを設定することができました。あともう少し、使いやすいように設定を加えていきたいと思います。次の3つの設定をすることにしました。

  • 管理ページの日本語表示
  • 生成する短縮URLの文字列のランダム化
  • クリックひとつで短縮URLを生成するためのブックマークレット設定

(つづく)

短縮URLの生成スクリプト”YOURLS”の機能拡張 - RODINIA BLOG
https://chi-k.net/url_short_yourls_2/