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!にしています)
・・・全然具体的じゃねー
ここはつまずかなかったのでこんな感じで。
2.MySQLにYOURLS用のDBを作る
create database yourls;
3.YOURLSをダウンロード
GitHubよりモジュールをダウンロードします。
「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インストールページを表示
コマンドラインから「yourls」データベースに接続できてるのになんで?
必死に英語ページを翻訳解読し、試しに以下のphpを読み込ませてみた。
$mysqli = new mysqli("localhost", "[username]", "[password]", "yourls", 3306);
echo $mysqli->connect_errno;
ちーーーん。
なんでエラーになーかや。
同じエラーをWindowsで経験されている方がいらっしゃった。どうもlocalhostがIPv6で解釈されているよう。
ふむ。ダメもとでやってみよう。
$mysqli = new mysqli("127.0.0.1", "[username]", "[password]", "yourls", 3306);
echo $mysqli->connect_errno;
まじかーーーーーー∑(゚Д゚)
では早速config.phpを
define( 'YOURLS_DB_HOST', '127.0.0.1' );
にすると...
でーーーーたーーーーーー!!
7.YOURLSインストール
「Install YOURLS」をクリックするとみんな経験している
これ。DBはうまく作れていそうなのでとりあえず後回し。
今回は社内向けに構築するため、ログインなんか手間でしょうがないので、ログインしてない一般ユーザ向けのトップページsample-public-front-page.txtを使う。
そのままコピーしてindex.phpにリネームすれば...
いった!!ログイン不要で誰でも作れる!
8.動作確認 ...数日ハマる
試しにYahoo!の短縮URLを作ったけど
ですよねー。世の中そんなに甘くはない。
次項に自分が確認した項目を挙げます。
9.Not Foundの場合の確認項目
①まず原因切り分けのため、URLを以下にしてアクセスしてみる。
http://localhost/yourls/yourls-go.php?id=4
表示された。ということはリダイレクトがうまくいっていない模様。
②7項で.htaccessに関する警告が出ていたのを思いだし、そら動かねーわということで、yourls/に作成。
# 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再起動。
<Directory "/Library/WebServer/Documents/yourls“>
Options FollowSymLinks Multiviews
MultiviewsMatch Any
AllowOverride All
Require all granted
</Directory>
④まだ動かない。
.htaccessにあるmod_rewrite読み込んでる?ということでhttpd.confの以下をコメント解除。
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
⑤動いた。。
10.日本語化
ここに具体的に書いてあるのでそのとおりにやる。
11.短縮URLをランダムにする
連番はダサいのでランダム文字にする。
yourls/user/plugins/にプラグイン用のフォルダを作成する。
mkdir random-keywords
Githubからplugin.phpをダウンロードし、作成したフォルダに配置する。
管理ページのプラグインに追加されるので、「有効にする」。
ついでにランダム文字数を変更する。初期値は5文字なので3文字に変更。
$ozh_random_keyword['length'] = 3;
12.さいごに
社内向けということで、ログイン不要にしたりランダム文字数を3にしたりサブディレクトリに構築したりでテキトーな感じになってます。
目的はEddyStoneでURLを送信することなので、
・「短縮URL」にしようとしているのにサブディレクトリにしてしまって後悔。直そうと思います。
・社内DNSにこのMacの定義を入れたり、さらに短縮URL化しなくては。