LoginSignup
0
0

More than 3 years have passed since last update.

yps並走記録 Task3  SQL:テーブル作成(復習)バッチ作成(復習)~php.ini設定~GitHubにファイルをアップロード

Last updated at Posted at 2020-07-31

早くも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ファイルに以下を記述

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を開いて新規リポジトリ作成

  1. Newボタンを押して新規作成
  2. リポジトリをPrivateに
  3. gitignoreにLaravelを追加
  4. create Repositoryを押して
  5. add readme.mdをクリックして完了
  6. リポジトリの画面の右側のCodeボタンをクリックして
  7. 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に文字列を登録

  1. 右上のアイコンを押してアカウントメニューを表示
  2. Settings ⇒ SSH and GPG keys
  3. New SSH keyをクリック
  4. Titleは適当なものをつける
  5. Keyと書いてあるところに上記(cat ~/.ssh/id_rsa.pubコマンド)で表示されたキーを張り付け
  6. 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導入していじるみたいです。

今まで色々やってきたことの解像度が大分上がってきて楽しくなってきたぞ~(夜中のテンション)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0