前回のまとめ
VirtualBoxを使ってubuntu18.4OS上に、チケット販売OSSであるattendizeをインストールして使ってみました。今回は作ったサイトをWEBに公開し、支払い可能にするところまでやっていこうと思います。前回の投稿はこちら。
独自ドメインの取得
無料でドメインを取得できるサイトはいっぱいあるのですが、私はMyDNSを選択しました。固定IPアドレスでなくても使えるダイナミックDNSであるところ、レスポンスが早いところが気に入って使っています。
新規登録はページ上部のJOIN USから行うことができます。JOINUS
簡単なので説明は省略しますね。
ネットワーク設定
ホームページを公開するには、世界で一つだけのIPアドレスであるグローバルIPが必要になってきます。現状ホストPCとゲストPCに設定されているのはローカルIPです。ではお家の中でどこにグローバルIPが設定されているでしょう?実はルーターに設定されているんです。
ということで、ルーター宛にきた情報をゲストPCに転送する仕組みが必要になります。ではやっていきましょう。
ルーターの設定
私の環境ではWIMAXのポケットWifiがルーターになります。WIMAXではそれぞれの端末にグローバルIPを割り当てているわけではないので、別途グローバルIPオプションが必要になります。グローバルIPオプションは申し込み不要で設定を変更するだけで適用できます。月100円かかります。
設定方法はリンク先を確認してください。WIMAXのHP
ルーターの設定はポートマッピングとDMZの二種類です。
ポートマッピングの方からやっていきます。
ホストPCのブラウザのアドレスバーにルーターのIPアドレスを入力し、ログインします。機器によって設定が違うのでIPについては取扱説明書を読みましょう。
ログインしたら、設定>ファイヤーウォール設定>ポートマッピングを選択します。
■WANポート:80
■LANIPアドレス:ゲストPCのアドレス
■LANポート:80
■プロトコル:TCP
■ステータス:オン
※現在https化しているため、画像ではポートが443になっています。
次はDMZです。設定>ファイヤーウォール設定>DMZ設定に移動し、ゲストPCのアドレスを設定します。WEBから見える位置にゲストPCを置くイメージですね。
neginxの設定
独自ドメインが取得できたので、nginxの設定を変更しましょう。
ゲストPCで操作します。
sudo vi /etc/nginx/nginx.conf
server {
listen 80; //ポートを開放するのに必要です。
server_name {取得したドメイン};
root /srv/attendize/public;
index index.php;
もう一つ設定を変更しましょう。
sudo vi /etc/nginx/conf.d/default.conf
server {
listen 80; //ポート開放するのに必要です。
server_name {取得したドメイン};
root /srv/attendize/public;
index index.php;
設定確認
それでは、ちゃんと設定できたかCMANで確認しましょう。
ポート開放をクリックします。
■チェックポート番号:80
Portチェック実行をクリック
次のように表示されれば設定は完了です。エラーになる場合はWindowsファイヤーウォールでポート80を許可をしてみてください。参考PC設定のカルマ
ホスト:{グローバルIP}
ポート:80
にアクセスできました
次にWifiの接続を切ったスマホで、ホームページを表示させてみましょう。ブラウザのアドレスバーに{独自ドメイン}を入力します。ちなみにホストPCでは、ルーターの制約のためドメインネームでホームページにアクセスすることができません。
ホームページが表示出来たら設定完了です。
https化(SSL暗号化方式の導入)
証明書の取得
httpsにするためには、証明書を取得する必要があります。今回は無料のSSL/TLSサーバ証明書認証局Let's Encryptを使いました。
証明書を生成してくれるcertbotをインストールして証明書を取得します。
sudo apt-get install letsencrypt
sudo systemctl stop nginx //certbotのためにポート80をフリーにします。
sudo certbot certonly --standalone -d {取得したドメイン}
sudo systemctl start nginx //設定が終わったらnginxを起動します。
証明書は/etc/letsencrypt/live/{取得したドメイン}に保存されます。
nginxの設定
それではnginxの設定を行いましょう。
sudo vi /etc/nginx/conf.d/default.conf
server {
listen 443 ssl; //ポートを443に変更
server_name {取得したドメイン};
root /srv/attendize/public;
index index.php;
ssl_certificate /etc/letsencrypt/live/{取得したドメイン}/fullchain.pem; //証明書のパスを書く
ssl_certificate_key /etc/letsencrypt/live/{取得したドメイン}/privkey.pem; //証明書のパスを書く
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
ルータの設定
上のルータの設定のポートマッピングの設定を次のように変更する。
■WANポート:443
■LANポート:443
設定の確認
ちゃんと設定できたかCMANで確認しましょう。
ポート開放をクリックします。
■チェックポート番号:443
Portチェック実行をクリック
ホスト:{グローバルIP}
ポート:443
にアクセスできました
Wifiの接続を切ったスマホから{取得したドメイン}にアクセスしてみましょう。
表示ができて、アドレスがhttps://~となっていたら完了です。
証明書の期限は90日で切れるので以下のコマンドで定期的に更新しましょう。
sudo certbot renew
stripeの設定
stripeはオンライン決済サービスを提供していて、少しコードを埋め込むだけでクレジットカード払いが実装できます。attendizeではstripeとPaypalを支払方法として選択できますが、お客様が面倒な登録することなく使えるstripeを選択しました。
初期費用・月額費用が無料で手数料は決済ごとにかかる3.6%だけでいいのが魅力ですね。stripe
アカウントの登録
stripeに確認したところ、会社法人でなくとも個人で支払いを受けることができるそうなので、安心して登録してください。
登録方法はcamaradeを参考にしましょう。
atenndizeの設定
まずはstripeからAPIキーを入手しましょう。ログインして開発者>APIキーを選択。
公開可能とシークレットキーの両方を控えておきます。
次にホストPCのブラウザからゲストPCのアドレスにアクセスします。Account settingsをクリックします。
PAYMENTタブに設定をします。
■STRIPE SECRET KEY:シークレットキーを入力
■STRIPE PUBLISHABLE KET:公開可能を入力
実はこれだけではattendizeは動いてくれないので、ゲストPCで設定を追加します。
公開可能はこのファイルに設定します。
cd /srv/attendize/vendor/omnipay/stripe
sudo composer require stripe/stripe-php
sudo vim /srv/attendize/resources/views/Public/ViewEvent/Partials/EventCreateOrderSection.blade.php
</div>
<div class="help-block">
{!! @trans("Public_ViewEvent.time", ["time"=>"<span id='countdown'></span>"]) !!}
</div>
</div>
<div class="col-md-8 col-md-pull-4">
<div class="event_order_form">
{!! Form::open(['url' => route('postCreateOrder', ['event_id' => $event->id]), 'class' => ($order_requires_payment && @$payment_gateway->is_on_site) ? 'ajax payment-form' : 'ajax', 'data-stripe-pub-key' => isset($account_payment_gateway->config['publishableKey']) ? $account_payment_gateway->config['publishableKey'] : '{公開可能を入力}']) !!}
シークレットキーはこのファイルに設定します。
sudo vim /srv/attendize/vendor/omnipay/stripe/src/Gateway.php
/**
* Get the gateway parameters.
*
* @return array
*/
public function getDefaultParameters()
{
return array(
// default ''
'apiKey' => '{シークレットキーを入力}',
);
確認
ここまでできたら、Wifiの接続を切ったスマホで取得したドメインにアクセスし、有料チケットを買ってみましょう。
実際に課金されるのが嫌な場合は、stripeのダッシュボードのテストデータを表示するをクリックして、テスト用の公開可能とシークレットキーを入手してください。この場合はテスト用のクレジットカード番号で購入してください。
支払いができたか確認します。
stripeのダッシュボードにログインし、開発者>イベントを表示します。
支払いが成功していれば完了です。
終わりに
知識0で始めたのでかなり苦労しました。
これからチケット販売OOSを使ってみたいという方のお役に立てれば嬉しいです。
この後メールやサイトの一部を日本語化しています・・・気が向いたら投稿します。
設定で詰まったらコメントください。できるだけ返信します。