まっさらなVPSからFaucet作るまで頑張るトピック【質問も】

趣味・生活

140 Res. 115.86431665 MONA 12 Fav.

意見やアドバイスは何時でも歓迎です。時々質問する際もあるかと思いますが、回答して頂けるととても助かります。
なお作業は行き当たりばったりで進めているため、恐らく(ほぼ必ず)エラーなどでコケます。後で必要な部分を抽出する予定です、ご容赦ください。

1 :きら五段錬士:2017/05/04 13:39:05  110.47050914MONA/9人

突然ですが、モナーコイン生誕から3年が経ちました。黎明期の頃に「こんなサイトあったらいいな」とか考えながらPHPなど弄っていたのですが、結局放置したまま早3年…。
そうした間にもモナーコイン界でも色々な出来事があり、様々なサイトが作られては消えていきました。

さて本題。このGW、どうせVPSを契約したまま放置しているのなら何かしら作ってみたいと思い立ちます。
ですが、前のように大きな構想を漠然と考えるだけではいつまでたっても完成しないのは想像に難くない…。
という訳で「まっさらなVPSから、ウェブウォレット型のFaucetを作り、そして全行程をAskMonaに記録する」プロジェクトを掲げてみようと思います。

2 :なむやん七段教士:2017/05/04 14:00:33  0MONA/0人

WebWallet型だとゲームとか入れれるからね
後で拡張も効くしいいのではないでしょうか
頑張ってね!

3 :きら五段錬士:2017/05/04 14:06:05  0MONA/0人

目標はシンプルに箇条書きで。
・1台のVPSを用意し、その上に「Monacoinの預け入れ、引き出し、Faucetからの少額受け取りを会員ごとに行うWebサイト」を作成する。
・必要となるものはVPSと、それを操るPCのみ。PCには「HTML/CSS/JS/PHPを記述できるテキストエディタ(今回はAtom)」「FTPのクライアント(Filezilla)」「SSHのクライアント(Tera Term)」が既に使える状態で入っているものとする。
・使用するVPSはさくらインターネットのもの。OSは「Ubuntu 16.04」を使用(さくら公式の方法でインストール)し、「Apache」「PHP」「MariaDB」「Monacoind」を導入するすることを大前提とする。(できればCIとか自動デプロイとかいうものにも手を出したい、詳しい方ご助言願います)。

・以上の状態(VPSのOSインスコ前)から作業をスタートし、ほとんどの工程を省略せず、できればスクリーンショット付きで、ここに記録する。コンテンツ作成したいという人が現れた際の助力になればと…
・なお>>1は、インターネットのみを使用してWeb制作を独学で覚えたポンコツ人間である。エンジニアでも何でもないので、「このあたりは簡単に分かるのでスルー」などは原則しない(できない)…はず。

・作業する時間帯は基本的に夜とする。期間は「出来るだけ早め」とし、GW中に完成は必須条件としない。

以上です。

4 :きら五段錬士:2017/05/04 14:10:25  0.114114MONA/1人

夕方までに心の準備をすませ、今夜から取り掛かろうと思います。トピック名に【質問も】と入れましたが、恐らく本当に質問することが出てきます(前回、Monacoindの挙動の詳細、使用するライブラリなどで何度も積みました)。その際は「トピックの概要」や「トピックに対する補足」にその旨を書きますのでよろしくお願いします。

(´・ω・`)。oO(回答して頂ける方がいないと詰む…)

5 :PPP四段:2017/05/04 18:22:29  0MONA/0人

支援

6 :きら五段錬士:2017/05/04 19:22:58  0MONA/0人

19時になりました。とりあえず詳細を詰めるところから始めましょうか…

大雑把な工程
1. VPSにUbuntuをクリーンインストール、最低限の初期設定
2. LAMPサーバとmonacoindをインストール
3. PC側にテスト環境とかmonacoindとか置いてみて、それで試してみる
4. VPSに上げて本番

…以上でしょうか。しばらくしたら始めましょう。
野次というか意見は大歓迎です。むしろ開発・テスト環境の用意のしかたや自動デプロイの基礎など教えていただけると助かります(今回は多分使いませんが…)。

7 :きら五段錬士:2017/05/04 19:46:19  0MONA/0人

5月4日 1日目。

1. まずはVPSをクリーンにしましょう。さくらVPSのコンパネを開き、「各種設定」→「OSインストール」→「カスタムOSインストール」→「Ubuntu 16.04 64-bit」…あとは指示に従うだけです。
既存のデータは全て消えますのでお気を付けください。

8 :なむやん七段教士:2017/05/04 19:47:05  0.039MONA/1人

https://github.com/aceat64/EasyBitcoin-PHP
coindを操作するPHPライブラリはこれをおススメする
jsonRPCCliantもあるけどパフォーマンスも使いやすさも違う

9 :きら五段錬士:2017/05/04 19:55:55  0.00114114MONA/1人

2. コンパネは何も変わりませんが、仮想的にUbuntuのディスクが差さった状態で再起動されています。「VNCコンソール(HTML5版)」を開きましょう。


あとはさくら公式の指示に従います。↓
https://help.sakura.ad.jp/hc/ja/articles/206057762-カスタムOSインストールガイド-Ubuntu-16-04

>>8
Bitcoin専用とかかと勘違い?したのか、ずっとjsonRpcClient使ってました…
もちろんながらパフォーマンスも計ってない…試してみます

10 :きら五段錬士:2017/05/04 20:52:14  0MONA/0人

さて、エラーも何もなくUbuntuのインストールに成功しました。ちなみに1時間以上経っているのはインストールが長かった訳ではありません、数分で終わります。
先ほどのリンク先の作業を終わらせるとVPSは自動でシャットダウンし、停止中の状態になります。

3. VPSを起動させましょう。平行して、PC側ではTera Term(SSHクライアント)を起動しておきます。
4. VPSを起動して暫く待ったあと、SSHでVPSに接続します。VPSのIPアドレス、インストール作業中に入力したユーザー名とパスワードを使用しましょう。

11 :きら五段錬士:2017/05/04 20:59:15  0.00114114MONA/1人

ログインに成功しました。流石にスクショを貼りまくるのも億劫なので、コンソール画面のスクショは割愛します。

https://mlny.info/2016/04/ubuntu-xenial-on-sakura-vps/
暫くは上のページを参考に進めます。一読しておくと分かりやすいかもしれません。

5. とりあえずファイアウォールもなしにサーバを放置しておくのは危険でしょう。という訳で導入しますので以下のコマンドをコピペ。ちなみに以下は一般ユーザーでの操作($)ですが、コピペが面倒なので省略。

sudo apt install ufw
sudo ufw default deny
sudo ufw enable
sudo reboot

12 :きら五段錬士:2017/05/04 21:07:28  0MONA/0人

あー全部閉じて接続できなくなった…1からやり直しですね。暫くお待ちください。

13 :きら五段錬士:2017/05/04 21:24:00  0.00114114MONA/1人

>>11は無かったことにしましょう。

http://endoyuta.com/2016/11/04/さくらvps-ubuntu-設定-1/
参考もこのページに変更で。一読しておくと分かりやすいかも。

5. まず、インストールされているソフトウェアのアップデートを。以下のコマンドを一行ずつコピペ。行頭に$とか#を書くので、それは削ってコピペしましょう。
$ sudo apt-get update
$ sudo apt-get upgrade
なお、パスワードを聞かれたら素直に入力します。画面には表示されないので注意。

14 :きら五段錬士:2017/05/04 21:39:17  0.00114114MONA/1人

6. sshd(SSHサーバーソフト)の設定ファイルを配置するフォルダを作成。
$ mkdir ~/.ssh

一般的に、サーバーへのログインをユーザー名とパスワードで行うのは危険とされています。鍵ファイルを使った公開鍵認証を使用するための設定を行いましょう。
この部分に関しては↓のサイトを参考に。
http://www.j-oosk.com/teraterm/authorized_keys/276/

7. Tera Termで公開鍵、秘密鍵を作成します。「設定」から「SSH鍵生成」を選択。
8. 鍵の種類:RSA、ビット数:2048であることを確認して「生成」をクリック。
9. 生成が完了したら「公開鍵の保存」からid_rsa.pubを保存。
10.保存したら「鍵のパスフレーズ」「パスフレーズの確認」にパスワード(新しく作る。これからSSHログインごとに必要です)を入力し、「秘密鍵の保存」からid_rsa(拡張子なし)を保存。

15 :きら五段錬士:2017/05/04 21:51:44  0.00114114MONA/1人

12. Tera Termにて「ファイル」→「SSH SCP」からダイアログを開く。
13.上半分を使用。「From」は先ほど作成したid_rsa.pubを指定、「To」には「~/」と入力して「Send」をクリック。
14.以下のコマンドをコピペ
$ cat id_rsa.pub >> ~/.ssh/authorized_keys

16 :きら五段錬士:2017/05/04 22:05:16  0.00114114MONA/1人

15. またコマンドをコピペ(コピー元ファイルの削除を忘れてました)。
$ rm id_rsa.pub

16. コンソールのウィンドウを閉じて接続断、もう一度接続。その際にパスワードでログインせず、ユーザー名の入力後に「RSA/DSA/(中略)鍵を使う」にチェックを入れ、右の「選択」からid_rsa(拡張子なしのもの)を選択し、パスワード欄には秘密鍵保存時に入力したパスワードを入れてログイン。
この方法でログインできれば、公開鍵認証の設定は成功です。続いて、従来のパスワード認証でログインできないように設定しましょう。

17 :きら五段錬士:2017/05/04 22:13:53  0.00114114MONA/1人

17. 以下のコマンドをコピペし、エディタ(vi)を起動
$ sudo vi /etc/ssh/sshd_config
なお、viエディタの使用方法は省略します。慣れていない方はググってください…

18. 「Port 22」という部分を探し、「Port 12345」に書き換え
19. ファイル末尾に新たな行を作り、以下を追記
PermitRootLogin no
PasswordAuthentication no

20. ファイルを保存、viを終了し、通常のコマンドライン画面に戻る

18 :きら五段錬士:2017/05/04 22:15:55  0.00114114MONA/1人

アッ 19.から修正入れます、>>17は無効で

17. 以下のコマンドをコピペし、エディタ(vi)を起動
$ sudo vi /etc/ssh/sshd_config
なお、viエディタの使用方法は省略します。慣れていない方はググってください…

18. 「Port 22」という部分を探し、「Port 12345」に書き換え
19. ファイル末尾に新たな行を作り、以下を追記(「ユーザー名」は、自分で作成したユーザー名に置き換えてください)
PermitRootLogin no
PasswordAuthentication no
AllowUsers ユーザー名

20. ファイルを保存、viを終了し、通常のコマンドライン画面に戻る

19 :きら五段錬士:2017/05/04 22:21:40  0.00114114MONA/1人

22. 以下のコマンドでviを起動し、SSHのポート番号である「22」を全て「12345」に書き換える(自分の環境では2つしかありませんでした)
$ sudo vi /etc/services

23. 以下のコマンドを入力(実行後、何も起こらなければ大丈夫だそうです)
$ sudo sshd -t

24. またコマンド入力。sshdサービスの再起動です
$ sudo service ssh restart

20 :きら五段錬士:2017/05/04 22:47:25  0.00114114MONA/1人

…自分が契約しているプロバイダー(コミュファ)は何故かポート12345を通さないそうです。>>17-19における「12345」を全て「12233」に置き換えてください(どこかで書き直す場合は12233に修正します)。

25. ファイアウォールの設定です。コマンドを一行ずつ入力(各コマンドの詳細は参考元に載ってます)
$ sudo ufw default deny
$ sudo ufw allow 12233
$ sudo ufw limit 12233
$ sudo ufw limit 22
$ sudo ufw enable
$ sudo ufw status

26. 一度ウィンドウを閉じて接続断。もう一度接続するのですが、今回からは「22」となっているポート番号を「12233」に書き換えて接続する必要があります(面倒であればアドレス末尾に「:12233」を付加する方法でもOK)。
認証方法は手順16.の通りに行い、接続できれば設定完了です!

21 :きら五段錬士:2017/05/04 22:52:42  0MONA/0人

…アッ忘れてた

27. 再起動しよう。コマンドコピペ。これでファイアウォールが有効になるらしい
$ sudo shutdown -r now

さて、これで一息付けるようになりました。詳しい方なら、ファイアウォールを有効化するまでに攻撃されていないかを下記のコマンドで確認できるそうですが…
$ sudo less /var/log/auth.log
自分には分かりません☆

今日は以上です(たぶん)。疲れた…(´・ω・`)

22 :脇山P名人教士聖人:2017/05/04 23:22:36  0.039MONA/1人

さくら使ってるなら
VNCコンソール(HTML5版)も良いけど
シリアルコンソールもおススメ

23 :PPP四段:2017/05/04 23:43:15  0MONA/0人

邪道な質問かもしれんが
これはubuntuのデスクトップではなくUbuntu serverでやってもできるものなのですか?

24 :人として行動がぶれている五段錬士:2017/05/05 03:43:46  0.11411411MONA/1人

>>23 ServerとDesktopの違いは、GUIかCUIかだけ
つまりServerにGUI入れればデスクトップで使えるし、
デスクトップにApacheとか入れてサーバーにさせることも出来る

25 :PPP四段:2017/05/05 04:49:35  0MONA/0人

>>24
ほう、つまりできるということですな
GUIとCUIの違いだったのかぁ・・・

そんなことも知らんかったなんて、恥ずかしい
ありがとうございます。

26 :きら五段錬士:2017/05/05 09:03:37  0MONA/0人

(これから行うLAMPサーバとmonacoindの導入が一番の鬼門ですね…)

>>22
インストール時にVNCコンソールを使用し、その後は全てSSHで行っていますが…どういった場面で使用するのでしょうか?
sshのポート設定やファイアウォールの設定に失敗して接続できなくなった際はシリアルコンソールにお世話になりました(´・ω・`)

>>23
そもそも自分の環境が多分Ubuntu Server 16.04です…説明不足でした
ですが>>24氏の通りエディション?に関係なくサーバーソフトウェアを導入すれば普通に動作すると思います

27 :脇山P名人教士聖人:2017/05/05 09:45:52  0MONA/0人

>>26
あぁsshでやってるなら問題ない。
VNCコンソールでそのまま使ってるなら面倒事が多いのでそちらが楽ですよという事で

28 :きら五段錬士:2017/05/05 09:50:58  0MONA/0人

>>28
そうなんですね、でもブラウザ上で作業するよりもTera Termの方が使いやすいです…
ご助言ありがとうございました!

29 :きら五段錬士:2017/05/05 23:31:41  0MONA/0人

今日も環境構築…2日目を始めましょうか。
途中で寝てしまうかもしれません、予めご了承をば。

30 :きら五段錬士:2017/05/05 23:36:43  0MONA/0人

さあ早速、各種ソフトウェアの導入といきましょう。
今回導入するのは「Apache2(とりあえず最新)」「PHP(7系最新)」「MariaDB(とりあえず最新)」「monacoind(とりあえず公式から最新を落とす)」の4つ。

http://qiita.com/ryo511/items/381711fae8669e9d6f30
今回はこのページを参考に。Ubuntu16.04でMariaDBは邪道らしいが気にしない、失敗したら諦めてMySQLにしましょう…

31 :くまりんこ七段:2017/05/05 23:38:20  0.039MONA/1人

Ubuntuにmonacoindを入れる時はびりある氏のリポジトリ使うと楽

$ sudo add-apt-repository ppa:visvirial/monacoin
$ sudo apt-get update
$ sudo apt-get install monacoind

32 :きら五段錬士:2017/05/05 23:44:29  0MONA/0人

1. 前のようにTera Term で鯖にログインし、以下のコマンドを1行ずつこなします。
$ sudo apt-get update
$ sudo apt-get install vim curl git
$ sudo apt-get install apache2
…これだけでApacheが入ってしまいました。簡単ですね。

2. 一応、ファイアウォールの設定を確認します。コマンド。
$ sudo ufw app list

Apacheインストール時に設定まで自動でしてくれているはず。以下のようになっていれば正解…らしい。
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

33 :きら五段錬士:2017/05/05 23:44:38  0MONA/0人

ここでブラウザに鯖のIPアドレス打ち込めば初期ページが見られるらしいが…うまくいきません。しばらくお待ちください。

34 :人として行動がぶれている五段錬士:2017/05/05 23:47:00  0.039MONA/1人

>>33 ubuntuのファイヤーウォールのせいじゃない?

35 :きら五段錬士:2017/05/05 23:53:01  0MONA/0人

>>33
自分でも察して調べてみました、大当たりですね。大丈夫なのかこの参考元…
というわけで、

3.以下のコマンドでファイアウォールを開く。
$ sudo ufw allow 'Apache Full'

これで、かの有名な「It works!」をお目にかかることができます。めでたしめでたし。

36 :きら五段錬士:2017/05/05 23:54:41  0MONA/0人

>>31
このリポジトリ、公式サイト的なものが存在しないっぽくて更新情報とかがわからないんですよね…
かのもなとれ氏作なので余程何かない限り最新だと思うのですが、どうなんでしょう(´・ω・`)

37 :くまりんこ七段:2017/05/05 23:59:59  0.39MONA/1人

>>36
こういうサイトからバージョン確認できるよ
https://launchpad.net/~visvirial/ archive/ubuntu/monacoin

現時点では最新版

38 :きら五段錬士:2017/05/06 00:06:54  0MONA/0人

次に、Ubuntu16.04とは微妙な関係らしいMariaDBを入れてみましょう。失敗なんて怖くない!

4. またまたコマンド。いつものことながら一行ずつですよ
$ sudo apt-get install mariadb-server
$ sudo mysql_secure_installation

5. 最後のコマンドを打った段階でMariaDBの初期設定が始まります。最初の質問は、現在のrootパスワードを聞かれる(MariaDB内でのrootユーザの話)。現在も何も初回なので、空欄のままEnterッターン!
6. rootのパスワードを変更するか聞かれる。当たり前ながらyで進み、新しいパスワードを考えて2回入力。
7. その後、四回の質問があるはず。順に「匿名ユーザー消すね?」「リモートからのrootユーザーログインは許可しないよ?」「テスト用のデータベースは消しとくね」「権限情報をリロードするよ」、全部yで。

8. お疲れ様でした!MariaDB導入終了でっす!

39 :きら五段錬士:2017/05/06 00:08:24  0MONA/0人

>>37
おおー!公式サイトも確認しましたが、見る限り最新ですね。
リポジトリ情報を直接見ればよかったのか、なるほど…㌧です!

40 :きら五段錬士:2017/05/06 00:23:34  0MONA/0人

…読み返してちょっとアホに見えてきました。淡々と進めましょうか。次はPHP。

9. またコマンド。関連パッケージまとめて入れてしまいましょう。
$ sudo apt-get install php libapache2-mod-php php-mysql php-mbstring php-mcrypt php-curl php-xml

10. PHPの動作確認①。コマンドでPHPを呼び出してみます。
$ php -v

PHPを入れた時期によってバージョンは変わりますが、以下のようなバージョン表記が返ってくれば成功でしょう。
PHP 7.0.15-0ubuntu0.16.04.4 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.15-0ubuntu0.16.04.4, Copyright (c) 1999-2017, by Zend Technologies

41 :きら五段錬士:2017/05/06 00:23:37  0MONA/0人

11. viでPHPページを作ってみます。次のコマンドで新規作成。
$ sudo vi /var/www/html/info.php

12. 以下の一行を記述して保存→終了、元の画面に戻ります。
<?php phpinfo();

13. 動作確認②。PC側ブラウザから以下のアドレスにアクセスして、phpinfoが表示されるでしょうか。
http://鯖のIPアドレス/info.php


キタ━━━━(゚∀゚)━━━━!!
PHPも難なく完了です!php.iniの設定等は後ほど、で。

42 :きら五段錬士:2017/05/06 00:38:35  0MONA/0人

よし、このままmonacoind行っちゃいましょう。
先ほどは「公式ページからダウンロード」と言いましたが、びりある(もなとれ)氏による配布リポジトリがあります。使用させて頂きましょう。

では>>31のアドバイス通りにコマンドを打っていき…あれ?add-apt-repositoryが無いぃ?

http://loumo.jp/wp/archive/20150626000042/
14. ↑のページに従い、コマンドを打っていきます。
$ sudo apt-get install apt-file
$ sudo apt-file update
$ sudo apt-file search add-apt-repository
$ sudo apt-get install software-properties-common
1行目でapt-fileのインストール、2行目で情報の更新、3行目で検索?し、引っかかったものを4行目でインストールしているみたいですね。
ともかく、これでリポジトリが追加できるようになりました。本筋に戻りましょう。

43 :きら五段錬士:2017/05/06 00:42:40  0MONA/0人

15. では、>>31のアドバイス通りにコマンドを打っていきましょう。
$ sudo add-apt-repository ppa:visvirial/monacoin
$ sudo apt-get update
$ sudo apt-get install monacoind
1・2行目のコマンドで、VPS鯖が持つソフトウェアカタログ?に、びりある氏のリポジトリの内容が追加されます。そして3行目、もうmonacoindをインストールしてしまいました。

はい、おしまい!昔であればmonacoindのビルドで散々詰まったはずなのですが…楽になりましたね。

44 :きら五段錬士:2017/05/06 00:47:58  0MONA/0人

おっと、事前に書き忘れましたが「supervisor」も導入しましょう。

16. またコマンド↓
$ sudo apt-get install supervisor

うん、難なく導入完了です。

45 :きら五段錬士:2017/05/06 00:48:36  0MONA/0人

今日はここまで。次回は設定を掘り下げていきましょう(´・ω・`)

46 :きら五段錬士:2017/05/06 00:59:03  0MONA/0人

余談。今回導入したソフトウェア達のバージョンを記しておきます。
Apache: 2.4.18(phpinfoより)
MariaDB: 10.0.29(コマンド `mysql --version` より)
PHP: 7.0.15(`php -v`、phpinfoより)
Monacoind 0.13.2.2-ga811999(`mysql --version` より)
supervisor: 3.2.0(`sudo supervisorctl version` より)

…うーん、疲れた!

47 :きら五段錬士:2017/05/06 01:01:04  0MONA/0人

(あっ…Monacoindのバージョン確認コマンドは `monacoind --version` ですね…すみません修正)

48 :きら五段錬士:2017/05/06 21:11:15  0MONA/0人

3日目、昨日導入したソフトウェアの設定です。もうログインしている前提で始めます。

まずはApacheから。参考は引き続き>>30と同じですが、Wordpressを入れる訳ではないので少し変更します。
1. まずは設定ファイルをバックアップし、それから編集。コマンド打ちます。
$ sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bk
$ sudo vim /etc/apache2/apache2.conf

2. 「<Directory /var/www/>(中略)</Directory>」を探します。
3. ↑で(中略)とした中に、「Indexes 」という文字列があるので(半角スペースも一緒に)削除。これにより、置いたファイルが一覧表示で丸見えになるリスクが減ります。
4. 同じく、「AllowOverride None」という文字列があるので「AllowOverride All」に書き換え。これで.htaccessが使えるようになります。
5. 保存して終了、元の画面に戻りましょう。

49 :きら五段錬士:2017/05/06 21:11:21  0MONA/0人

6. 構文チェックをしてもらいます。コマンド入力。
$ sudo apache2ctl configtest
「Syntax OK」と返ってきたら問題なし。エラーが出たらミスっているということなので、バックアップから戻してやり直しましょう。

7. 構文チェックが問題なく通ったら、最後にmod_rewriteモジュールを有効化し、Apacheを再起動しましょう。
$ sudo a2enmod rewrite
$ sudo systemctl restart apache2

これでApacheの(最低限の)設定は完了?です。

50 :きら五段錬士:2017/05/06 21:27:21  0MONA/0人

次はPHP。php.iniを編集するわけですが…ちょっと変更点が多過ぎるので、ここだけは端折らせてください…

8. php.iniもバックアップ→編集で。コマンド。
$ sudo cp /etc/php/7.0/apache2/php.ini /etc/php/7.0/apache2/php.ini.bk
$ sudo vim /etc/php/7.0/apache2/php.ini

51 :名無し四段:2017/05/06 21:57:43  0.39MONA/1人

>>50
編集前と編集後のdiffを取ってみてはどうだろうか

52 :きら五段錬士:2017/05/06 22:09:29  0MONA/0人

9. 以下の項目を探し、値を変更します。「=」より左が項目、右が値です。「//」以降は補足。
default_charset = UTF-8 //このプロジェクトでは、
文字コードはUTF-8で開発します
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = auto
allow_url_include = Off //外部からincludeしてくるのを禁止
date.timezone = “Asia/Tokyo” //タイムゾーン設定
expose_php = Off //X-Powered-ByをHTTPレスポンスヘッダーに追加しない
file_uploads = Off //ファイルのアップロード機能、今のところはOff

53 :きら五段錬士:2017/05/06 22:09:56  0MONA/0人

log_errors = On //エラーをログに出力する
error_log = “/etc/www/php_errors.log” //エラーログ保存場所
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT //どのエラーをブラウザに表示するか。とりあえず本番用の設定で
display_errors = Off //エラーをブラウザに表示しない(本番用)
disable_functions = eval,system,exec,passthru,popen, //ここに書かれた関数は使用できなくなる(追記すればいい…?)
enable_dl = Off //PHPの拡張機能を動的にロードする機能。Offにしておく
max_execution_time = 60 //PHPスクリプトの最大実行時間(秒)
max_input_time = 60

54 :きら五段錬士:2017/05/06 22:10:06  0MONA/0人

session.hash_function = 1 //セッションIDにSHA-1を使用
session.use_cookies = 1 //セッションID管理にクッキーを使用するsession.use_only_cookies = 1 //上記の管理にクッキーのみを使用する
session.cookie_httponly = On //セッションのクッキーをHTTP通信以外で読み書きさせない
session.cookie_lifetime = 0 //クッキーの有効期限はブラウザを閉じるまで有効
session.use_trans_sid = 0
session.auto_start = 0
session.gc_maxlifetime = 1440 //古いセッションデータがゴミになるまでの時間(秒)
session.gc_divisor = 100 //上記のゴミが100分の1の確率で削除される
session.gc_probability = 1 //同上
session.entropy_file = /dev/urandom
session.entropy_length = 32

…以上です。

55 :きら五段錬士:2017/05/06 22:13:14  0MONA/0人

一応、下記のページを参考にしています。新しくてUbuntu対応とか全然見つからなかった…
http://php-fan.org/安全なphp-ini設定.html

10. 書き換え、保存が完了したらApacheを再起動します(それによりphp.iniが再読み込みされます)。構文チェック?知らん…
$ sudo systemctl restart apache2

56 :きら五段錬士:2017/05/06 22:29:11  0MONA/0人

(session.use_only_cookiesの前で改行してない…脳内補完お願いします)

57 :きら五段錬士:2017/05/06 22:47:48  0MONA/0人

さて、これでPHPの設定も無事終わりまし…た?次はMariaDBと言いたいところですが、これといって設定もないので飛ばします。
次はmonacoind/supervisor、参考は下記。
http://qiita.com/monapay/items/8642ea58e7d959e380c2

11. ウォレット管理用ユーザーの新規作成。以下のコマンドを打ち込み、指示に従います。
$ sudo adduser coind
このユーザーのパスワードも新規で決めるので、これも覚えておくこと。プロフィール的な情報入力は全部空で良い…かな?

12. monacoindのデータ格納用のフォルダを作成、パーミッション変更
$ sudo mkdir /coindata
$ sudo mkdir /coindata/monacoin-main
$ sudo chown -R coind /coindata
$ sudo chmod -R 700 /coindata

58 :きら五段錬士:2017/05/06 22:50:03  0MONA/0人

13. supervisorの設定ファイルを作成
$ sudo vi /etc/supervisor/conf.d/monacoin-main.conf

14. 必要な部分はあらかじめ変更してから、下記をコピペし保存
[program:monacoin-main]
user=coind
autostart=true
autorestart=true
command=/usr/bin/monacoind -server -rpcallowip=127.0.0.1 -rpcuser=(RPCのユーザー名) -rpcpassword=(RPCのパスワード) -rpcport=56011 -datadir=/coindata/monacoin-main

(RPCとは、PHPスクリプトなどのプログラムからmonacoindを操る際に使用する規格?です。つまり上記のユーザー名・パスワードはプログラムからmonacoindに接続する際に使用するもので、自由に設定して構いません)

59 :きら五段錬士:2017/05/06 22:53:31  0MONA/0人

15. 最後に、supervisorに設定を反映させ、動作していることを確認します
$ sudo supervisorctl reload
$ sudo supervisorctl status

(もしも動作していなかったら以下のコマンドで明示的に起動させましょう。それでもダメなら何かがおかしい)
$ sudo supervisorctl start monacoin-main
$ sudo supervisorctl status

60 :きら五段錬士:2017/05/06 22:54:34  0MONA/0人

( ´∀`)やった!!!これで一通りの環境構築完了!!!!!

むしろここからが本題…ですが、今日はひとまずこれで終了。

61 :きら五段錬士:2017/05/06 22:56:32  0MONA/0人

(余談。進行中にトピックの説明を書き換えたのですが、3日目「終了」を消さないまま反映してた…アホでした)

62 :PPP四段:2017/05/10 03:36:09  0MONA/0人

応援してるんだぜ
そして続き待ってるんだぜ!

63 :剣ヶ峰六段:2017/05/10 06:33:55  0MONA/0人

期待あげ

64 :きら五段錬士:2017/05/10 14:09:49  1.34114MONA/2人

(GW明けあたりから私事が…すみません)
週末であれば時間が確保できると思います、期待せずお待ちください(´・ω・`)

以下蛇足
参考にするということでMONAを送ってくださった方がいました。とても有難いとは思うのですが、このプロジェクトは完成どころか初歩の初歩状態、作ってる人も独学の初心者です。これを参考にしたことで例えサーバに不正アクセスされてGOXしても責任は負えません…ご注意願います。

65 :きら五段錬士:2017/05/10 14:11:08  0MONA/0人

(今>>1を見たら文字が赤くなっていた…なんてことだ…なんてことだ…ありがとうございます…)

66 :剣ヶ峰六段:2017/05/11 10:57:12  0MONA/0人

web上に情報が残ることはそれだけで価値があると考えられるのでやったことをちゃんと文章にして残してくれるのはとても有用なことだと思うのです。

67 :ずがーん五段錬士:2017/05/11 12:57:03  0MONA/0人

>>64
多分自分のことを指していると思うのですけれど、そのつもりです誤解させてしまうような書き方だったらすみません。
自分は昔の記事とその他諸々を組み合わせながら実装してるので他の人のアプローチを見るだけでも勉強になります的な感じです。

68 :きら五段錬士:2017/05/11 15:43:48  1.39MONA/2人

>>66
Monacoin初期の頃にmonacoind入りWeb鯖を立てようとして色々詰んで、最終的に自分でも何入れたか分からないようなブラックボックスになってしまったことがあり…備忘録も兼ねて始めた次第です。
最近はMonacoinが使えるサイトなどもかなり少なく寂しいので、これを参考に始めてみる方が増えればとても嬉しいですね、と思ってみたりします(´・ω・`)

69 :きら五段錬士:2017/05/11 16:05:57  0MONA/0人

>>66
いえいえ、そうであれば大丈夫です。参考になったと言って頂けると書いた意味があったと実感できます。
ただ自分も全てを理解して書いている訳でもなく、ましてやセキュリティなどに関して全く知識が無いので、これだけを情報源にして構築するのは無茶だと一応書いておきました。こちらこそ誤解を生んでしまったのであれば申し訳ありません…

(他のサイトの鯖がどう作られてるか、とか知りたいものです、、、)

70 :名無し四段:2017/05/11 20:34:28  0MONA/0人

faucetアプリ部分の更新待ってますー
bitcoinのfaucetの作り方はググれば出てくるけどモナは見つからず

71 :名無し三段:2017/05/12 22:33:24  0MONA/0人

ここを参考にもモナのサービスが充実することを願いますっ!

72 :きら五段錬士:2017/05/14 03:26:49  0MONA/0人

次の作業に入る前に質問があるので、ここで聞いてみます。
・サイトを作成するにあたって、どのPHPフレームワークを使うべきか(今までフレームワークは一度も使用経験なし)
・PC側の開発環境で作成したサイトをサーバで公開する際、どんな方法を使用するべきか(シンプルにFTPで転送、Gitでデプロイ、などなど…)

継続的に使って負担のかからない環境を初めから構築したいので、この時点で質問させていただきます。よろしくお願いします。

73 :きら五段錬士:2017/05/14 17:02:50  0MONA/0人

誰も答えてくれないけどage

74 :コグマ八段教士:2017/05/14 18:55:21  0.39MONA/1人

>>72 参考になるかは分かりませんが…
・PHPフレームワークは使用せずにfaucetを構築しました。
・VPSサーバーにSSHログインしているのであれば、SFTPを使用すればFTPサーバーを立てなくてもファイルをサーバーに送り込めます。ちなみに当方ではSFTPクライアントとしてWinSCPを使用しています。

75 :なむやん七段教士:2017/05/14 19:02:05  0.39MONA/1人

>>72
・フレームワークなど使ったこと無いですね、でも使った方が痒いところに手が届く(と思う
・SFTPでうpようp、同じくWinCSP

大体みんな考えることは同じじゃない

76 :きら五段錬士:2017/05/14 22:32:47  0MONA/0人

うーん、小規模というのもあってか皆さんも凝った手法は使わないんですね…

今回はサーバー側は普通にPHPとSFTPで作ることにします。ありがとうございました(´・ω・`)

77 :きら五段錬士:2017/05/17 17:44:19  0MONA/0人

…と言い切った後で申し訳ないのですが、Laravelを使って開発したり、それをサーバーの方にデプロイする一連の操作が見えてきたので、お勉強も兼ねて試してみます。すみません(´・ω・`)

もしかしたら今夜進められるかもしれません。期待せずお待ちくださいー

78 :きら五段錬士:2017/05/17 21:46:49  0MONA/0人

お待たせしました、では早速始めましょう。もしかしたら今日は結構進められるかもかもしれないです

第4回、Windows側にXAMPPとmonacoind、そしてをIDEも放り込む…

79 :きら五段錬士:2017/05/17 21:56:37  0MONA/0人

1. 以下からXAMPP落としてきます。自分は本番環境のPHPが7.0.15だったので、それに最も近い7.0.18を引っ張ってきますよ
https://www.apachefriends.org/download.html

2. そのままインストールに入ります。自分は、導入するソフトの選択やインストール先はデフォルト、Learnなんとかはチェック外しました

80 :きら五段錬士:2017/05/17 22:31:35  0MONA/0人

3. PHPMyAdminでrootユーザのパスワードを変更。ここら辺を詳しく書くのは流石に面倒なのでググって…
User accounts→ Edit privileges→パスワードを変更する、的な流れです。あとrootアカウントは3つあるので全部変えときます。3つそれぞれに別のパスワードは必要ないと思いますが、@localhostになってるものは最後に変更したほうがいいと思います。このユーザーのパスワードを変えた時点で操作できなくなるので…

4. 「XAMPP Control Panel」の「Explorer」ボタン押してxamppフォルダを開き、そこからphpMyAdmin\config.inc.phpを開きます。

5. 「$cfg['Servers'][$i]['auth_type']」とかいう記述を探し、その右の「config」を「cookie」に変えて保存します。

81 :きら五段錬士:2017/05/17 22:43:05  0.0888MONA/1人

6. 「$cfg['blowfish_secret']」も探して、その右の「xampp」を長い文字列作って書き換えておきます。で保存。

7. (xamppフォルダ)\htdocsフォルダを開き、中身全削除。必要なものは特に入ってないので。

…これで終わった?終わったよね?

82 :きら五段錬士:2017/05/17 23:30:30  0MONA/0人

次はmonacoindか…

8. 以下のURLからMonacoinウォレットをダウンロード。普通のダウンロードリンクと同じと思われるかもしれませんが、実はCLI版(monacoind)も同梱されています。
https://monacoin.org/ja/download.html

9. DLできたら解凍し、「bin」「include」「lib」フォルダと同じ階層に「coindata」フォルダを作成。そしてその中に「monacoin-main」フォルダを作成。

10. binフォルダ内のショートカットを作成。使いやすい場所に置いておきます。

11. それを右クリックしてプロパティを開く。リンク先を「monacoind -server -rpcallowip=127.0.0.1 -rpcuser=(RPCのユーザー名) -rpcpassword=(RPCのパスワード) -rpcport=56011 -datadir=..\coindata\monacoin-main」として、OKで反映。
なお、括弧の部分はVPSの時と同じにしておきます。セキュリティ上はアレかもしれませんが、混乱してやり直しになったら本末転倒なので…

83 :きら五段錬士:2017/05/18 00:28:30  0MONA/0人

そしてIDEを…と思いましたが、気軽に触れるいいものは見つからない…とりあえずこのまま進めます。

そして追記、>>80の3.ですが、これも本番環境と同じにしておくと後々楽でしょう。分かるようになったら別々にしましょう。

84 :きら五段錬士:2017/05/18 01:24:17  0MONA/0人

うん、これで第4回終了…だね?
そして第5回、2つの環境にComposer(さらにLaravelも?)をインスコ。

まずはWinPC側から。ここで参考にするのはイカ2つです(実は色々ググってますが直接コピペしてくるのはこの辺りのみです)
http://vdeep.net/php-composer
http://libro.tuyano.com/index3?id=11526003&page=2

85 :きら五段錬士:2017/05/18 01:24:22  0MONA/0人

1. Cドライブ直下に「bin」フォルダを作成し、環境変数に登録。別の案件で既にやってるならスキップで。

2. 以下のリンク→「Download」→「Latest Snapshot」でComposerの自動設定スクリプトをDL。先ほどのC:\bin内に設置しておく。
https://getcomposer.org/

3. コマンドプロンプトを起動し、以下のコマンドを打ちます。「> 」は除いて、そして一行ずつ。
> cd C:\bin
> echo @php "%~dp0composer.phar" %*>composer.bat
これで、Composerを呼び出すのに必要なbatファイルを作成できました。コマンドの詳細は参考元にて。

4. ここでPCを再起動します。そうしないと、コマンドプロンプトの起動方法によっては環境変数が反映されずComposerが起動できません。
当然ですが、再起動前にやっておきたいこと(何かを保存しておきたいとか)は一通り済ませてから行ってください。

86 :きら五段錬士:2017/05/18 01:29:29  0MONA/0人

5. xamppフォルダ内に「www」フォルダを作成し、その中でShift+右クリックして「コマンド ウィンドウをここで開く」します。

6. 以下のコマンドでLaravelの導入、と同時に雛形を持ってきてプロジェクトの作成を行います。
> composer create-project laravel/laravel myapp --prefer-dist

87 :きら五段錬士:2017/05/18 01:44:23  0MONA/0人

しばらく待つと出来上がります。

7. 「XAMPP Control Panel」の「Config」(Apacheのやつ)→「Apache (httpd.conf)」で、Apacheの設定ファイルを開きます。

8.「DocumentRoot」を探し、その行の末尾にある「htdocs」を「www/myapp/public」に書き換え。

9. 1行下にある「htdocs」は「www」に書き換え、最後に保存→閉じる。

10. 「XAMPP Control Panel」で「Stop」(Apacheのやつ)→「Start」(同左)で設定反映。

11. http://127.0.0.1/ にアクセスして、Laravelのページが出るか…?

yay!!!!!

88 :きら五段錬士:2017/05/18 02:04:25  0MONA/0人

サーバにもComposerを入れます。Laravelなど、Composerで入れたものは後で半自動でインストールされるので、現時点では不要です。
既にSSHログインしている状態から始めます。

参考一覧
http://qiita.com/u-akihiro/items/d77236631acc34715a20
http://bouyke.com/post/howto-install-composer

12. 以下のコマンドでダウンロード、インストールし、最後にバージョン確認で〆ます。
$ cd /usr/local/bin
$ curl -sS https://getcomposer.org/installer | sudo php
$ sudo mv composer.phar composer
$ composer -V

Composer version 1.4.2 2017-05-17 08:17:52

89 :きら五段錬士:2017/05/18 02:04:33  0MONA/0人

お疲れ様でした。これでベースは一通り完成です!
次回からはLaravelの基礎を覚えながらFaucetの中身を作っていきましょう(´・ω・`)

90 :きら五段錬士:2017/05/20 03:01:15  0MONA/0人

…と思いきや、今になってMariaDBの闇が現れました。コマンドライン以外でログインできません()
それを知らずに色々と弄ってしまい、鯖を構築し直す羽目に…

訂正します。この回でベース完成です。
~第7回、Laravel用DBユーザの作成~

91 :きら五段錬士:2017/05/20 03:23:38  0MONA/0人

1. XAMPPでApacheとMySQL(MariaDB)を起動し、 http://127.0.0.1/phpmyadmin/ にアクセスしてphpMyAdminにログインする。
2. 「User accounts」→「Add user account」からユーザー作成画面へ。ユーザー名は「laravel」、パスワードは任意、グローバル特権は何もチェックせず。これで作成。

3. VPSにログインし、以下のコマンド。
$ sudo mysql -u root

4. MariaDBの操作画面になるので、「> 」は取り除き、「(パスワード)」は2.で決めたパスワードに置き換え(別のものだけど失念防止のため同じパスに)、以下のコマンドを打ち込む。
> create user 'laravel'@'localhost' identified by '(パスワード)'

92 :きら五段錬士:2017/05/20 03:42:19  0MONA/0人

5. XAMPPのphpMyAdminに戻って「データベース」をクリックし、「データベースを作成する」から作成。名称は「myapp」、照合順序(文字コード)は「utf8mb4_general_ci」で。

6. またVPSに移り、先ほどのSQL操作画面のまま、以下のコマンドを実行。
> CREATE DATABASE myapp CHARACTER SET utf8mb4;

6. さらにphpMyAdminに戻り、「User accounts」→laravelの右にある「Edit privileges」→Global右の「データベース」、「myapp」を選択して「実行」。権限を聞かれるので「データ」「構造」にチェックで「実行」。

7. 実行すると、それ使ったSQL文が出てくるのでVPS側にコピペしてEnter。そして以下のコマンドで画面を戻して終了。
> quit

93 :きら五段錬士:2017/05/20 03:45:57  0MONA/0人

(4.のコマンド末尾に;が足りない…)

とりあえず、これでLaravelでの開発に着手できる…かな?今日はここまで(´・ω・`)

94 :きら五段錬士:2017/05/20 03:46:54  0MONA/0人

訂正、そもそも第7回ではなく第6回ですね…

95 :きら五段錬士:2017/05/20 13:13:08  0MONA/0人

お か し い
XAMPPのlaravelアカウントがパスワードなしでログインでき、逆に正規のパスワードでログインできない…
匿名ユーザー云々の設定かもしれないけど、LinuxとWindowsの違いでそこまで面倒見るの面倒…

難易度とPCの要求スペックがちょっと上がりますが、開発環境をVagrantでのLAMPに変更するかもしれません、いや、します。
>>79から全部修正、XAMPPを無かったことにしてVagrantのインスコを解説します。もうしばらくお待ちください。

96 :なむやん七段教士:2017/05/20 13:51:48  0.39MONA/1人

自分は今、LinuxとWin10の両方の環境でLAMPP構成してるけど問題ないね
自分の手順は
MysqlへのPATHを通した後にログイン mysql -u root
RootのPASSをセットSET PASSWORD FOR 'root'@'localhost'=PASSWORD(‘password’);
Mysql dbをセレクト use mysql;
PASS無しアカウントを削除 DELETE FROM USER WHERE PASSWORD='';
“partydb”データベースを作成CREATE DATABASE partydb CHARACTER SET utf8 COLLATE utf8_general_ci;
“owner”ユーザーを作成 CREATE USER 'owner'@'localhost' IDENTIFIED BY 'password';
Partydbに権限を付与 GRANT ALL PRIVILEGES ON partydb.* TO 'owner'@'localhost';
CSV書き出し権限を付与(必要無し) GRANT FILE ON partydb.* TO 'owner'@'localhost';
ログアウト quit

97 :きら五段錬士:2017/05/20 14:46:02  0MONA/0人

>>96
うーん…なぜでしょうか…俗に言うおま環なんでしょうか…
これからもLinux/Windows間での環境の差異も出るかもしれませんし、統一した方が後々楽かもしれないので、第4回からやり直してみます。

98 :きら五段錬士:2017/05/21 01:26:04  0MONA/0人

大きく戻って第4回。Vagrantのインストール→設定。一応言っておきますと、僕のPCはWindows10です。
参考: http://qiita.com/mhagita/items/8f339106c3b48eb098ca

1. Vagrantがベースとして使用するVirtualboxをダウンロード、インストール。一応基本なので、分からない方はググって…
https://www.virtualbox.org/wiki/Downloads
2. Vagrantを以下からダウンロード、インストール。
https://www.vagrantup.com/downloads.html

3. Windowsのコマンドプロンプトを開き、以下のコマンドで作業用フォルダを作成→環境構築の準備。
> cd c:/
> mkdir vagrant
> cd vagrant
> mkdir ubuntu16
> cd ubuntu16
> vagrant init bento/ubuntu-16.04

99 :きら五段錬士:2017/05/21 01:26:11  0MONA/0人

3. 構築指南ファイルである「C:\vagrant\ubuntu16\Vagrantfile」を開きます。

4. 「 # config.vm.network "forwarded_port", guest: 80, host: 8080」となっている行の「# 」を消してコメントアウトし、PCのポート8080を仮想マシンのポート80に転送させる。
5. 「 # config.vm.network "private_network", ip: "192.168.33.10"」を同じようにコメントアウト。これにより、PCからはこのIPアドレスで仮想マシンに接続できる。
6. 最終行(「end」とのみ記述されている)の前に新たに行を作り、以下をコピペして保存、閉じる。
config.vm.provider "virtualbox" do |vb|
vb.memory = "2048" # メモリは2GB
end

100 :きら五段錬士:2017/05/21 01:46:13  0MONA/0人

7. あとは以下のコマンドで構築から起動まで全部やってくれます。yay!!!!!
> vagrant up

8. あとは以下の情報でSSH接続し、成功したら仮想マシン(VM)の構築は完了!
IPアドレス: 192.168.33.10
ユーザー名: vagrant
パスワード: vagrant

101 :きら五段錬士:2017/05/21 03:59:17  0MONA/0人

9.-22. >>32->>44までをVagrant環境でも行います(ファイアウォールに関する2.と3.は行わないので計14ステップ)。自分の環境では難なく導入できました。

23.-37. 同じく、>>48->>59までをVagrant環境でも行います。こちらも自分の環境では問題は発生しませんでした。

これでVPSの環境とVagrantの環境はほぼ一致しているはずです。敷いて言うならユーザー名が違うことくらいか。

102 :きら五段錬士:2017/05/21 04:37:19  0MONA/0人

第5章、データベースの作成とComposer、Laravelのインストール。
ここからは決まったマニュアルが無いので面倒ですね…ちょっとSQL文作ってきます

103 :きら五段錬士:2017/05/21 05:38:47  0MONA/0人

と思いきや、まるでマニュアルのようなサイトがあった(`・ω・´)
参考: http://logstack.biz/?p=99

1. Vagrant側にSSHでログインし、以下のコマンドでMariaDBにログインします。
$ sudo mysql -u root
どうやらroot権限があればパスワードを完全無視して入れるらしい。覚えるパスワードが減るのはいいのかもしれないけど…他の管理ソフト使えないじゃないですか…

2. SQLの画面に切り替わる。新しくパスワードを作って「(新しいパスワード)」をそれに置き換えてから、一行ずつ打ち込む。
> CREATE DATABASE myapp CHARACTER SET utf8mb4;
> GRANT ALL ON myapp.* TO myapp@localhost;
> FLUSH PRIVILEGES;
> SET PASSWORD FOR myapp@localhost = PASSWORD('(新しいパスワード)');

104 :きら五段錬士:2017/05/21 06:00:13  0MONA/0人

3. 「quit」で終了して、今度は以下のコマンドからパスワード打ってmyapp垢(アカウント)でログインできるか確認。成功したらまた「quit」。
mysql -u myapp -p

4.-6. VPSにもSSHでログインし、>>103から>>104の3.までを行う。

105 :きら五段錬士:2017/05/21 06:12:06  0MONA/0人

ハイ次、Composer導入です。今VPSのウィンドウ開いてるので、こっち先に済ませてからVagrant側にもインスコ。

参考一覧
http://qiita.com/u-akihiro/items/d77236631acc34715a20
http://bouyke.com/post/howto-install-composer

7. 上記の通り、引き続きVPS側。以下のコマンドでダウンロード、インストールし、最後にバージョン確認で〆。
$ cd /usr/local/bin
$ curl -sS https://getcomposer.org/installer | sudo php
$ sudo mv composer.phar composer
$ composer -V

すると、こう返ってくる。
Composer version 1.4.2 2017-05-17 08:17:52

106 :きら五段錬士:2017/05/21 06:15:14  0MONA/0人

8. VPS側はしばらく使わない(はずな)ので、ウィンドウを閉じてログアウト。Vagrant側のコンソールを引っ張り出す。

9. Vagrant側で、>>105の7.を行う。

これが問題なくできたらComposer導入まで完了。最後にLaravelをVagrant側に導入。

107 :きら五段錬士:2017/05/21 06:45:55  0MONA/0人

10. 実は起こるエラーを先に回避するため、以下を実行。
$ sudo chown -R $USER /var/www
$ sudo chown -R $USER $HOME/.composer
$ sudo apt-get install php-zip

参考一覧
http://stackoverflow.com/questions/35874482/cannot-create-cache-directory-or-directory-is-not-writable-proceeding-withou
https://teratail.com/questions/46730
https://laracasts.com/discuss/channels/laravel/zip-php-extension-problem-in-ubuntu-php7

108 :きら五段錬士:2017/05/21 06:46:14  0MONA/0人

vagrant@vagrant:/var/www$ composer create-project laravel/laravel myapp --prefer-dist
Cannot create cache directory /home/vagrant/.composer/cache/repo/https---packagist.org/, or directory is not writable. Proceeding without cache
Installing laravel/laravel (v5.4.23)
Cannot create cache directory /home/vagrant/.composer/cache/files/, or directory is not writable. Proceeding without cache
Failed to download laravel/laravel from dist: The zip extension and unzip command are both missing, skipping.
The php.ini used by your command-line PHP is: /etc/php/7.0/cli/php.ini
Now trying to download from source

こんな感じになって、正直焦りました…

109 :きら五段錬士:2017/05/21 12:25:21  0MONA/0人

>>107を行っている場合、>>108は発現しません)

11. そして以下のコマンドでLaravelのテンプレを一式導入。
$ cd /var/www
$ composer create-project laravel/laravel myapp --prefer-dist
これで「127.0.0.1:8080」(192.168.33.10:80)に接続して、Laravelの起動ページを拝みまs…真っ白!?!?

12. 先ほど行った回避が逆にマズかったようです。所有権はrootに戻し、パーミッションだけを変更します。
$ sudo chown -R root /var/www
$ sudo chmod -R 744 /var/www
$ sudo chmod -R 777 /var/www/myapp/storage
参考: https://kore1server.com/338/Laravel

13. さあ、もう一度同じアドレスにアクセス。ど真ん中に「Laravel」と表示されれば大成功!

110 :きら五段錬士:2017/05/21 13:09:06  0MONA/0人

12. うん、間違えてました。なんかもう全部777でいいや…考えたくない…
$ sudo chown -R root /var/www
$ sudo chmod -R 777 /var/www

13. さあ、もう一度同じアドレスにアクセス。ど真ん中に「Laravel」と表示されれば大成功!

111 :きら五段錬士:2017/05/21 13:41:30  0MONA/0人

やっとLaravelに入れます。基礎から始めると目的から遠ざかってしまうのですが、なんとログインページを勝手に作ってくれる魔法のコマンドがあるらしい…やってみましょうか。

14. 以下を叩いてデータベースを整備。
$ php artisan migrate
こんなんでエラー起きる訳…起きた!?!?!?

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t
oo long; max key length is 767 bytes (SQL: alter table `users` add unique `
users_email_unique`(`email`))

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t
oo long; max key length is 767 bytes

112 :きら五段錬士:2017/05/21 13:47:28  0MONA/0人

アッ…飛ばしてました。>>111はもう消した!(AA略)

14. 以下のコマンドで環境変数を設定するファイルを開きます。このファイルを使うことで、開発環境と本番環境で勝手にDBやメールのログイン設定を使い分けてくれる訳です。
$ cd /var/www/myapp
$ vim .env

113 :きら五段錬士:2017/05/21 13:47:34  0MONA/0人

15. 以下のように設定していきます。違っている部分だけ書き換えるように。あと括弧は自分の情報で置き換えてください。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=myapp
DB_PASSWORD=(MariaDBのmyapp垢パスワード)
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=(自分のGmailアドレスを持ってきてみる)
MAIL_PASSWORD=(Gmailのパス)
MAIL_ENCRYPTION=tls

114 :きら五段錬士:2017/05/21 13:48:38  0MONA/0人

16. 保存・終了。コマンドラインに戻ります。
やっとLaravelに入れます。基礎から始めると目的から遠ざかってしまうのですが、なんとログインページを勝手に作ってくれる魔法のコマンドがあるらしい…やってみましょうか。

$ php artisan migrate
こんなんでエラー起きる訳…起きた!?!?!?

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t
oo long; max key length is 767 bytes (SQL: alter table `users` add unique `
users_email_unique`(`email`))

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t
oo long; max key length is 767 bytes

115 :きら五段錬士:2017/05/21 15:03:58  0MONA/0人

さて、この問題を解決するにはMariaDBを10.2以降にしなければ解決しないようです(自分で試した)

参考一覧
http://qiita.com/beer_geek/items/6e4264db142745ea666f
https://downloads.mariadb.org/mariadb/repositories/#mirror=yamagata-university&distro=Ubuntu&distro_release=xenial--ubuntu_xenial&version=10.2
https://askubuntu.com/questions/705458/ubuntu-15-10-mysql-error-1524-unix-socket

17. リポジトリを追加して、MariaDBの10.2をインストール。途中で新しいパスワードを設定するか聞かれますが、空っぽエンターで問題なし。
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.2/ubuntu xenial main'
$ sudo apt-get update
$ sudo apt-get install mariadb-server
これで最新にアプデできてめでたし…ではありません。なんとrootにログインできなくなっているではありませんか。

ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded

116 :きら五段錬士:2017/05/21 15:08:55  0MONA/0人

どうやらこのエラー、sudoしてれば問答無用でログインできるあの機能に関連してるようです、エラーメッセージでググったところ、その機能を丸ごと廃止すれば普通に使えるようです。

18. ということで、色々弄って修正。
$ sudo /etc/init.d/mysql stop
$ sudo mysqld_safe --skip-grant-tables &
$ sudo mysql -uroot
> use mysql;
> update user set password=PASSWORD("(MariaDBのrootパス)") where User='root';
> update user set plugin="mysql_native_password";
> quit;
$ sudo /etc/init.d/mysql stop
$ sudo kill -9 $(pgrep mysql)
$ sudo /etc/init.d/mysql start

117 :きら五段錬士:2017/05/21 15:14:18  0MONA/0人

19. ログインしてみて、パスワードを聞かれたら打ち込んでログイン。できたらそのままで置いときます。
$ mysql -u root -p

これにより、これからはMariaDBのrootログインをする際もパスワードが必要になります。その代わり、おそらくですがphpMyAdminやAdminerなどのWebで操作するソフトウェアも使えるようになったかと。

20. 今までのいざこざで、myappデータベースは中途半端に散らかった状態になっています。作り直し。
> DROP DATABASE myapp;
> CREATE DATABASE myapp CHARACTER SET utf8mb4;
> GRANT ALL ON myapp.* TO myapp@localhost;
> FLUSH PRIVILEGES;
> quit;

118 :きら五段錬士:2017/05/21 15:19:32  0MONA/0人

21. 改めて、データベースの下地を整えます。
$ php artisan migrate

Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table

今度は上手くいったようです。めでたしめでたし?

22.-25. >>115->>117の17.から20.をVPS側でも行います。失念する前にやっておく戦法。

119 :きら五段錬士:2017/05/21 15:51:50  0MONA/0人

26. 魔法のコマンドッターン!
$ php artisan make:auth

あっという間に作成されたので、色々試してみましょう…あれ?パスワードリセットメールのURLがlocalhostになっててアクセスできませんね。

27. 環境変数ファイルオープン!
$ vim .env

28. 「APP_URL=http://localhost」という記述があるので、そこに「:8080」を追記して保存・終了。解決!

これでWebサービスが作れてしまいました。早すぎ。

120 :きら五段錬士:2017/05/21 15:52:40  0MONA/0人

第5章、終了。
まだまだかっ飛ばしていきますので、しばらくお待ちを…

121 :きら五段錬士:2017/05/22 02:47:37  0MONA/0人

第6回、デプロイ環境整備と本番環境テスト。正直くっそ難関でした。

この回から独自ドメインを使用します。下準備として、.tkでもいいのでドメインを一つ契約して、AレコードをVPSのIPアドレスに設定しといてください。
さらに、BitBucketも使用します。アカウントを作成し、好きな名前でリポジトリを作っておきましょう。自分は「monars-app」としましたので、原則この名前で解説していきます。
あと、「SFTP Net Drive」というソフトをPCにインストールしておくとすごい楽です。Vagrant環境の情報を入れて、「Advanced」→「Drive」→「Server's root folder」だけチェックして、あとは「OK」→「Connect」で弄り放題。

122 :きら五段錬士:2017/05/22 02:47:40  0MONA/0人

1. Vagrant側で、BitBucketの認証に使う鍵を生成、そして公開鍵を出力。
$ ssh-keygen -t rsa -C "(BitBucketに登録したメルアド)"
$ cat ~/.ssh/id_rsa.pub

2. すると、「ssh-rsa (うんたらかんたら) (メルアド)」という一行が返ってきます。それを丸ごとコピーしておきます。もしクリップボードを上書きしてしまいそうならメモ帳や付箋ソフトに貼り付けておきましょう。

3. BitBucketのページを開くと左下にユーザーのアイコンがあるので、そこから「BitBucket settings」、さらに(「セキュリティ」→)「SSH 鍵」を開きます。

4. 「鍵を追加」をクリック、Labelには「vagrant」など分かりやすい名前でも付けて、Keyに2.の一行を貼り付けます。そして「鍵を追加」クリック。
これで、vagrantのVMからgit操作ができるようになります。

123 :きら五段錬士:2017/05/22 02:56:37  0MONA/0人

5. BitBucketで作成したリポジトリを開き、SSHでアクセスするためのアドレスをコピーしておきます。これも上書きされそうならどこかに退避貼り付けしておきましょう。

6. Vagrant側コンソールに戻り、コミット→BitBucketに反映させます。
$ cd /var/www/myapp
$ git init
$ git add .
$ git commit -m "1st commit."
$ git remote add origin (先ほどのSSH用リポジトリアドレス)
$ git push origin master
これでBitBucket側にプロジェクトの中身が上がってる…はず。実は自分はここで色々躓いてたので、これだけで行けるか確証ないんです…

7.-10. VPS側でも>>122の1.-4.を行う。VPSからも使用するので。

124 :きら五段錬士:2017/05/22 03:03:49  0MONA/0人

11. もう一度リポジトリページを開き、今度はHTTPSのリポジトリアドレスをコピーしておきます(SSHとなっている部分をクリックすると切り替えることができ、URL的な文字列が現れます)。
ちなみに、ここだけHTTPSを使うのは、SSHでのcloneが異様に遅かったからです…

12. VPS側コンソールに戻り、以下のように叩いて準備をしていきます。
$ cd /var/www
$ git clone (先ほどのHTTPS用リポジトリアドレス) myapp
$ sudo chown -R root /var/www
$ sudo chmod -R 777 /var/www
$ sudo apt-get install php-zip
$ cd myapp
$ composer install

125 :きら五段錬士:2017/05/22 03:09:32  0MONA/0人

13. 以下のように叩いて環境設定ファイルを新規作成、編集します。
$ cp .env.example .env
$ vim .env

126 :きら五段錬士:2017/05/22 03:09:34  0MONA/0人

14. そして以下のように編集(差分の書き換え)して、保存→終了します。
APP_NAME=(自分がサイトに付けたい名前)
APP_ENV=production
APP_DEBUG=false
APP_LOG_LEVEL=debug
APP_URL=(取得したドメインのURL)
DB_DATABASE=myapp
DB_USERNAME=myapp
DB_PASSWORD=(myapp垢のパスワード)
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=(Gmailのアドレス)
MAIL_PASSWORD=(Gmailのパスワード)
MAIL_ENCRYPTION=tls

127 :きら五段錬士:2017/05/22 03:14:26  0MONA/0人

15. ここでいきなりApacheの設定を編集します。
$ sudo vim /etc/apache2/sites-enabled/000-default.conf

16. 「DocumentRoot (うんたらかんたら)」を「DocumentRoot /var/www/myapp/public」に書き換え、保存、終了。

自分はずっと403エラーで( ゚Д゚)ハァ?とか思ってたらDocumentRootがおかしかったという…
あと申し訳ないのですが、>>107の10.あたりでVagrantでもこの設定(15.-16)を行うはずが、完全に抜けてました。どこかでまとめ直す際には絶対修正入れます。。。

128 :きら五段錬士:2017/05/22 03:19:20  0MONA/0人

17. エラーなく成功させるにはまだ足りない。コマンド。
$ sudo systemctl restart apache2
$ php artisan key:generate
$ php artisan config:clear
自分でも後ろ2つはあまり分かってないのですが、Apache再起動→APP_KEYの生成→設定キャッシュの再作成…?

18. 新しく取ったドメインにアクセスしてみましょう。ローカルで試した時と同じように垢作ったりパスワードリセットできたりするはず。たぶん。

129 :きら五段錬士:2017/05/22 03:20:04  0MONA/0人

これで真・第6回終了。長かった。。。。。。。。。。(´・ω・`)

130 :きら五段錬士:2017/05/22 03:25:14  0MONA/0人

P.S.: 勝手に会員登録されたりするのが不安な場合、以下のコマンドでメンテナンスモードになってくれます。フレームワークすごすぎ。
$ php artisan down

あと、後出しになったけども今回の参考。
http://qiita.com/zaburo/items/bc448a9fbf2d35194302
http://cflat-inc.hatenablog.com/entry/20130311/1362955659
http://tech.maechanblog.com/671
http://tech.nitoyon.com/ja/blog/2013/01/11/github-clone-http/
http://qiita.com/komatzz/items/ca2d0e5856a75dc6c955
でも今回はググりながら全体像作ってて頭がパンクしかけていたので、これでも全て紹介できてないかも。。。

131 :きら五段錬士:2017/05/22 03:25:32  0.114114MONA/1人

(疲れた…おやすも…)

132 :きら五段錬士:2017/05/23 22:51:49  0MONA/0人

全工程とか言いながら、前回終了時点から色々試し過ぎてわけわからなくなってる…履歴とか漁ってまとめないと

133 :きら五段錬士:2017/08/07 21:56:35  0MONA/0人

(´・ω・`)お久しぶりです。そして2カ月半も待たせてしまい、申し訳ない。
今月からこのプロジェクトを再開することをここに宣言いたします。

と、ここで一つ変更をば。
今まではほぼ作業と投稿を並行して行ってきたもののあまりにもgdgdすぎたので、次回からは一度メモしたものを作業後に整理してまとめて投稿していきたいと思います。

134 :きら五段錬士:2017/08/07 22:06:38  0MONA/0人

もう一つ。ここまで行き当たりばったりで進んでしまい環境も結構散らかってきているので、(今のうちとばかりに)本番環境、開発環境ともにクリーンインストールを行い、作り直してみようと思います。
といっても基本的な計画を変更したりということではないので、今まで行った手順を整理したうえで再実行するだけ…のはず。

自分用メモとして基本部分を書き出しておくと、
・手元にWindowsPC、VPSにはUbuntu16.04を導入
・主なソフトウェアとしてApache、PHP、MariaDB、Monacoindを使用。さらにフレームワークとしてLaravelを使って開発
・本番環境への移行はBitBucketにプッシュ、ただしVPSへの設置は手動とする
以上。。。

135 :きら五段錬士:2017/08/24 14:25:32  0MONA/0人

…と宣言したにも関わらず半月以上過ぎています。(´・ω・`)スミマセンデシタ

このページの内容を改良・一部変更してQiitaに載せています。まだ実際にプログラミングするまで至っていないの作業として進んではいないのですが、更新したことにしてageておきます。

136 :きら五段錬士:2017/08/24 14:28:06  0MONA/0人

暗号通貨のウェブウォレットっぽいものをPHPで作る その0
http://qiita.com/syoboon77/items/917c3ce6190ca61b6795

WindowsにVagrantとか入れてLAMPサーバ+αを立てるまでを1から説明する - 暗号通貨のウェブウォレットを(ry その1
http://qiita.com/syoboon77/items/72f6a426f562befbe0e8

…Qiitaってこういうのも書いて良い…よね?

137 :PPP四段:2017/08/24 21:13:08  0.114114MONA/1人

まってたで!!

138 :きら五段錬士:2017/08/25 05:53:28  0MONA/0人

Qiita更新しました!これでAsk Mona版の9割程度まで進捗したかと思います。

monacoind入れたLAMPサーバにLaravelも入れる - 暗号通貨のウェブウォレットを(ry その2
http://qiita.com/syoboon77/items/0d15bafdf8c630fb0063


>>137
これまでずっと待っていたんですか!ありがとうございます!!

139 :きら五段錬士:2017/08/25 20:03:17  0MONA/0人

Qiita更新しましたyay!!!!!

Laravelでサイト作る際に行った初期設定 - 暗号通貨のウェブウォレットを(ry その3 - Qiita
http://qiita.com/syoboon77/items/cd3e1d8201ef7b6810e6

これで旧版に追いついた…かな?

140 :raspi0124さん:2017/08/26 03:21:23  0MONA/0人

>>139 キターーーーーーーーーーーーーーー

お気に入り

新規登録してMONAをもらおう

登録すると、投稿したり、MONAをもらったりすることができます。質問したり、答えたりしてMONAを手に入れてください。

新規登録ログイン