LoginSignup
0
0

More than 5 years have passed since last update.

EddyStone(Mac)でURL送信しようとしたら18Byteまでしか送れなかったので、YOURLSも入れて短縮URLを実装した

Posted at

0.はじめに

MacをEddyStone発信機にし、さらに同じMac上でYOURLSサービスも稼働させました。
社内LANでの利用を想定して構築しました。
つまづいたところとかいろいろありましたが、日本語のサイトがあまりなく解決に時間を要したので、手順等具体的に残します。

【環境】

項目 バージョン
機種 MacBook Pro
OS OS X EI Capitan バージョン10.11.5
Apache 2.4.18
MySQL Ver 14.14 Distrib 5.7.13, for osx10.11 (x86_64)
PHP 5.5.34
node.js v6.2.2
YOURLS v 1.7.1

1.EddyStoneを動かす

たった2行!最も簡単にeddystoneでURLを送信する方法を参考にさせていただき、記事どおりの手順で成功!(送信するURLはYahoo!にしています)
・・・全然具体的じゃねー :fearful:
ここはつまずかなかったのでこんな感じで。

EddyStone.png

2.MySQLにYOURLS用のDBを作る

create database yourls;

3.YOURLSをダウンロード

GitHubよりモジュールをダウンロードします。

yourlsdownload.png

「YOURLS-1.7.1」という名前のフォルダでダウンロードできました。

4.YOURLSフォルダをapacheルートディレクトリ配下にコピーする

今回は、apacheルートディレクトリに「yourls」フォルダを作り、その配下にYOURLS-1.7.1の中身をコピーしました。

こんな感じのディレクトリ構成

ルートディレクトリ
 └yourls
  ├admin
  ├css
  ├images
  ├includes
  ├js
  ├pages
  ├user
  ├index.php
  ├readme.html
      ・
      ・

5.設定ファイルを作る

user/sample-config.phpをコピーし、同じディレクトリにconfig.phpという名前で貼り付け。

config.phpを開き、以下の項目を修正する。

2.で作ったyourlsデータベースにアクセスできるユーザを指定

/** MySQL database username */
define( 'YOURLS_DB_USER', 'your db user name' );

2.で作ったyourlsデータベースにアクセスできるユーザのパスワードを指定

/** MySQL database password */
define( 'YOURLS_DB_PASS', 'your db password' );

2.で作ったデータベース名を指定

/** The name of the database for YOURLS */
define( 'YOURLS_DB_NAME', 'yourls' );

ここでつまづきました。詳しくは次項で。

/** MySQL hostname.
 ** If using a non standard port, specify it like 'hostname:port', eg. 'localhost:9999' or '127.0.0.1:666' */
define( 'YOURLS_DB_HOST', 'localhost' );

localhostではなく

define( 'YOURLS_DB_HOST', '127.0.0.1' );

にしました。

YOURLSのURLを設定。今回はyoursフォルダ配下に作りましたので、以下。

/** YOURLS installation URL -- all lowercase and with no trailing slash.
 ** If you define it to "http://sho.rt", don't use "http://www.sho.rt" in your browser (and vice-versa) */
define( 'YOURLS_SITE', 'http://localhost/yourls' );

cookieキーをこのページで表示されるものに設定。

/** A random secret hash used to encrypt cookies. You don't have to remember it, make it long and complicated. Hint: copy from http://yourls.org/cookie **/
define( 'YOURLS_COOKIEKEY', 'modify this text with something random' );

管理ページにログインするユーザとパスワードを設定。

/** Username(s) and password(s) allowed to access the site. Passwords either in plain text or as encrypted hashes
 ** YOURLS will auto encrypt plain text passwords in this file
 ** Read http://yourls.org/userpassword for more information */
$yourls_user_passwords = array(
'username' => 'password',
// 'username2' => 'password2',
// You can have one or more 'login'=>'password' lines
);

他にも設定項目はありますが、必ず変更しないといけないのは以上。

6.YOURLSインストールページを表示

あれ?
スクリーンショット 2016-06-30 14.30.57.png

コマンドラインから「yourls」データベースに接続できてるのになんで?

必死に英語ページを翻訳解読し、試しに以下のphpを読み込ませてみた。

test.php
$mysqli = new mysqli("localhost", "[username]", "[password]", "yourls", 3306);
echo $mysqli->connect_errno;

スクリーンショット 2016-06-30 14.37.28.png

ちーーーん。
なんでエラーになーかや。

同じエラーをWindowsで経験されている方がいらっしゃった。どうもlocalhostがIPv6で解釈されているよう。

ふむ。ダメもとでやってみよう。

test.php
$mysqli = new mysqli("127.0.0.1", "[username]", "[password]", "yourls", 3306);
echo $mysqli->connect_errno;

スクリーンショット 2016-06-30 14.42.39.png

まじかーーーーーー∑(゚Д゚)

では早速config.php

define( 'YOURLS_DB_HOST', '127.0.0.1' );

にすると...

スクリーンショット 2016-06-30 14.46.22.png

でーーーーたーーーーーー!!

7.YOURLSインストール

「Install YOURLS」をクリックするとみんな経験している

スクリーンショット 2016-06-30 15.09.36.png

これ。DBはうまく作れていそうなのでとりあえず後回し。

今回は社内向けに構築するため、ログインなんか手間でしょうがないので、ログインしてない一般ユーザ向けのトップページsample-public-front-page.txtを使う。
そのままコピーしてindex.phpにリネームすれば...

スクリーンショット 2016-06-30 17.12.42.png

いった!!ログイン不要で誰でも作れる!

8.動作確認 ...数日ハマる

試しにYahoo!の短縮URLを作ったけど

スクリーンショット 2016-07-03 20.42.23.png

スクリーンショット 2016-07-03 20.44.13.png

ですよねー。世の中そんなに甘くはない。
次項に自分が確認した項目を挙げます。

9.Not Foundの場合の確認項目

まず原因切り分けのため、URLを以下にしてアクセスしてみる。

http://localhost/yourls/yourls-go.php?id=4

表示された。ということはリダイレクトがうまくいっていない模様。

7項で.htaccessに関する警告が出ていたのを思いだし、そら動かねーわということで、yourls/に作成。

.htaccess
# BEGIN YOURLS
<IfModule mod_rewrite.co>
RewriteEngine On
RewriteBase /yourls/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /yourls/yourls-loader.php [L]
# RewriteRule ^(.*)$ http://google.com [L]
</IfModule>
# END YOURLS

まだ動かない。
.htaccess読み込まれてる?ということでhttpd.confに以下を追記しapache再起動。

httpd.conf
<Directory "/Library/WebServer/Documents/yourls“>
    Options FollowSymLinks Multiviews
    MultiviewsMatch Any
    AllowOverride All
    Require all granted
</Directory>

まだ動かない。
.htaccessにあるmod_rewrite読み込んでる?ということでhttpd.confの以下をコメント解除。

httpd.conf
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

動いた。。

10.日本語化

ここに具体的に書いてあるのでそのとおりにやる。

11.短縮URLをランダムにする

連番はダサいのでランダム文字にする。
yourls/user/plugins/にプラグイン用のフォルダを作成する。

mkdir random-keywords

Githubからplugin.phpをダウンロードし、作成したフォルダに配置する。
管理ページのプラグインに追加されるので、「有効にする」。

yourlsプラグイン.png

ついでにランダム文字数を変更する。初期値は5文字なので3文字に変更。

plugin.php
$ozh_random_keyword['length'] = 3;

できた!
スクリーンショット 2016-07-05 11.11.16.png

12.さいごに

社内向けということで、ログイン不要にしたりランダム文字数を3にしたりサブディレクトリに構築したりでテキトーな感じになってます。

目的はEddyStoneでURLを送信することなので、
・「短縮URL」にしようとしているのにサブディレクトリにしてしまって後悔。直そうと思います。
・社内DNSにこのMacの定義を入れたり、さらに短縮URL化しなくては。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0