CentOS7にLaravelを構成するまでの簡易マニュアル

CentOS7にLaravelを構成するまでの簡易マニュアル

CentOS7にLaravelを構成するまでの簡易マニュアル

Dockerの上の構築に着手したため需要は半減しましたがメモとして記載します。

Dockerではなく、chef / puppet / ansible あたりを使うときにはこれをリストにして登録すれば使える様です。

CentOS7初期設定

ユーザーの追加

rootでログインした状態で

パスワードを聞いてこないので自分から作りに行く。

パスワードを聞いてくる。2回同じ値を記入

記載後 successfully が出てくれば完了

個人ユーザをwheelグループに参加させる。

sudoの許可

vimで login.defs を開き編集

開いた画面の最後にSUになれるユーザーの限定を追記

/etc/pam.d/su をVimで開く

6行目辺りのコメントアウトを外す

ROOTのSSHログイン防止

39行目辺りの次の項目を変更

selinuxを無効設定

SELINUXの起動状態を修正する

※さくらのCentOS7インストールでは初期値が【disabled】になっている様子

一旦サーバーを再起動

bash-completionパッケージのインストール

インストールできたか確認

bash-completion.noarch 1:2.1-6.el7 @base の様に出てきたら導入完了
※さくらのCentOS7インストールでは自動的にインストールされている様子

firewalld の設定

ファイヤーフォールを起動

設定されているファイアウォールを確認する

※初期値は dhcpv6-client ssh のみだと思われる。

http、https、pop3、pop3s、smtp、smtps、ftp、3306、8000ポートを許可する

–permanentを付ける事で恒久化する。一時的に開放したいときはこれを外せばOK。

設定が終わったら念のためサービスを再読込

設定の反映を確認

※注意:さくらのサーバーの場合、Serverのコンソール画面で設定されているパケットフィルタで開いてない場合は出ていかない。

間違えて設定して削除するとき

firewallの自動起動設定

日本語ロケールの設定

在のロケールの確認

下の状態だと英語のロケールになっている

ロケールの変更

$ localectl status して【 System Locale: LANG=ja_JP.utf8 】だったら成功

Apacheの設定

Apacheのインストール

Apacheの起動

確認したかったら以下のコマンドで

Apacheの自動起動を設定

※解除したいときは【systemctl disable サービス名.service】

remiレポジトリの追加

PHP5.4系が無い事を確認

パッケージ情報が返ってきたら削除

remiレポジトリの設定

インストール成功の確認

remiレポジトリの追加の確認

インストールされたPackageの確認

PHPの初期設定

行う事は下の4点

  1. 最低限のセキュリティ設定
  2. アップロードサイズの変更(2Mから20MBへ)
  3. タイムゾーンの設定
  4. マルチバイト対応(日本語対応)

念のため初期値のバックアップ

設定変更

採用を適応させるためService再起動

httpd側にphpがモジュールとして組み込まれていることを確認

php7_module (shared) が返されたら成功

MySQLのインストールと設定

MySQLのインストール

MariaDBのライブラリの消去

MySQLのインストール

サービスの起動と永続化

rootの初期パスワードを確認

下の様に出てくる

上のコマンドで出てきたrootのパスワード(BmeQr<bsV0Ia)を控えて変更

パスワードを登録すると会順に5つの質問が出てくるので解答する。

MySQLの認証方法を変更

MySQLにログイン

パスワードを聞かれるので先程変更したパスワードを記載してログイン

ROOTの認証方法を変更

今後作成するユーザーの方法も変更

[mysqld]内に以下の内容を追記

MySQLに新規ユーザーとデータベースを登録

mysqlにrootでログインする

ユーザーを追加

データベースの作成

権限の設定

Laravelの場合、.envなどでDataBaseへアクセスする際のユーザー名の設定がある。
この設定したuser名のユーザーを作成し適切な権限を与えてあげれば接続エラーは発生しない。

phpMyAdminのインストール

phpMyAdminの設定を行う ※アクセス先とWEBでのアクセス許可を行う

アクセス先の変更(phpMyAdmin.conf内の8行目あたり)

変更前の設定ではhttp://【IP/Domain】/phpMyAdmin と http://【IP/Domain】/phpmyadmin で phpMyAdminが呼び出される。
この2つのアドレスは不正アクセスが非常に多いアドレスの為、絶対に変更が必要。
避けるべきURLについてはこちらをご参照ください ⇒ phpMyAdminを狙ったと思われる不正アクセスURL(攻撃対象URL)を晒します。

上の例では標準アドレスのアクセスでは404エラーとなり http://【IP/Domain】/php_my_admin_3948375823 でのアクセスへ変更している。
不正アクセス対策なので値は何でもよいが、推測されやすいものだけは避ける事。(以下:例)

Alias /php/my/admin/access/database /usr/share/phpMyAdmin ⇒ URL:http://【IP/Domain】/php/my/admin/access/database

phpMyAdmin.conf のその他設定変更

変更は設置の環境に合わせて行う。
以下の内容はCentOS7+SSL未設定の時の例。

CentOS7+SSL設定の時の例は以下の通り。

別サーバーに元データがある時のデータベース移動

元サーバー(mysqldumpの後) から 新規サーバー(| sshの後)の 指定のDB(user2、password2)にテーブルをコピーする

構築している状況によっては、パスワードまで含めてワンライナーで記載する事を怒られるときがある。
その場合は-p の後を空白にし、都度パスワードを入れていく方式をとる。
上の例の場合は、SSHの接続パスワードは聞かれるので打ち込みログイン処理をする。
※注意:コピー先サーバーからのアクセス(輸入)ではなくコピー元からのアクセス(輸出)であるため、コピー先のポート開放を忘れない事。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

と出てきてDBがコピーできない時。

SSH接続の【接続先サーバー情報(フィンガープリント)】が変わっている為これが邪魔してSSH接続が出来ない状態。
フィンガープリントを削除する事で想定の動きになる。

参照サイト:https://qiita.com/grgrjnjn/items/8ca33b64ea0406e12938

HOST(コピー元)の DBへの新規サーバーからのアクセスを許可する

コピー元の特定のDBへのアクセスを許可する場合はコピー元での設定が必要。
※ユーザー作成時に ‘user名’@’%’ で作成している場合はどこからのアクセスも許可するため不要。

まずmysqlにログイン

ログイン後、ユーザーの追加と権限設定

Laravelインストールと設定

Laravelの動作にはcomposerが必須となるため、まずcomposerを入れる。

Composerのインストール

ダウンロードして名称変更・移動

Laravelのインストール

zipをインストール

システムの共通場所へ移動する。(インストールするための準備)

保管場所はどこでもよい。
後で httpd.confで指示すればドキュメントルートに設定できるのでわかりやすい場所であれば問題ない。

ただし、homeの自分のディレクトリ内 cd  ~ だと別のユーザーから見る事が出来ず、システム修正に他者の力を借りる事が出来ないのでココだけは避ける。
自分で作る場合はパーミッションを 777でフォルダを用意する。
※後で775に変えても良いが777出ないと権限エラーが発生する

Laravelプロジェクトの作成

Laravelプロジェクトの起動:これで8000ポートで動く

http://サーバーIPアドレス:8000 へアクセスして初期画面が表示されるか確認する。

作成済みファイル(システム)のコピー

作成済みのLaravelデータがある場合は、Folder全体をそのまま新しいサーバーへコピーする。
コンソールを利用して他サーバから情報をコピー ※新規サーバー内での処理

※中途半端にデータの移動を実行するとエラーが多発し動かないので注意

うまくいかなかったらやり直し

httpd.confの修正

設定を変更して80番でLaravelを稼働させる

以降変更箇所

Apacheを再起動

ファイルの権限設定をする

この設定をしないと、logへの書き込みやキャッシュでエラーが発生するので忘れない事

権限グループを作りApacheを含めた必要なユーザーをこのグループに所属させる。
グループの作成

グループにユーザーを所属

プロジェクトのディレクトリに移動

ファイルのとフォルダのパーミッションを統一

storageとbootstrap/cacheの所有グループを変更

既存のディレクトリ・ファイルに対して変更

SGIDを設定し、誰がどう作成しようが、storage とbootstrap/cache に作成されたファイル・ディレクトリの所有グループをPROJECT_NAMEにする

ACLのデフォルト設定し、storageとbootstrap/cacheの配下に新規ファイルやディレクトリが作られるとき、ディレクトリは775に、ファイルは664に自動的に設定してくれるように設定

サーバーを再起動して設定を適応

In trustedproxy.php line 66: Undefined class constant ‘HEADER_CLIENT_IP’ 対策

composer.jsonの値がLaravelと異なる事が原因で上記エラーが発生している。
コピー元のcomposer.jsonでコピー先を上書きし、その後 composer updateで修正。

#変更される箇所
“php”: “>=7.1.3”,
“fideloper/proxy”: “^4.0”,
“laravel/framework”: “5.7.*”,
“laravel/tinker”: “~1.0”,

Class ‘Intervention\Image\ImageServiceProvider’ not found 対策

画像エフェクトのプラグインが入っていないために発生している。
プラグインをインストールして終了

他にもプラグインが足りない時同様【 Class ‘Intervention\~~~~’ not found】のエラーが発生するので、その都度対応する。

うまく起動しない時のcacheクリア

特に移動直後は【./bootstrap/cache/config.php】の影響などで起動しない時が多い。
その時はまず、キャッシュクリアを試す。

プロジェクトのディレクトリに移動

すべてのcacheを削除

viewを除くすべてのcacheを作成

Viewのcacheを作成

カーボンのインストール

使っている所でしかエラーが出ないため忘れがちになるが忘れない事。
使っていない場合は無視してよい。

参考サイト

https://www.rem-system.com/centos-httpd-php73/

まとめ

Server立ち上げからLaravelのコピーまで、とりあえずこれで一通り可能です。

Dockerでの構築の場合はちょっと変わってくるため現在修行中。