プログラミングは面白い

プログラミングの事を中心に色々書いていきます

完敗

nginxとunicornの設定をしてみたけど私にはとても無理そう。
裏で調べ物してると、ちょいちょいターミナルが固まってしまうせいで、ログが消えたり、編集中のファイルが保存できなかったりマジでお邪魔要素が多い。
何か私にデプロイさせない大きな力が働いている気がする(錯乱

udemyにapache使った動画あったから気が向いたら購入しよう。
けど、もうしばらくデプロイは触りたくない。

てか、railsを勉強してる人ってデプロイどうしてるんだろうか?
チュートリアルの流れでheroku使ってる人が多いのかな?
ブログレベルのアプリならherokuでも十分そうだけど、VPSあるしなー。
Laravelのデプロイが簡単そうだったらそっちに乗り換えようかな。

めっちゃサンドバッグ欲しい。
タバコやめて1年半くらい経つけど、ここ数日はめっちゃタバコ吸いたくなった。
ストレス半端ない。
エンジニアって大変だなぁ...

気分新たに、PHPやろ。

大体邪魔するのはmysql

何か大きくつまずく原因の8割がmysqlな気がする。
ちょっとこれを最後にmysqlは卒業すると誓う。
相性悪すぎ。

mysql8にしたらbundle install出来たって言う。
原因も不明だし、ほんとしょーもない時間を使った。
解決は出来たけど、何の理解にも繋がらないとかマジで無意味。
1日マジで無駄にした。
イライラが止まらない。
ちょっと8月のお手伝いの感じがあまり身にならなそうだったらスクールに行こう。

これ以上時間を無駄にしたくない。

厄日

今日は本当にひどい日。
完全に呪われてるとしか思えない。

nginxとunicornの設定をしてみようと、VPSにてセットアップ準備をしていました。
まずはrailsをインストールして、テストアプリを作成しました。
すでにmysqlは入れてあったので、テストアプリを作成する時に-d mysqlをつけて作りました。
しかし、gemのmysql2のインストールがうまく行きません。
調べてみると、centos7ではデフォルトでmariadbとか言うデータベースがインストールされているようなのです。
でもこの時点でmysql5.7もインストール出来てるし、アカウント作れてログイン出来ています。
さらに調べてみると、sudo yum install -y mysql-develをインストールすればいいようでした。

が、

これがいくらやってもうまくいかない。
ここで初めてmariadbの存在に気づいてアンイストールをしました。

が、

余計なものまで消してしまったのか既存のmysqlにログイン出来なくなりました。
仕方ないのでmysqlを再インストールして再度、msql-develとやらをインストールしました。

が、

やっぱり失敗する...
もうイライラが止められず、年甲斐にもなく壁をぶん殴ってしまいました。
手がめっちゃ痛いです。
物に当たってはダメですね。
改めて反省。

気を取り直して、再度調べると、yum updateをするといいみたいな記事を見つけました。
早速実行してみると、すんごい数のupdateが始まったのでなんかイケるんじゃないかと期待しました。

が、

結果は変わりませんでした。
イライラが止まらないので、ちょっと席を外して休憩をしました。
戻ってくるとSSHタイムアウトになったようで固まっていました。
こうゆうちょっとした事でもイライラするのですが、再ログインしようとしたらConnection refusedと言うエラーで弾かれます。

いやいや、数分前までログインしてましたやん...
と、何故か関西弁で口走ってしまうほど、この謎現象に頭を抱えました。
あ、yum updateからか?とあたりをつけて検索してみると、同じような方の記事を発見。

yum updateした翌朝にsshできない – 株式会社12ネット

これ通りにやったらログイン出来るようになりましたが、 本来の目的はnginxとunicornをセットアップするはずだったのに全くそこまでたどり着けず。
まぁ無駄とは言わないけど、本当に非効率。
結局mysql2を入れらてないって言うのが一番の悲劇な気がする。

ほんと進まねぇ...
溢れ出るイライラが止まらない。
寝たいけど気になって寝れない。
あー、イラつく

くそ厄日

あー、なるほどね

さて、デプロイで心をへし折られたわけですが、諦めの悪さに定評がある私は折れた心そのままに、せっせと調べておりました。
Capistranoを使ってデプロイしたのですが、このCapistranoってやつはデプロイを自動化してくれるやつなんですよね。
自動化って、手動でやってる作業が面倒に感じた時に行う手法なわけですよ。
手動でやった事ないヤツがいきなり自動化なんかしたってその恩恵を受けられるはずがないわけで。
自動化する為の方法も学ばないと行けないので、より複雑化していたようです。
Capistranoってやつは設定さえしておけば、gitからcloneしてwebサーバーの設定をして、railsのアプリもなんか良い感じにしてくれる便利なやつっぽいですね。

まぁ要するに、webサーバーとアプリケーションサーバーをごにょごにょすればサーバーが応答してくれるわけですよね。
てことで、私はnginxとunicornを使ってデプロイをしたいので、こやつらを調べて手動でデプロイをしてみます。
最悪ダメなら、apacheを使ったデプロイ方法の動画がudemyにあったのでそれを購入してみます。 作ったアプリはブログだし、アクセスなんか知れてるから別にapacheでも良いんですけど。
なんか最近はnginxが主流みたいですし、私もその流れに乗りたい。

とりあえず、あってるかあってないかは置いといて、”要するにこれをやればいい”みたいな所にいけたので後はそれを勉強するだけです。
てことで、nginxとunicornの勉強中です。

てか、プログラマーってプログラミングしてれば良いんじゃないんですね。
サーバー周りの勉強ってまた違うジャンルな気がするんだけど...まぁ知ってて損はないんだろうけど。
ちょっと勉強効率悪い気がしています。
スクールみたいなところいってみようかなー。
メンターさんみたいな質問出来る人いてくれたら成長速度段違いな気がする。
ちょっと調べてみよう。

デプロイ無理

さくらVPSでデプロイに挑戦してみましたが、結果はダメでした。
手順が載ってるサイトを参考にやってみたけど、エラー吐いて終了でした。

今までも'これは無理だ'って事沢山ありましたけど、こんなにも先が見えない作業は初めてです。
一体何の設定をしていて、どこに影響するものなのか、漠然ともわかりません。
何をどうすれば良いのか、とっかかりがありません。
プログラムはやめないとは思いますが、流石に心がへし折れました。
デプロイして公開出来なければ私が勉強している事のほとんどは無意味でしょう。
しかし、デプロイに関してはバージョンだったり、デプロイ先の環境だったりであまりにもパターンが多岐に渡るようで、ピンポイントでググれません。

デプロイを独学で覚えた方はどうやって習得したのか、是非これをみていたらご教授願いたい...

もう独学は限界に来てしまったのかもしれない。
私の技量ではここから先は誰かの手を借りないと無理な気がする。

LaravelでMysqlを設定する

ちょっとPHPだけだと飽きちゃうのでLaravelにも挑戦中。
メインはrailsにするつもりなのであくまで他のフレームワークの視察程度です。

例の如く、データベースの設定で少し躓きました。
あ、でも少しだったので多少は成長したようです。

以下、軽く注意点を書いておきます。
まず、mysqlのバージョン8から認証方式が変わったようです。
既存の認証方式が何だったのか私にはわからないので、どのように変わったかは謎。
まぁとにかくこの認証方式のせいでデータベースのマイグレーションがうまく行きません。

まずはmysqlのユーザーのチェックをしましょう。
mysqlにログインして下記コマンドを入力して中身を確認。

mysql> SELECT user, host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | mysql_native_password |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+

私の場合はrootユーザーがcaching_sha2_passwordになっています。
こいつが悪さをしていますので、これを他のuserと同じくmysql_native_passwordにかえます。
変更方法は下記コマンド。

> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスを入力';

これで完了です。
rootとlocalhost、最後のパスは自分の設定に合わせて適宜変更してください。

また、今後新規でユーザーを作った場合にデフォルトでmysql_native_passwordになるようにしておきましょう。

$ mysql --help | grep my.cnf

これでmy.cnfファイルの場所を探して、下記を追記

[mysqld]
default-authentication-plugin = mysql_native_password

これでマイグレーションすればバッチリ成功すると思われます。

windows環境でこの設定するのにめっちゃ苦しんだ覚えがあります。
確かブログの記事にもした気がしますがまぁまた書いておきましょう。

そういえば、railsのデプロイは適当に中身がないアプリで試してみることにします。
これなら何かあってもノーダメージだし、何度でも簡単にやり直せますからね。
PHPが落ち着いたらいざ挑戦。

デプロイ進まず

さて、1週間前にアプリは開発完了し、これからデプロイ作業だ!というところで止まっています。

と言うのも、まずこのrailsのデプロイに関してあまり情報ありません。
capistranoというのを使ってデプロイする手法が流行りっぽいのですが、こいつが何なのかイマイチ謎。

私はある程度全体像を掴んでから作業に移行したい派です。
もちろん、やった事ないので全体像なんか掴みきれないのですが何となくでも流れを把握したいのです。
その作業をやっているかいないかでは、何か問題があった時の対処の時間が格段に減ります(私の場合は)。
また、モチベーションの低下も防ぐことが出来ます。
以前、djangoでも簡単なアプリを作って、それはVM環境内でデプロイをしてみました。
その時も右往左往しましたが、ある程度の流れを把握していたので割りとスムーズにデプロイできました。

もう少し全体像を掴んでからデプロイに着手したいところです。
早く公開したいんですけどね。
あと、ちょっと知り合いの会社でお手伝いって事で開発に参加させてもらえそうで、PHPの勉強をしています。
PHPの記法がなんかシックリこなくてちょっと手こずっていますが、やっぱりHTMLとの相性はバツグンですね。
とりあえずprogateのPHPを3周くらいしてから別の教材でも勉強しようと思っています。
基礎は固めておきたい。

デプロイを調べつつ、PHPを頑張ろう。
為せば成る、為さねば成らぬ何事も、成らぬは人の為さぬなりけり