早くも3週目になりました、yps
今回はなるべくリアルタイムで課題をやりながらログを取っていきたいと思います。
まずはSQL周りの復習
MySQLのエンコード設定を直します
エンコード設定をutf8mb4に戻す(mysql cliから日本語扱えるようにutf8にしてた)
sudo vi /etc/my.cnf
最終行に以下を追記
[client]
default-character-set=utf8mb4
編集を保存し、mysqlを再起動
sudo systemctl restart mysql
練習で使うデータをダウンロード
cd /tmp
sudo yum install wget
wget http://tech.pjin.jp/wp-content/uploads/2016/04/worldcup2014.zip
unzip http://worldcup2014.zip
データの確認
ls -la worldcup2014.sql
データベース作成
MySQLにログインして…
mysql -u root -p (パスワードを入力)
データベースを作成
create database worldcup2014db;
使うデータベースにDLしたデータを指定
use worldcup2014db;
source ./worldcup2014.sql;
テーブルを表示して確認
show tables;
確認用バッチ処理とコマンドを作成していきます
参考:バッチ処理とは?
Laravelでモデルを作成(参考:https://blog.codecamp.jp/php_mvc01)
php artisan make:model Models/Player
作成したモデルを確認
ls -la app/Models/Player.php
バッチ記述用のファイルを作成
php artisan make:command TestCommand
作成したファイルを確認
ls -la app/Console/Commands/TestCommand.php
ここからは
1. SSH接続したVS Codeを使って
2. /var/www/html/ypsフォルダ(Laravelのプロジェクトファイル)
で作業していきます
app/console/commandsのCommands.phpファイルに以下を記述
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Models\Player;
class TestCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'test_command';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Test Command';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$players = Player::get();
foreach($players as $player) {
echo $player->name."\n";
}
return 0;
}
}
保存したらターミナルで以下のコマンドを打って確認
キャッシュをクリア
php artisan config:clear
上記で作成したバッチコマンドを入力
php artisan test_command | head
無事選手名が表示されればOK
MySQL日本語が打てない問題の一先ずの対応 = sqlファイルを作成して読み込ませる
どうしてもコマンドを使って行う場合の対応。
≒基本的にLaravelを使ってSQLは操作するので特に問題はなさそう?
一時ファイルに移動
cd /var/tmp
sqlファイルを作成
vi get_players.sql
以下を記述
use worldcup2014db;
select * from players where name = '酒井';
ターミナルで下記を打ってパスワードを入力
mysql -u root -p < ./get_players.sql
酒井選手が2桁表示できればOK
(ファイルに出力したい場合は mysql -u root -p < ./get_players.sql > ./out.txt
)
~MySQLの復習&バッチ作成ここまで~
php.iniファイルを編集
主にPHPをアプリケーションで使用する際に日本語で文字化けしたりしないような設定をしていくようです。
※事前に sudo yum install colordiff -y
で差分を見られるようにしておく
参考リンクを見ながらphp.iniの設定を編集
sudo vi /etc/php.ini
まずはデフォルトのエンコーディングがUTF-8に…
default_charset = "UTF-8"
しかしこれ、あとで調べたら5.2以降のPHPはデフォルトでUTF-8になってるみたい…ということで設定要らんかったのかorz
気を取り直して、mbstringの探しつつ確認をしていきます。
[mbstring]の設定は一番下の方にありました…
mbstring.language = Japanese
//コメントアウトを外す
mbstring.encoding_translation = Off
//コメントアウトを外してoffにする
mbstring.detect_order = auto
//コメントアウト外す
※参考リンクが古いためか、ブログ記事では手動で設定するような記述になっているがautoのままでいいみたいです
(多分PHPのバージョンの関係)
date.timezone = Asia/Tokyo
PHPのバージョンが表示されてしまわないように変更
expose_php = Off
パフォーマンス関連の設定
memory_limit = 128M
これはデフォルトの設定なので確認だけ
ポストリクエストのマックスサイズを128Mに変更
post_max_size = 128M
ファイルをアップロードする際のマックスサイズをPOSTに合わせて128Mに変更
upload_max_filesize = 128M
ついでにエラーログの設定もしておきましょう
error_log= "/var/log/php_errors.log"
全部できてれば…
colordiff -u /etc/php.ini.org /etc/php.ini
って打てば
--- /etc/php.ini.org 2020-07-07 18:04:58.000000000 +0900
+++ /etc/php.ini 2020-07-31 23:28:50.392713681 +0900
@@ -373,7 +373,7 @@
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
-expose_php = On
+expose_php = Off
;;;;;;;;;;;;;;;;;;;
--- /etc/php.ini.org 2020-07-07 18:04:58.000000000 +0900
+++ /etc/php.ini 2020-08-01 01:02:55.357913512 +0900
@@ -373,7 +373,7 @@
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
-expose_php = On
+expose_php = Off
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
@@ -584,6 +584,7 @@
; http://php.net/error-log
; Example:
;error_log = php_errors.log
+error_log = "/var/log/php_errors.log"
; Log errors to syslog (Event Log on Windows).
;error_log = syslog
@@ -690,7 +691,7 @@
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
-post_max_size = 8M
+post_max_size = 128M
; Automatically add files before PHP document.
; http://php.net/auto-prepend-file
@@ -842,7 +843,7 @@
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
-upload_max_filesize = 2M
+upload_max_filesize = 128M
; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20
@@ -919,7 +920,7 @@
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
-;date.timezone =
+date.timezone = Asia/Tokyo
; http://php.net/date.default-latitude
;date.default_latitude = 31.7667
@@ -1533,7 +1534,7 @@
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; http://php.net/mbstring.language
-;mbstring.language = Japanese
+mbstring.language = Japanese
; Use of this INI entry is deprecated, use global internal_encoding instead.
; internal/script encoding.
@@ -1571,7 +1572,7 @@
; automatic encoding detection order.
; "auto" detect order is changed according to mbstring.language
; http://php.net/mbstring.detect-order
-;mbstring.detect_order = auto
+mbstring.detect_order = auto
; substitute_character used when character cannot be converted
; one from another
ってなるはず(らしい)
そしてコンソールに戻ってphpのエラーログファイル作成&設定を行います
sudo touch /var/log/php_errors.log
sudo chown nginx:nginx /var/log/php_errors.log
ここまでできたら設定反映のためにphp-fpmとnginxを再起動
sudo systemctl restart php-fpm
sudo systemctl restart nginx
~php.iniの設定ここまで~
Gitインスコ&GitHubとの連携
参考までに予備知識:https://qiita.com/moonbass630/items/383fc8300a83784e4c82
まずはgitをインストール
sudo yum install git -y
ディレクトリをLaravelのプロジェクトに移動して…
cd /var/www/html/yps
gitをinitします(意味が分からない方のための参考リンク:https://26gram.com/git-init)
git init
ブラウザでGitHubを開いて新規リポジトリ作成
- Newボタンを押して新規作成
- リポジトリをPrivateに
- gitignoreにLaravelを追加
- create Repositoryを押して
- add readme.mdをクリックして完了
- リポジトリの画面の右側のCodeボタンをクリックして
- Clone with SSHと書かれたところに書いてあるgit@github.comから始まるリポジトリのurlをコピー
※GitHubにはすぐ戻ってくるのでブラウザは開いたままが推奨
Gitの設定ファイルを記述
ターミナルでまたLaravelのプロジェクトファイルへ戻ります
cd /var/www/html/yps/
Gitの設定ファイルを編集
sudo vi .git/config
下記を記述します
[remote "origin"]
url = "リポジトリのurl" //作成時にコピーしたもの
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[user]
name = 自分のgithubユーザー名
email = 自分のメアド
[core]
repositoryformatversion = 0
filemode = true
bare = false
接続用の秘密鍵を作成
ssh-keygen -t rsa -b 4096 -C "自分のメアド"
enterを押して
パスワードを2回入力
下記コマンドを打って表示される文字列をコピーしておく
cat ~/.ssh/id_rsa.pub
GitHubに文字列を登録
- 右上のアイコンを押してアカウントメニューを表示
- Settings ⇒ SSH and GPG keys
- New SSH keyをクリック
- Titleは適当なものをつける
- Keyと書いてあるところに上記(
cat ~/.ssh/id_rsa.pub
コマンド)で表示されたキーを張り付け - Add SSH keyを押すと登録完了
GitHubをリモート登録
ターミナルでLaravelプロジェクトフォルダに戻ります
cd /var/www/html/yps/
差分ファイルを全てステージングして、マスターブランチにpush
git add .
git commit -am "initial"
git push origin master
yesを入力してパスワードを入力すればソースコードの登録完了。
develop / feature ブランチを切る
参考リンク:https://qiita.com/Naoki206/items/e5520453f92dcd4274f1
参考リンクを見ながらdevelopブランチとfeatureブランチを切る
$git branch
現在のブランチの確認
$git branch develop
developブランチ作成
$git checkout develop
developブランチへ移動
$git push origin develop
リモートに反映
~git導入&GitHub連携ここまで~
Masterから分岐させて開発終了後にmergeを使ってmasterブランチへ取り込むことによってgitではバージョン管理をする…
Gitは一応Progateでいじって、Qiitaでも初心者向けの記事読んだりしてたけど、今回色々いじってようやく仕組みが腑に落ちた感あるな~
今回はまとめ作ってたらすんごい時間になってしまったのでこの辺で…
次回はWP導入していじるみたいです。
今まで色々やってきたことの解像度が大分上がってきて楽しくなってきたぞ~(夜中のテンション)