chanshige blog

カスタマーサポート職から、エンジニアへ転職した僕のブログ

whois検索のためのPHPライブラリを作ってみた

whoisは、ドメイン名の登録者などに関する情報をインターネット上で誰でも参照できるサービスで、ドメインを登録(取得)すると必ず設定・公開の義務がある情報です。

ドメイン取得業者(サービス)によっては、個人情報を公開したくないユーザー向けに、
 取得業者の情報を代わりに公開する"代理公開サービス"が用意されていることが多いですね。

そんなwhoisですが、ドメインTLD(com, jp, tokyo etc..)ごとに検索できるサイトが分かれていることが多く、検索するためのサイトをGoogleで検索するみたいなことをやっていたので、気軽に検索できるように3年前から https://whoisproxy.info を運営しているのですが、以下気になることが出てきたので思い切って自前で作ってみました。

  • whoisproxy.info は PEARのNet_Whois を使っている
  • Net_Whoisの更新が数年ない (Current Release : 2011-08-10 )
  • 超ライトに使いたいが、自分好みなwhoisライブラリが無い

github.com

Dependencies for Net_Whois PHP 4.0.0 !!!!!!!!!!!!

whoisproxy.info は、僕がまだカスタマーサポート職の頃にPHPすらよく知らない状態で作ったサイトで、whoisコマンドが叩けるサーバ上にサイトを置いて shell_exec('whois example.com') の結果を出すみたいな、割と危なっかしい実装をしていた記憶があります。笑

そんな淡い思い出もありますが、今回作ったものはこちらです!

github.com

以下を気にしつつやってみました。

  • シンプル
  • tldwhoisサーバ名と検索対象ドメインをセット出来ればいい
  • へんな加工なしで、そのままのレスポンスを受け取りたい

というところで、これを使った検索サイトに作り変えていこうと思っています。 ちゃっかり、packagistにも登録してみましたよ。

packagist.org

※ これ間違ってるよ!こうしたほうがいいよ!などありましたら、ぜひご連絡ください!

それでは、なにかあったら書きます!

初めてPHPカンファレンス福岡に参加してきました #phpconfuk

約9ヶ月ぶりの更新となりました @chanshige です!

先日(2017/06/10)、福岡で開催された PHPカンファレンス福岡2017 へ初めて参加してきました。

福岡での開催は今回で3度目とのことで、以前からあることは知っていたのですが、 なかなか参加できずな感じで、、今回やっと参加できた感想は率直に めっちゃ面白かった です。

僕は、サポートからエンジニアに転職し1年半が経つ頃で、どのくらいPHPと仲良くなれているのか?だとか、 色々理解できているか?とか再確認できる場でもあり、色々な方のお話を聞いて交流もできてとても充実した1日でした。

そんな僕は、基本的にメイン会場(Fusic ホール)から動くことがなく(結果そうなってた) 以下のセッションをガン見してきました。

本当は一つずつ感想をババっと書いていきたいのですが、スライドを見つつ話を聴くに集中しすぎて、 メモを取ることを忘れていましたがしがし、心に刻んだのでちょいちょいどこかでアウトプットしてこうと思います!

やっぱりネットだけじゃ手に入らない情報だとか、ニュアンスだとか、実際に自分の目で見て聴いて実践したほうがいいと思ったし、 今後もどんどん色々なイベントに参加したいと思います!!

最後に、PHPカンファレンス運営者の方々、登壇者の皆様、楽しい1日をありがとうございました! 朝のスポンサー様紹介からすごく丁寧で、初参加な僕でも居心地よくて雰囲気作りがすごいなと感じました。

来年も参加するぞー!福岡ー!

macOS Sierra のインストールUSBをつくる

9月21日にリリースされたmacOS Sierra。
やっぱり"新しい"ものは使いたいという事でアップデートする。

ただ普通にアップデートするより、中身をまるっと綺麗にして、 改めてインストールしてみたほうがよさそうな気がしている僕なので、 そのためのUSB起動ディスクを作ってみたので記録

では早速、

今使ってるMacのAppStoreから macOS Sierra を入手する。

f:id:tanakashigeki:20160924180833p:plain

ダウンロード後、自動的に起動するインストーラーは一旦閉じておく。

f:id:tanakashigeki:20160924180840p:plain

OSを入れるUSBをMacにつなぐ。

MacBook は USB-Cってやつでこんなアダプタ付けないと刺さらない
この辺ちょっと不便だな〜
f:id:tanakashigeki:20160924182250j:plain

USBの中身をフォーマットする。

アプリケーション>ユーティリティ>ディスクユーティリティを使う。
完全にインストールディスクとなるので、使ってないUSBにする。
そして、名前は判り易いように"Sierra"と名付ける f:id:tanakashigeki:20160924182648p:plain

フォーマット後、USBを Sierra の起動ディスクにする

ターミナルを起動して、以下コマンドをたたく

sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/Sierra --applicationpath /Applications/Install\ macOS\ Sierra.app

--volume /Volumes/Sierra USBのマウント先のパスですね
createinstallmedia というコマンドをつかって、--volume とか --applicationpath なオプションを使うとぺろりと出来る様子

コマンドを叩くとこんな感じで進む

shigeki@Shigeki-MacBook ~ % sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/Sierra --applicationpath /Applications/Install\ macOS\ Sierra.app
Password:
Ready to start.
To continue we need to erase the disk at /Volumes/Sierra.
If you wish to continue type (Y) then press return: y
Erasing Disk: 0%... 10%... 20%... 30%...100%...
Copying installer files to disk...
Copy complete.
Making disk bootable...
Copying boot files...
Copy complete.
Done.

Done. ってなったらOKで、デスクトップにこれが出現

f:id:tanakashigeki:20160924184440p:plain

ここまで完了したら、USBを刺したままMacを終了させて、
[option]キー を押しながら起動すると、どのディスクを使って起動するか
選択が出てくるので、[Install macOS Sierra]の方を選択してください。

そうすると、ユーティリティが表示されるので、
ハードディスクのフォーマットを行ってから、再インストールすれば、
クリーンインストール完了!になります。

注意!現時点(2016/09/24)で、本作業手順はMacの公式手順になっておりません。
Mavericks時代からある方法なのでいずれ出るかもしれませんが、作業をされる際は必ず、
必要なデータのバックアップを行ってから、お試しくださいね!!!

ちなみに僕が使ってるMacMacBook Early2016で、 あまり良い話を聞かないんだけど、僕の印象としては軽くて持ち運び便利だし、 爆速!ではないけどゲキ重!でもない"普通にいいやつ"です。
また何かあったら書きます!

音楽ストリーミングサーバを構築する

僕の音楽ライブラリをいつでも引き出せるように、
サーバ上で管理するための記録。
SSLが安心するので、無料の Let's Encrypt で証明書つくる。

  • さくらのVPS (1G SSD:30GB)を利用
    CentOS Linux release 7.2.1511 (Core)
    Server version: Apache/2.4.6 (CentOS)
    事前に git wget を入れておく # yum install git wget
    SELinuxはdisabledにする。 (面倒だから。。。

サブドメインhoge.hogehoge.hoge」を例にしています(ホゲホゲ

SuperSonicをインストール

リポジトリを追加

# rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

こちらも追加

# yum install http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

必要なライブラリ群を追加

# yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
# yum install ffmpeg flac faad2 lame vorbis-tools rpmlint
# yum install rpm-build

SuperSonicを取得

# mkdir /usr/local/src/supersonic
# cd /usr/local/src/supersonic
# git clone https://github.com/Mach5/supersonic.git

Apache Mavenの取得と展開

# cd /usr/local/src/supersonic
# wget http://ftp.jaist.ac.jp/pub/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz
# tar zxvf apache-maven-3.3.3-bin.tar.gz

デプロイ(割と待つ)

# cd supersonic
# export PATH=$PATH:/usr/local/src/supersonic/apache-maven-3.3.3/bin
# mvn -P full -pl subsonic-booter -am install
# mvn -P full -pl subsonic-main -am install
# mvn -P full -pl subsonic-installer-rpm -am install

インストールと自動起動設定

# cd subsonic-installer-rpm/target
# rpm -ivh supersonic-4.7.beta1.rpm  #インストール
# /sbin/chkconfig supersonic on  #自動起動設定

http://mydomain:4040 でアクセス。 ※ 4040ポートを開けないとだめ 今回はSSL接続にしたいのでポート開放は割愛。

Let's Encrypt を導入するぞ

Let’s Encrypt のクライアントは GitHub で公開されている。 事前に openssl, mod_ssl をいれておく。

# yum install openssl mod_ssl

Let’s EncryptをGitHubから取得。今回はこの場所におく

# cd /usr/local/
# git clone https://github.com/letsencrypt/letsencrypt  #/user/local/letsencrypt ができる

Let’s Encrypt のパッケージをインストール

# cd letsencrypt
# ./letsencrypt-auto --help

証明書発行

# ./letsencrypt-auto certonly \
--standalone -d {証明書を発行したいURL hoge.hogehoge.hoge}  \
-m {hoge@hogehoge.hoge}

FirewallのSSLポートを開ける

# firewall-cmd --permanent --add-port 443/tcp 
(# firewall-cmd --permanent --add-service=https) #こちらでも良い
# firewall-cmd --reload
# systemctl restart firewalld.service # 再起動
# firewall-cmd --list-all  # firewallの状態を確認

ssl.confまたは、VirtualHost用のconfファイルがあればそちらにSSL証明書の設定をする

<VirtualHost *:443>
ServerName hoge.hogehoge.hoge
SSLEngine on
SSLProxyEngine on
ProxyPass / http://{YourServerName}:4040/ retry=0 timeout=5
ProxyPassReverse / http://{YourServerName}:4040/

SSLCertificateFile /etc/letsencrypt/live/hoge.hogehoge.hoge/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/hoge.hogehoge.hoge/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/hoge.hogehoge.hoge/chain.pem

ErrorLog /var/log/sslvirtual_error_log_supersonic
CustomLog /var/log/sslvirtual_access_log_supersonic combined env=!no_log
</VirtualHost>

Let's Encryptは90日しか持たない&Port80をListenしている場合、Apache停止が必要なので、 一連の作業をcron設定し、サーバリロードする。

00 05 01 * * /bin/systemctl stop httpd && /usr/local/letsencrypt/letsencrypt-auto certonly --standalone -d {証明書を発行したいURL hoge.hogehoge.hoge} -m {hoge@hogehoge.hoge} && /bin/systemctl start httpd

これで快適なミュージックライフを送れる気がする

参考サイト この作業を行う上で、超参考になりました。感謝

lab.aratana.jp

atani.github.io

untitled

カスタマーサポート職から、エンジニア(プログラマー)へ転職したちゃんしげのブログです。