アラサー転職組の新米エンジニア日記

2017年に未経験からエンジニアになったアラサーです。

CentOS7上でLaravelでWEBアプリケーションを作る ~CSSとjQueryをレイアウトに反映させる~

こんにちは

インフラエンジニアで勉強にもなるし勉強になるってことで環境がvirtualboxでcentOS7を入れてそれをteratermでローカル環境からコード書くって感じだったのですが、あれですねXAMPPめっちゃ便利っすね。これに乗り換えました。

今回はCSSファイルとjQueryをレイアウトで機能するようにしました。

resoses/views/layouts/testlayout.blade.php

layoutsディレクトは自分で作成してその中にファイルを作成しています。 このファイルに記載されているコードを骨組みとしてをブラウザに表示するファイルに読み込ませてる形になります。このブラウザに読み込ませるファイルにはこのレイアウトファイルを読み込むために継承させるコードを頭に書きます

@extends('layouts.testlayout')
※この'layouts.testlayout'というのはlayouts ディレクリ
 のtestlayout.blade.phpという意味これで継承してくれます。
 便利ね。

このレイアウトファイル内の<head>タグのなかにcssファイルの指定とjQueryファイルの呼び込み、</body>直前にjavascriptのファイルを指定上げるだけ

<head>
 <link rel="stylesheet" href="css/tomatoapp.css" >
 <script type="text/javascript" src="js/jquery-3.3.1.js"></script>
</head>

:
:
:
<script type="text/javascript" src="js/test.js"></script>
</body>

以上の感じ。 なんかほかに良い方法があったら教えていただきたいです。

CentOS7上でLaravelでWEBアプリケーションを作る ~DBクエリ,stdClassの値を直接参照する~

larabel初心者です。というかPHP初心者でもあります。

larabelのDBクラスから値を直接引っこ抜きたいんだけどどうもvar_dumpで表示させてみるとstdClass内に入ってて、このstdClassから直接値を参照しようと通常の連想配列から引き出すような感じで試したところ、Woooops!!ってなるので調べたところ下記で解決したのでその記録に。

select * from user;

id name old
4 sato 20
5 yamada 20
6 yoshida 20

routes/web.php

Route::get('/', function() {
  $message = DB::select('select * from user');
  echo '<pre>' . var_export($message,true) . '</pre>';
  $test= $message[0];
  print_r($message[0]);
  print '<br>'. $message[0]->name;
  print '<br>'.$message[1]->name;
  print '<br>'.$message[2]->name.'<br>';
  return 'おわり';
});

ブラウザでは下記が表示される

array (
  0 =>
  stdClass::__set_state(array(
     'id' => 4,
     'name' => 'sato',
     'old' => 20,
  )),
  1 =>
  stdClass::__set_state(array(
     'id' => 5,
     'name' => 'yamada',
     'old' => 20,
  )),
  2 =>
  stdClass::__set_state(array(
     'id' => 6,
     'name' => 'yoshida',
     'old' => 20,
  )),
)

stdClass Object ( [id] => 4 [name] => sato [old] => 20 )
sato
yamada
yoshida
OK

下記の表記でいけるっぽい

print '<br>'.$message[0]->name;
print '<br>'.$message[1]->name;
print '<br>'.$message[2]->name;

上記みたいな形で書けばいいみたい。 何かほかにいい方法知ってたら教えてください。

CentOS7上でLaravelでWEBアプリケーションを作る ~遷移先のURLにパラメータを渡す方法~

ブラウザに表を表示して、<a href=''>で特定のページに飛ばす際にアドレスにパラメータを指定してクリックと同時パラメータが指定されたアドレスURLに飛ばしたい。

blade.phpファイルに下記のように記載するとできました。
-------------------------------------------
@section('content')
<table>
<tr><th>日にち</th><th>プランID</th>
<th>&nbsp;</th></tr>
@foreach ($items as $item)
<tr>
<td>{{$item->play_day}}</td>
<td>{{$item->plan_id}}</td>
<td> <a href='deltask?id={{$item->id}}'>削除</a></td>
</tr>
@endforeach
</table>
@endsection
--------------------------------------------
これで画面の"削除"をクリックすると
"http://127.0.0.1:8000/deltask?id=番号"というアドレスに飛ぶ

f:id:wakachann:20180520142704p:plain

 

赤矢印部分の削除をクリックすると下記のURLページに飛ぶ。(遷移先のページはまだ作ってません)

f:id:wakachann:20180520142715p:plain

 

方法があまりよろしくなくほかに良い方法があればぜひ教えていただきたいです。

 

 

CentOS7上でLaravelでWEBアプリケーションを作る ~.envファイルを更新してもDBの結果が反映されないときの対処法~

アプリ制作をぼちぼちとやってるが、表題の通り、別のデータベースから値を取り出したく.envファイルを編集するも、更新されず前回設定したデータベースを参照してしまうというところで少しはまってしまい、ネットで調べその備忘録を。
 
データベースはMariaDB(MYSQL)
 
☆laravelのプロジェクトのディレクトリで下記のコマンドをたたいたら治りました。
# php artisan config:cache
 
 
ほかにも対処法がつらつらとあったので、書いときます。
 
キャッシュをクリアにする
# php artisan config:clear
 
下記のファイルがある場合キャッシュが優先される場合があるので削除する(自分はなかった)
# rm bootstrap/cache/config.php
 
下記のページを参考にしました。ありがとうございます。
 
 

CentOS7上でLaravelの環境を構築してみた ~作成したページに背景画像を設定する方法~

アプリケーション作りたくてlaravelの勉強中。

技術書にらめっこしながら地道に開発してますが、今回プロジェクトで作成したページの背景画像を設定したいと思ったところ、技術書に方法がのってなかったのでいろいろ調べた結果、忘れないように記録用としてここに記載します。

 

◆laravelではpublicディレクトリが公開フォルダとされており、ここにcssスタイルシートjavascriptなど外部にそのまま公開されるファイルをまとめる。

 

・背景画像の設定

1、プロジェクト直下のpublicディレクトに画像保存用のディレクトリ(images)を作成する。

[root@localhost public]# mkdir images

 

2、CSSで画像を読み込む記載をする

background: url("../images/画像の名前") ;

CSS:backgroundの表記方法は下記が参考になります。

https://syncer.jp/css-reference/background

 

まだ勉強中なので画像についての知識を得たらここに追記していきます。

 

ではでは

現場経験1 インフラエンジニアの簡単な作業手順を書いてみた (超初級編)

 勤務暦・実績がぜんぜん浅いので今のメインで行っている作業としてはちょっとした設定変更、confファイルを少しいじるのがメインだったりします。本番作業を想定して研修中の作業でも使うことを意識しているコマンド等はあるかと思うし、実際に本番を意識し、一手間加えているかと思いますが、いざ本番での作業となるとサーバーをいじる上で慣れて血肉にしといたほうがいいなというコマンドや作業があったのでそれを記録していこうと。呼吸をするように行う作業ばかりなので、本当に現場作業をしている人にとっては当たり前のことですが。。。
※現場によって当たり前に行われている作業は異なるかと思います。

「え?これやらないの?」と感じた現場作業がございましたらぜひとも教えていただければ幸いです。

 

☆0-1、手順書をテキストエディタにコピペしておく(下準備)
これは現場によって異なるのかなと感じましたが基本的に手順書ベースに作業を行うかと思うので自分で入力はあまりせず、手順書をコピペしていくのがベターかなと。
現場には手順書があると思うんですが、それを自分のテキストエディタにコピペしておいて今回入力する際に手順書とは異なる箇所(例えば、実際のファイル内の内容やバックアップファイル名)を修正して上から下までコピペでコマンドすることで一連の作業が完了するというテンプレートを事前に作成しておく。
これをすることによって、コマンドライン上で自分でタイピングすることによるタイプミスなどを減らすことができる。

 

☆0-2、作業ログをとる
現場ではteraterm使ってるんですが画面開いてメニューバーの【ファイル】⇒【ログ】で指定のディレクトリに自分の行ったログを記録することができます。
※手順0-1のテキストエディタで流れを作成できているのであれば、ログが長くなるのは無駄が多いことになる(ディレクトリの移動は置いといて)

 

☆1、バックアップを取る

ここから実際サーバーでの作業になるのですが、まあ、これは当たり前ですよね。
頭か末尾に日付を記載したバックアップファイル(例:httpd.conf_20180328)を作成する。
僕の現場では最新のバックアップファイルのみconfファイルと同じディレクトリにあり、作業が終わる都度前回の作業分のバックアップファイルは同ディレクトリ内にあるバックアップディレクトリにmvコマンドで移動するという流れですね。
※confファイルが入っているディレクトリをファイルのバックアップを取る前にディレクトリごとバックアップを取っておくとなおよし。

 

☆2、dateコマンドでconfファイル編集のエビデンスを残す

viコマンドを行う前後には必ずdateコマンドを打つ。これによりログに作業時間が残りますね。何時に編集して何時に編集が完了したという記録をとる癖をつけましょう。

 

☆3、ファイル編集においての注意点

ファイル編集時にはエディタのショートカットは覚えていたほうが本当によいです。
カーソルキーでかたかたやるのとは作業効率がぜんぜん違います。
覚えましょう、絶対にだ。

実際に編集する設定箇所には入力する設定内容の一行上にエビデンスを残す。
日付と名前がわかれば何でもいいと思う。
例)httpd.conf
編集前

DocumentRoot "/var/www/html"

---------------------------------------------------
編集後
# 2018/03/28 change by tanaka
DocumentRoot "/var/www/htdocs"

---------------------------------------------------

上記のような感じで残すと何か設定のミスがおきたときに日にちで検索かけれたりするので。

 

4、ファイルの編集後はdiffコマンドで編集内容を確認する。
ここでバックアップファイルを使います。編集したファイルと照らし合わせて変化を確認する。
例)
diff httpd.conf httpd.conf_20180328
120,121c120
< # 2018/03/28 change by tanaka
< DocumentRoot "/var/www/html"
---
> DocumentRoot "/var/www/htdocs"

----------------------------------------------------
こんなかんじですね。今回はドキュメントルートを変えただけですがこういった形で
編集内容の確認が取れます。


以上ですかね。
気をつけていきたい。

 

※何かほかにこれはしといたほうが良いって現場でのコマンドや作業があればぜひ教えていただきたいです!

CentOS7上でLaravelの環境を構築してみた ~PHP7 ComposerをインストールからLaravelのプロジェクト作成まで~

 

 

Composerはlaravelに必要な構成管理ツール

Laravelでwebアプリ開発したいなって考えててただいま勉強中です。

 

 

Linux⇒CentOS7

[ーーー@localhost htdocs]$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

PHP⇒Version7(無駄なものも入ってるかもです)

[ーーー@localhost htdocs]$ rpm -qa | grep php
php-7.0.28-1.el7.remi.x86_64
php-json-7.0.28-1.el7.remi.x86_64
php-pdo-7.0.28-1.el7.remi.x86_64
php-cli-7.0.28-1.el7.remi.x86_64
php-gd-7.0.28-1.el7.remi.x86_64
php-mbstring-7.0.28-1.el7.remi.x86_64
php-devel-7.0.28-1.el7.remi.x86_64
php-common-7.0.28-1.el7.remi.x86_64

 

 

1、まずはダウンロードサイトからファイルのインストール

 

https://getcomposer.org/download/

上記のページに移動し下にスクロールするとManual Downloadって項目があるのでそこの最新版をコピーしてwgetコマンドをしましょー

 

https://getcomposer.org/download/1.6.3/composer.phar

 

[root@localhost ~]# wget https://getcomposer.org/download/1.6.3/composer.phar

 

カレントディレクトリにファイルがあるはず

[root@localhost ~]# ls -l
合計 1832

-rw-r--r-- 1 root root ---- 2月 1 00:28 composer.phar

 

2、これをcomposerにリネーム&binディレクトリに配置しましょう。

 [root@localhost ~]# mv composer.phar /usr/local/bin/composer

 [root@localhost ~]# ls -l /usr/local/bin/composer
-rw-r--r-- 1 root root 1861877 2月 1 00:28 /usr/local/bin/composer

 

3、これだと実行権限がないのでパーミッションの設定をしましょー

[root@localhost ~]# chmod 755 /usr/local/bin/composer

 

[root@localhost ~]# ls -l /usr/local/bin/composer
-rwxr-xr-x 1 root root 1861877 2月 1 00:28 /usr/local/bin/composer

 

4、composer -Vをコマンドして表示されれば完了ですー

[root@localhost ~]# composer -V
Composer version 1.6.3 2018-01-31 16:28:17

 

5、laravelのをインストール

☆☆まずはrootディレクトリだと怒られるのでユーザーへその後下記をコマンド

 

[ーーー@localhost ~]$ composer global require "laravel/installer=~1.1"

 

この後”Changed current directory to /home/----/.config/composer”

ってメッセージがでて「あれ?」ってなるかもしれませんが、まっとけばインストールが始まります。

 

Writing lock file
Generating autoload files

[ーーー@localhost ~]$

これで完了。

 

6、さてでは簡単なプロジェクトを作成してみますか。

とりあえずwebサーバーのドキュメントディレクトリに移動(/var/www/htdocs⇒httpd.confのDocumentRoot見てね)

[ーーー@localhost ~]$ cd /var/www/htdocs

☆composer create-project laravel/laravel プロジェクト名 --prefer-dist

上記をコマンドして作成できます

[ーーー@localhost htdocs]$ composer create-project laravel/laravel test --prefer-dist
Installing laravel/laravel (v5.5.28)


[ErrorException]
mkdir(): Permission denied

。。。上記の通り怒られます。

ディレクトリのパーミッション変更をしましょー

[ーーー@localhost htdocs]$ sudo chmod 777 /var/www/htdocs

※htdocsはApacheでドキュメントルート

 

再度入力

[ーーー@localhost htdocs]$ composer create-project laravel/laravel test --prefer-dist

 

完成したらドキュメントルート内にtestディレクトリがあるよ

[ーーー@localhost htdocs]$ ls -l
合計 92
drwxrwxr-x 11 ーーー ---4096 3月 16 20:46 test

 

7、さてこのディレクトリに入りartisanコマンドでサーバーを実行してみます

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

ここからむちゃくちゃはまりました下記トラブル回避

[ーーー@localhost test]$ php artisan serve
PHP Warning: require(/var/www/htdocs/test/vendor/autoload.php): failed to open
PHP Fatal error: require(): Failed opening required '/var/www/htdocs/test/vendo on line 18

 

この時点でvenderのディレクトリがなくて調べたらcomposer updateしたったらいいねんって感じの記載があったのでしてみたら

[---@localhost test]$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1
- phpunit/phpunit 6.5.7 requires ext-dom * -> the requested PHP extension do

どうやらレポジトリにphp-xmlをインストールする必要があるみたいでした

それで下記を続いて実行

[root@localhost ~]# yum install  --enablerepo=remi,remi-php71 php-xml

インストール:
php-xml.x86_64 0:7.1.15-1.el7.remi

依存性を更新しました:
php.x86_64 0:7.1.15-1.el7.remi php-cli.x86_64 0:7.1.15-1.el7.remi php-common.x86_64 0:7.1.15-1.el7.remi php-devel.x86_64 0:7.1.15-1.el7.remi
php-gd.x86_64 0:7.1.15-1.el7.remi php-json.x86_64 0:7.1.15-1.el7.remi php-mbstring.x86_64 0:7.1.15-1.el7.remi php-pdo.x86_64 0:7.1.15-1.el7.remi

 

無事に完了。。。長かった。。

 

8、再度手順7のコマンドを打ちます

 

[ーーー@localhost test]$ php artisan serve
Laravel development server started: <http://127.0.0.1:8000>

 

お。今度は成功・・・と思いきやブラウザでこのURLに飛ぶとエラー画面が表示されました。(一応このコマンドを打った後のターミナルの挙動はこちらであってます)

どうやらダメっぽかったのでここから再度laravelを入れなおすとうっぷグレードされました。笑(手順5を再度やる)

そのあと作成したprojectを削除して再度手順6から同じことをやると手順7終了後、今度はちゃんとブラウザに表示されました。

☆☆補足1

先日この手順で別のマシンで構築したところ手順8のところでコマンド後ブラウザに飛ぶとエラー画面が下記のようなエラーが出ました。

No application encryption key has been specified.

なんかなんかキーを作成する必要があるみたいで下記のサイトを参照させていただいたら無事に起動しました。インターネット万歳

qiita.com

めでたしめでたし。

 

f:id:wakachann:20180316232545j:plain

 

 

 

※まだドが付くほどのエンジニア素人なのでここがおかしいとかあったら遠慮なくリプライなどくれたらめちゃくちゃうれしいです。。。