ダークエリア

SEのお仕事の備忘録や、ゲームの話などなどを記事に放り込む!!

サーバ構築で勉強になったことメモ

>>前提

・OS: AmazonLinux2 minimum10GBらしい

・開発環境: PHP7/Laravel6/MariaDB10.5/Apache2.4

 

■AmazonLinux2にMariaDBのインストール

最新の安定版ということなので10.5.4が使いたくて。下記を参考に。

[Amazon WorkSpaces]AmazonLinux2にMariaDB10.3インストール - Qiita

新規で下記ファイルを作成

sudo vi /etc/yum.repos.d/MariaDB.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

んでインストール

sudo yum install MariaDB-server MariaDB-client -y 

 

■Laravel入れるときにずっこけ~のメモリ不足⇒すわっぽんした

メモリ不足でLaravelインストール、composer update失敗 - Qiita

# sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
# sudo chmod 600 /swapfile
# sudo mkswap /swapfile
# sudo swapon /swapfile
# free -m
total used free shared buff/cache available
Mem: 983 69 75 0 838 770
Swap: 2047 0 2047 ←これが増えたらおk

 

■Laravelで既存のテーブルからModelを作成

・Modelsフォルダ作成

・ここを参考に

Laravel 5.5 既存のデータベースからモデルを一発で逆生成した手順 – oki2a24

$ composer require krlove/eloquent-model-generator --dev

$ php artisan krlove:generate:model Admin --table-name=admin --namespace=App\\Models --output-path=/var/www/html/funya/app/Models

てきなかんじ。

⇒のちに、こんなエラーが。

InvalidArgumentException : Database connection [other-connection] not configured.

at /var/www/html/jamboree/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php:152

これ、「config/eloquent_model_generator.php」の「connection」の設定があかんかったらしく。

記事を参考にother-connectionにしちゃったんだけど、mysqlが正しかった。まぁそりゃそうだよね。ここは接続名を書くところっす。

 

apache起動してもページが見れなかったとき確認したこと

・各種.confが正しいか

/etc/httpd/conf/httpd.conf またはそこから読み込んでいるconf

/etc/httpd/conf.d の なんとか.conf(vhosts.confとかvirtual.conf など)

・サーバ見れるのか

Windowsコマンドプロンプトで nslookup [ipアドレス]

・ポート80が動いているか

ターミナルコンソールで lsof -i:80

netstat -nap でも可

https://www.softel.co.jp/blogs/linux/archives/53

AWS側でポート80を開いているか

(管理者に確認)

 

■開発するための権限設定

・どうしてもテキストエディタで編集したい、viはきびい

WinSCPなどで開いて編集できるようにしたい

⇒ec2-userで触れるようにしなきゃ

・参考にしたとこ

Linuxでユーザーをグループに追加する - Qiita

Linuxの基礎知識 - アクセス権まわりについて - Qiita

ファイルやディレクトリのパーミッションを一括で置換したい - Qiita

・ec2-userをapacheグループに追加

usermod -aG GROUPS USER

・ファイル作成時のデフォルト所有グループは、フォルダのグループを継承

# find /var/www/html/funya -type d -exec chmod 2775 {} +
# find /var/www/html/funya -type f -exec chmod 0664 {} +
# umask 0002

※Laravelの場合これもやった
chmod 755 artisan

 

WinSCPでファイル編集はできるけどパーミッションだなんだと怒られ

WinSCPで"パーミッション/タイムスタンプの設定中にエラーが発生しました"について調べてみた - Qiita

「WinSCP」で「パーミッション/タイムスタンプの設定中にエラー」「Permission denied」とメッセージが表示される | 情強ツールズ.com

タイムスタンプの変更が、touchなどではなく、

権限変更も伴うコマンド、preserveなどで行われているらしい。

オプション>環境設定>転送

 デフォルト>編集>パーミッションエラーを無視する にチェック!

 

MariaDBにテストデータを入れようとして文字化けして怒られ

なんかしらんけど勝手に文字化けした上にこっちが起こられる始末~~~~

MySQL Incorrect string value: の解決策 | テクニカルノート

【MySQL】INSERT INTOで「Incorrect string value」エラーが表示された時の解決方法|たのしいWeb

・DBのcharasetをutf8に設定

SHOW VARIABLES LIKE 'character_set%';

vi /etc/my.cnf

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8

・各テーブルのcharasetをutf8に設定

すでにcreateしたテーブルには下記SQLを実行。

ALTER TABLE table CONVERT TO CHARACTER SET utf8;

ワイの場合はEclipceでER図を作っているので、

そっちのテーブル定義に「CHARACTER SET utf8」を追記してdrop-create。。

mysqlapacheを再起動 systemctl restart mysqlhttpd

 

■LaravelのEloquentでデータ取得…あれ?!ま~だ文字化けてる

・↑でやったcharasetの設定が生きてるか確認。

・Laravelのcharasetがutf8か確認

config/database.php がそうなってなかったので下記変更

'charset' => 'utf8mb4', ⇒ 'charset' => 'utf8',

'collation' => 'utf8mb4_unicode_ci', ⇒ 'collation' => 'utf8mb4_unicode_ci',

・そもそもDBに入ってる値が文字化けてないか確認

まじで文字化けてたので、Insertしなおし。。

 

CentOSで検証環境を作った時、firewalldを触った

Laravelのインストールまでして、ページが見れなかったので、80を開けた

【すぐわかる】CentOSのポート開放のやり方

CentOS 7 firewalld よく使うコマンド - Qiita

firewall-cmd --zone=public --add-service=http --permanent

firewall-cmd --reload

 

CentOSでページは動いた…けど…

 

■logの書き込みに失敗している?

「The stream or file "/var/www/html/funya/storage/logs/laravel.log" could not be opened」とか怒られた(´・ω・`)

ワイの場合原因はSELinuxだったみたいで。「setenforce 0」したらいけた。

状態確認は「getenforce」で。(Enforcing/Permissive)

[Laravel]ログファイルの書き込みで UnexpectedValueException The stream or file "laravel.log" could not be openedエラー | akamist blog

 

■DBのdriverでエラーを起こしている?

「could not find driver」とかまぁた怒られてDB関わるとこ動かん(´・ω・`)

調べたらこんなのが。。

【Laravel】CentOSのLAMP環境でcould not find driver - suzu6

# sudo yum -y install --enablerepo=remi,remi-php74 php-mysqlnd

 

■動くけどレイアウト崩れが激しい…

画面が白いよう…(´;ω;`) まさにここみたいな状態なので、npm系とわかった。

Laravel6.5 ログイン(login)画面と登録画面(register)画面のレイアウトの崩れを修正 - Qiita

laravelでnpm run devを実行すると「cross-env: not found」というエラーが出る件対応したった - Qiita

・上記を参考にコマンドを打つ。再インストールされてるだけだとおもうけど。。

npm run watch

npm install webpack

npm install

・また、「npm install」した際に「run~」と出てくるコマンドを実行

npm fund(37 packages are~~run `npm fund` for details と出ていた)

npm audit fix(found 1 low severity~~run `npm audit fix` to fix… と出ていた)

もしかしたらfundは関係ないかもだけど、auditは更新系なので重要。

 

■Cent検証環境にPCのエクスプローラでアクセスできるようにSambaを入れる

Samba インストール - linux

・ユーザ追加

useradd smbuser
passwd smbuser

・インストール

yum install samba samba3-winbind samba3-utils
smbd -V
smbpasswd -a smbuser

SELinux無効化

setenforce 0
getenforce

・Samba設定ファイル修正

vi /etc/samba/smb.conf
※[homes] に追加
path = /var/www/html/funya/

ファイアウォール設定

firewall-cmd --zone=public --add-service=samba --permanent
firewall-cmd --reload

・Samba再起動

systemctl restart smb
systemctl status smb

⇒\\192.168.xx.xxにアクセスすると、pathに指定したフォルダがみれる!