プログラミングは面白い

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

デプロイ無理

さくら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振って指定したらオーバーライドできた。

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

railsでカラムの確認をしたい時

今までprogateで勉強していたのですが、progateは大変分かりやすく作ってあり、
データベースの構造を視覚的に表示してくれています。
そのお陰でどんなカラムがあって中身がどうなっているのか一目瞭然です。
しかし、実際の開発時にはそんな便利機能ありません。
テーブルを作成しカラムを作ったものの、後々カラム名なんだっけ?って事が私には割りとあります。

そんな時はコンソールで下記コマンド入力すると一発でカラム名を出してくれます。

テーブル名.column_names

これでカラム名を返してくれます。
備忘録として。
便利ー。