GattsCOM

ブログ

BLOG

  1. Home
  2. Blog
  3. #laravel

Ajax LaravelやPHPでファイル保存する時Base64とかでよく忘れちゃうこと

CentOS Stream9 LAMP構築から色々含めて

こんにちわ!今日は2月8日にリリースされたLaravel9を使おうと思ってついでに新しいOSも導入しようと思ったのでここに書く内容をほぼほぼコピペで動くだろう!って感じで書いていこうと思います〜本ブログでは、Composer、npm、certbot(let's encrypt)なども含めてご紹介します。【構成】CentOS Stream9 (さくらVPS)Apache:2.4PHP:8.0MySQL:8.0Laravel:9.1Composer:2.2.6npm:8.3python:3.9 (Let's Encrypt Certbot用)今回やりたいLarave9は必須条件がPHP8以上でしたので、どうせならと思いOSも最新の物にしようと考えました。さくらVPSのコンパネから、OSをCentOS Stream9を選択してサクッとインスールします。インストールが終わったら、sshで接続します。この時、OSを入れる際に注意書きでrootユーザーではなくcentosってユーザーが自動で作られます。rootユーザーでは直接接続ができなくなります。(あとで設定で変更できますが、それは別のお話しで)あ、それからCentOS7などまで使われてたyumコマンドが変更されてdnfとなっているので、そこも見慣れないと思いますが気にせず進めて行きましょう!sshでログインの際に、変な文章出てくるのでcockpitは削除しておきましょう。続けてFirewalldを起動させて、ポートを開放しましょう続けてApacheのインストールです!インストールされたか確認しましょう。バージョンが表示されてればOKです!\(^o^)自動起動をONにしましょう!続いて、PHPをインストールしましょう! (8.0.13) 複数ライブラリもまとめてインストールインストールされたかバージョン確認してみましょう!表示されてればOKですよ!おめでとうございます続いては、MySQLのインストールですインストールされてるかバージョンの確認バージョンが表示されてればOKです。MySQLも自動起動をONにしときましょう!初期状態では、rootユーザーがパスワードなしで MySQLに接続できるようになっていますのでパスワードを設定しましょう!設定したパスワードで入れるか確認Sequel Proなどのツールを使っていると、接続できない!ってエラー出ると思います。なので、もう少し設定していきましょう。これでSquel Proの接続してみて、接続されればOK!続いて、Laraveをインストールする為に必要な「Composer」をインストールしていきましょう。バージョン表示の確認できればOKです!さてさて、やっと本題のLaravel9のインストールですね!!サクッと行ってみましょう!!インストールが終わったらバージョン確認してみましょう。プロジェクトへ移動してバージョン表示されましたか?されてればOKですよ!!!これで、ブラウザから確認してLaravel9の画面が出てればOKです。おめでとうございます!!ここからは、Laravelを使う上で必要になってくるnpmのインストールやSSL(https)をするためにpythonやcertbotのインストールになりますので、ここまでの方はお疲れ様でした〜!!!という事で、どんどん行きましょう!Pythonのインストール。Let's Encrypt(Certbot)を使えるようにする為↑ 終わったら下記実行してCertbot(Let's Encrypt)をインストールします。インストールが終わったらバージョン確認してみましょう。続いては、いつも通りhttpsをかける設定です。↑はいつも通りのコマンドですね。OSが変わったからと言って、ここのコードが変わるわけではないです!安心安心ここで、apacheの再起動忘れずに続いてnpmのインストールです。インストール終わったらバージョン確認バージョンが表示されてたらOKです。お疲れさまでした!!補足ですが。CentOS Stream9から/etc/にあった「hosts.allow」や「hosts.deny」がなくなっています。これはsshの接続を許可するIPを制限するための設定ファイルになるんですが、ものが無い。ならどうすんだ!って思った方。安心してください!履いてますよ!(古!CentOS Stream9からは「sshd_config」で行います。usernameのところは、接続したいusernameです@の後ろはIPアドレスになります。ですが、この設定hosts.allowやdenyと違ってIPの制限はされますがパスワードの入力までは見えてしまします。そこで、もしssh自体を制限したい場合は、Firewalldで行う必要があります。Firewalldは色んな設定の仕方がありますので、Firewalld sshなどでGoogle先生に聞いてもらったほうが色々書くより早いと思います。Firewalldでsshの書かれてるところを消して、usernameなどを設定、またIPアドレスなどもそこで設定してれば問題なくhosts.allow, denyの設定のような感じになると思います。どちらにしてもsshd_configの設定は必要ですので、お忘れなく。最後にsshd_configを触ったら再起動しておきましょう。まだまだ他にも細かい設定などはありますが、そこは省きました。httpdの「ServerTokens」や「ServerSignature」などphp.iniの「expose_php」などなど。今回はとりあえず、LAMP環境構築からLaravelをインストールして、npmやcertbot(Let's Encrypt)の一通りWEBサーバーとして使えるようにする設定のご紹介でした。長かったですが、最後まで読んでいただきありがとうございました。

Dockerを使って、とりあえずLaravel~MySQLまで使えるようにしよう(構築 前編)

みなさんご無沙汰してます!Docker使ってますか~!?大規模・小規模開発、関係ないです!節約につながるので、是非是非Dockerを使いましょう!!そして、少しでもサーバー構築の知識をつけてもらえたらと思います。環境はMacです。Windowsだと、すんなりインストールできる人とできない人が居るかもです。Windowsでつまずいた人は、ここらへん見るといいかも。Windows 10 + WSL 2 でDocker環境を構築する(Docker Desktop有料化対策)Windows docker起動エラー(WSL2 利用)今回の記事では、サーバー知識なくてもとりあえず、この手順通りやれば構築できるよ!?って感じでお伝えできたらと思います~!!まずは、Dockerがないと話しにならない!Dockerをインストールしましょう!(あ、Docker=ドッカーって読むみたいです)Docker公式サイト公式サイトを開いたら右上にある『Get Started』へ移動しましょう!そしたら、こんな画面になります。左の『Docker Desktop』からお使いのOSを選択しましょう!たぶん、デフォルトでお使いのOSが選ばれてると思います。画像左の『Download for Windows』って書いてる下向きになってるアイコンからOS選択できるのでそこから選んで見ましょう。AppleのM1チップをお持ちの方は、Apple Chipを選択してください。macの方CPUの確認は『アップルマーク → このMacについて』を押すとわかりますよダウンロード完了したら、インストールしてください。無事インストールが終わったらアプリを起動しましょう。※ Windowsの方は、ここで再起動しろと言われます・・・(Windowsのこう言う所うざいっすよね。右上あたりにクジラのアイコンが出てると思います!!クジラアイコンをクリックして画像部分が緑になってたら起動成功です。おめでとうございまーーーーーーーす!!!続いて、コンテナを作っていきましょう。(コンテナを作る準備をしましょう!)

LaravelでNamespace declaration statement has to be

Laravelでルートは合ってるのに、Not Foundが出る解決方法

Laravelで簡単にバックアップしてCronで別サーバーへFTP転送までを自動化してみた

久しぶりの投稿です。12月は忙しく、事務所の移転もしたりとバタバタでした。回線の移動が、ビビりまくりでしたねぇ!!と言うことで、本題に戻しますw今までCronを使ってシェルなどを動かしてバックアップを取っていたのですがLaravelには凄く便利なバックアップ方法がありましたので、そちらを共有したいと思います!!spatie/laravel-backup:5.* ← 5.*はLarave V5系ならこれ。Laravel 6系ならspatie/laravel-backup:5.* → spatie/laravel-backupとしてください。実行したら、だらだら〜とインストールが始まってPackage manifest generated successfully.って出たら完了です次にとすると、configディレクトリにbackup.phpが生成されます。こちらは、特に触らなくても問題ないです。一応実行だけしときます。このファイルはバックアップの場所とか色々設定ができます。ここまでしたら、一旦完了です!!すげー!簡単だ!!たぶん色々とエラーは出ると思いますが、実行はされてるはずです。エラーが出る人はphp artisan backup:run --disable-notificationsこちらで実行してみてください。実行結果は、/Laravel_Root/storage/Laravel/の中にzipファイルが出来上がります。このzipファイルの中に、LaravelのソースコードとDatabaseのdumpデータが入っています。もし、zipのパッケージが入ってない人はパッケージをインストールしてください。インストール方法はzipをインストールしたら、もう一度php artisan backup:runを実行してみてください。/Laravel_Root/storage/Laravel/ の中にzipファイルができましたか??出来てない人は、チャットなどで問合せてくださいw時間を見て順次返答してみます。ここまでで、一旦サーバーにバックアップを創ることが出来たと思います。ですが、サーバーにバックアップを取っても、サーバーがぶっ飛んだら意味がない!!!と言うことで、弊社は別のサーバーをバックアップに立てて、そちらにバックアップデータを入れています。この場合はFTPやSFTPとかでアップしてるので(scpとか使わないの?とか言わないでくださいね。)先にそちらの話しをしてみましょう!!!LaravelにはStorageクラスというものがあり、こちらが非常に便利です!!!まずは、config/filesystem.phpを開いてみましょう!!今回はFTPとしていますが、SFTPなどもいけますし見てわかるように、s3などへも簡単に出来ますよ。https://readouble.com/laravel/5.5/ja/filesystem.htmlこちらを参考にしてもらったら、Storageクラスがある程度わかると思います。細かくポートやパッシブモードなども設定できます。次に、転送させる為のコードを書くのですがこのコードを実行すると、自動的にconfig/filesystem.phpで設定した、FTPへファイルを作ります。なんとたったの1行!!すげー!さて、ここまでで、バックアップファイルの生成からFTPへ転送までが完了しましたここから、それじゃーバックアップしたデータを自動的にFTPへ転送してぇ〜よ!ってところでここで登場するのが、Cronです。Cronはサーバーで指定した時間に自動的に実行してくれる便利な機能です。Cronの設定は、各々扱うユーザーなどが違うかもなので、私の設定で書きます。まずはSSHで書かないといけないので、順に説明しながら書いていきます。急に英語でてきて、わかんねぇ!!って言わないでくださいねwとりあえず、少し話しは脱線しますが、Cronの説明をしていきます。* * * * * ← 5つの*がありますが、こちら、英語の説明を簡単に訳すと1つ目の* 分 (0〜59)2つ目の* 時間 (0〜23)3つ目の* 日 (1〜31)4つ目の* 月 (1〜12) (数字じゃなくて、jan,feb,mar,apr ...みたいに書いてもいいよ!)5つ目の* 週 (0〜6) (0:日曜、1:月曜、2:火曜、3:水曜、4:木曜、5:金曜、6:土曜) 数字じゃなくても(sun,mon,tue,wed,thu,fri,sat みたいに書いてもいいよ!)という風になっています。例題をいくつか作ってみましょう。毎日朝4時30分に実行したい場合は30 4 * * * となります。毎週月曜日の朝4時30分に実行する場合は30 4 * * 1となります。毎月1日の朝4時30分に実行する場合は30 4 1 * *となります。だいたい、わかりましたか?それでは、これで話しを本題に戻しましょう。次に、Laravel側の設定をしないといけません。/Laravel_Root/app/Console/Karnel.phpのファイルを開きます。このようになっていると思います。こちらのschedule関数の中を少し触ります。このように、登録することで、SSHからartisanコマンドで、このschedule関数を呼び出すことが出来ます。実際にやってみましょう!↑さっきは php artisan backup:runでしたが、今回はschedule:runです。schedule関数を呼び出しています。これをすることで、先程 /Laravel_Root/app/Console/Karnel.phpで書かれたschedule関数が動きます。スケジュール関数には$schedule->command('backup:clean'); //←追加$schedule->command('backup:run'); //←追加この2つを登録したので、まずは古いバックアップをクリーンにしてから、新しいバックアップを創る処理をしていますね。なので、schedule:runをしたらこちらが動きます。ほんとにわかりやすいですね〜(^o^)v続いて、この中に(不細工なやり方ではありますが....)scheduleのcall関数を使って、このままFTPへ転送の処理も書いちゃおう!これで、SSHからphp artisan schedule:runを動かすと1:古いバックアップデータをクリーンする。2:新しいバックアップを作成する。(zipの中身は、Laravelのソース+Sqlのdumpデータ)3:ファイルが出来たら、自動的に別で用意してるFTPへ転送する。という所が出来ました。ここまで来たら、あとはCronで設定するだけですね。あとは、朝4時30分になると、Cronが自動的に処理してくれます。ここまでで、Laravelの公式にも書かれているspatieを使って、Laravelのソースコードやデータベースのバックアップを取ってそれを自動的にzipファイルにしてくれて、そのzipをまるごとFTPへ転送!!なんとCronも使って全自動!ってことで、かなり長くなりましたが、これで出来ると思います。余談を書くと、zipファイルが残るようであればサーバー内の容量が食われるのでFTPの転送が終われば、Storage::deleteを使ってファイルの削除をしてたほうが良いかも知れませんね。それでは、長々となりましたが、最後まで読んでいただきありがとうございました〜ちょくちょく更新がんばります〜m(_ _)m

Laravel クエリビルダ インクリメント処理

jQuery UIのAutocompleteを使ってみる

記事をもっと見る