プログラミングは面白い

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

あー、なるほどね

さて、デプロイで心をへし折られたわけですが、諦めの悪さに定評がある私は折れた心そのままに、せっせと調べておりました。
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を頑張ろう。
為せば成る、為さねば成らぬ何事も、成らぬは人の為さぬなりけり

やったー

ついに完成した!
まだちょっと作りこみ甘い部分あるけど、まぁいいでしょう。
月別アーカイブを自分で作ったのはちょっと誇らしい。
railsの知識というよりは、rubyそのものの記述をちょこちょこ使った。
当たり前だけど、やっぱ実際何か作る場合はコーディングも結構必要なのね。
rubyの勉強もちゃんとやってないとダメだなって改めて思った。
もっとrubyの基礎を勉強しよう。

さーて、あとは地獄のデプロイか…
サーバーにruby入れて、rails入れて、mysql入れて、あと何が必要なんだろ。
あ、webサーバーか。これはNginxでいいかな。
あとはなんだ。
ドメインも取得しないとか。
あとなんだ。
gitも入れておこう。
こんなもんかな。

rails環境を用意
mysqlいれる
・Nginxをいれる
・gitをいれる
ドメイン用意

まぁあとは適宜対応しますか。
さぁ、クソサービス爆誕まであとわずか!
がんばるぞー。

月別アーカイブ的なのでめっちゃつまずいた

ブログによくある、月別アーカイブが欲しくて色々調べてみたのですがこれと言った情報がありません。
どうやって作ってるのか検討もつかなかったのですが、とりあえず表示部分だけ作れました。

私はコントローラー側で一気に処理出来るのかな?と思ったのですが、どうにも無理っぽかったので処理を分けてみました。
1. ○○○○年○月○日(件数)と表示させる処理
2. 上記からリンクを作成して該当月のデータだけを抽出

いま出来たのはとりあえず1だけです。
画面には表示できましたが、2の処理が出来るかな?
まぁ新しくviewを作ってアクションつくれば簡単に出来そうな気はする。
要は条件抽出したものをeachで取り出してviewで表示させればいいだけだと思うし。

これが出来たらあとは削除機能作って終わりだー。
あ、コメント機能ないな。
まぁいらないか。

あと少し。
がんばるぞー。

あと少し…

作り始めるとあっという間ですね。
まぁシンプルなブログシステムなので当たり前なんですけども。

しかしやっぱりHTML・CSSが理解しきれてなくて時間取られる。
ちょっとしたデザインを変えるにもトライ&エラーしまくり。
要素を横並びにするのにinline-blockにしてそれを右寄せしたいのに出来ない!とかね。
親要素を右寄せすると出来るのねこれ。
CSSの優先順位とかあったりしてCSSが効かない!とか…
railsはページ毎にCSSが分かれてるからこれに書いていけば干渉し合わないのかな?と思ったらガッツリ干渉しあってるし。
なんでこれ分かれてるんだよ…
仕方ないのでページ毎にID振って指定したらオーバーライドできた。

なんにせよ、あと少しだ。
編集機能つけたし、あとは削除機能つけたら終わりかな?
地獄のデプロイに耐えられるだろうか…
ここまで来たら公開したい。