2020年4月29日水曜日

Cakephp4の設定

以下の環境にCakephp4を設定していきます。
前提条件として、
https://mizunolab.sist.ac.jp/2020/04/centos7lamp.html
の内容が設定済みとします。

OS : CentOS7.7
PHP : PHP7.3
MySQL : 5.7
今回はrootにて、ドキュメントルート /var/www/html に設定します。
プロジェクト名は「mzn」とします。

[説明動画]


(1) composerのインストール
[root@localhost ~]# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
[root@localhost ~]# php composer-setup.php

[root@localhost ~]# php -r "unlink('composer-setup.php');"
composerをどこでも使えるようにします。
[root@localhost ~]# mv composer.phar /usr/local/bin/composer
[root@localhost ~]# composer self-update

(2) PHPモジュール「intl」のインストール
cakephpに必要なintlをインストールします。
[root@localhost ~]# yum install php73-php-intl.x86_64
intl.soの場所を確認
[root@localhost ~]# find / -name 'intl.so'
このパスを書き込みます。
[root@localhost ~]# vi /etc/php.ini
extension=/opt/remi/php73/root/usr/lib64/php/modules/intl.so

httpdを再起動して設定を反映させます。
[root@localhost ~]# systemctl restart httpd

(3) cakephpプロジェクト作成
/var/www/htmlにcakephpプロジェクト「mzn」を作成します
[root@localhost html]# composer self-update && composer create-project --prefer-dist cakephp/app:4.* mzn
プロジェクトにアクセスしてみます。
http://IPアドレス/mzn/
この表示が少しおかしくなっています。これは/var/www/html/でやっていることでAllowOverride設定をする必要があります。
[root@localhost html]# vi /etc/httpd/conf/httpd.conf
[root@localhost html]# systemctl restart httpd
もう一度、アクセスしてみると表示が修正されています。


(4)データベースとの連携
今回はMySQL(phpMyAdmin)で次のデータベースを作っておきます。
[データベース情報]
ユーザ: root
パスワード: rootのパスワード
データベース名:mzn (今回はテーブルは未作成)
# cd /var/www/html/mzn
[root@localhost mzn]# vi config/app_local.php
'username' => 'root',
'password' => 'CentOS7@',
'database' => 'mzn',
この3つを編集します。


保存して、もう一度アクセスすると、データベースが接続されています。

次に、パーミッションの設定をしておきます。
[root@localhost mzn]# chmod -R 777 tmp
(5) 簡単なサイトの作成
データベース「mzn」にテーブル「users」「classes」を作成します。
テーブル:users


CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


テーブル:cars


CREATE TABLE IF NOT EXISTS `cars` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`user_id` int(11) NOT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

次にbakeをしていきます。まずcakeコマンドに実行権限を与えます。
[root@localhost mzn]# chmod +x bin/cake
usersのモデルを作成します。
[root@localhost mzn]# bin/cake bake model users
usersのコントローラを作成
[root@localhost mzn]# bin/cake bake controller users
usersのテンプレート(ビュー)を作成
[root@localhost mzn]# bin/cake bake template users
同様にcarsも作成しますが、model, controller, templateを一度に作成することも可能です。
[root@localhost mzn]# bin/cake bake all cars
動作確認のため、サイトにアクセスします。
http://IPアドレス/mzn/users
もし、パーミッションのワーニングが出た場合には
# chmod -R 777 tmp
を実行してください。

http://IPアドレス/mzn/cars
usersテーブルに登録してから、carsテーブルに登録します。
次にcarsテーブルに登録します。
これで基本的な形ができました。以上です。

CentOS7でのLAMP環境の構築

インストールされたCentOS7に対し、LAMP環境の設定をしていきます。
LAMP環境とは、下記になります。このようなLAMP環境は現在のWebシステム環境において基本となる環境の一つです。
L : Linux (OS)
A : Apache (Webサーバ)
M : MySQL (データベース)
P : PHP (プログラム言語)
ネットワークに接続されていることを確認してください。

[インストールする環境]
L : Linux (OS) CentOS7.7
A : Apache (Webサーバ)  Apache/2.4.6 (CentOS)
M : MySQL (データベース) MySQL5.7
P : PHP (プログラム言語) PHP7.3

[説明入り動画]


(1) Webサーバのインストール
まず最初にソフトウェアのアップデートをしておきます。
# yum update
今回258MBあるので少し時間がかかります。途中y/nを求められたらyを入力します。

Webサーバをインストール
# yum install httpd
Webサーバを起動
# systemctl start httpd.service
Webサーバを自動起動
# systemctl enable httpd.service

Webサーバのバージョン確認
# httpd -V | head -n 1


[2021/06/20 追記]
AWSでサーバを立てている場合(centos7-minimal-v20190919.0.0 - ami-0083662ba17882949 を利用)、Selinuxのデフォルト状態は「Permissive」になっていますので変更せず進めます。またFirewallのデフォルト設定も無いため、下記の設定は飛ばして、(2)PHP7.3のインストールに進みます。
(下記を設定してしまうと不具合が起きてしまいました)

デフォルトではSelinuxが有効になっています。今回は実習のためSelinuxを無効にします。
現在の状態を確認します。
# getenforce

# vi /etc/selinux/config
7行目のSELINUX=enforcingを
SELINUX=disabled
に変更します。
再起動して、Selinuxの設定(無効)を反映させます。
# reboot

再起動して、rootでログインしてWebサーバの確認をします。
この状態ではfirewallが有効になっています。今回は実習ですので、一旦firewallを無効にします。
# systemctl stop firewalld
ブラウザを開き、サーバのIPアドレスでアクセスします。
この画面が出れば、Webサーバが起動できています。

(2) PHP7.3のインストール
CentOS7のデフォルトのリポジトリを利用すると、PHP5.4がインストールされてしまうため、次の変更をしていきます。
remiリポジトリのインストール
# yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
remiリポジトリを利用したPHPインストール
# yum install --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql
PHPのバージョンを確認
# php -v

# systemctl restart httpd.service
として、PHPを有効にします(修正追記)

/var/www/html にtest.phpを作成しphpinfoを実行していきます。
# cd /var/www/html
[root@localhost html]# vi test.php
次の1行のみ入力して保存
<?php phpinfo(); ?>
ブラウザでアクセス
http://IPアドレス/test.php
この画面でPHP情報を確認できます。
ここまででPHPのインストールは完了です。

(3) MySQLのインストール
続いてMySQLのインストールを実行します。
最初にMySQLのリポジトリの設定をします。
# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
MySQLのインストール(214MBなので少し時間がかかります)

[2022/06/04追記]
GPGキーが古くなってしまったので、GPGキーを更新しておく

# yum install mysql-community-server
MySQLの起動と自動起動設定
# systemctl start mysqld
# systemctl enable mysqld

初期パスワードの確認
# cat /var/log/mysqld.log | grep root
rootの初期パスワードを確認して、ログインします。
# mysql -u root -p
確認したパスワードを入力します。
初期パスワードからパスワードを変更します。今回の実習ではパスワードは「CentOS7@」とします
> SET PASSWORD = PASSWORD('CentOS7@');
文字コードの確認をします。
> show variables like "chara%";
とすると、UTF-8でない文字コードが設定されています。

> exit
一旦MySQLから出て、設定の変更をします。文字化けを防ぐため、文字コードを「UTF-8」に設定します。MySQLの設定ファイルを開きます。
# vi /etc/my.cnf
このファイルの一番下に次の2行を追加します。
character_set_server=utf8
skip-character-set-client-handshake
保存をして、MySQLを再起動します。
# systemctl restart mysqld
再度MySQLにログインして、文字コードが変更されているかを確認します。
これでMySQLのインストールは終了です。
続いて、MySQLを操作する時にphpMyAdminが便利ですので、これをインストールします。
# yum install --enablerepo=remi-php73 phpMyAdmin
インストールが完了したら、今回の実習ではどこからでもアクセス可能な設定をします。
# vi /etc/httpd/conf.d/phpMyAdmin.conf
次の2行を追加します。
AllowOverride all
Require all granted
httpdを再起動して、設定を反映させます。
# systemctl restart httpd
以下のURLでアクセスします。
http://IPアドレス/phpMyAdmin/
rootユーザでログインします。
ログインができれば、下の画面が出てきて、データベースの処理ができるようになります。

ここまでで、CentOS7を利用しての、最低限のLAMP環境が作成できるようになりました。今回は実習のため、rootユーザでの処理をしていますが、実際はユーザに権限を与えて処理を進めることになりますので注意をしてください。

今回の実習は以上です。

2020年4月28日火曜日

VirtualboxのインストールとCentOS7のインストール

自分のPCにVirtualboxをインストールして、ゲストOSをインストールする準備をします。
1. Virtualboxのダウンロードとインストール
今回はVirtualbox6.1を利用します。
仮想化ソフトウェア:Virtualbox6.1 https://www.virtualbox.org/
[インストールの動画]


2. CentOS7のインストール
今回はゲストOSとしてCentOS7 (7.7)をインストールします。まずISOファイルをダウンロードします。
OS : CentOS-7-x86_64-Minimal-1908.iso
[注意]
最近2003バージョンが公開され、1908バージョンのリンクから切り替わっています。
本来ならば、2003バージョンで実施したいですが、授業としての混乱を避けるために、以下から1908バージョンをインストールして実施して下さい。
https://linuxclub.cs.byu.edu/downloads/isos/centos/CentOS-7-x86_64-Minimal-1908.iso
http://kambing.ui.ac.id/iso/centos/7.7.1908/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso
上記がダメな場合はここ

Virtualboxを立ち上げ、CentOS7をインストールしていきます。

今回は名前「CentOS7-1908」とします。

メモリは4GBにします。

ハードディスクはそのまま

ハードディスクのファイルタイプはそのまま

物理ハードディスクにあるストレージは可変のまま

ファイルの場所とサイズ:サイズを20GBにしておく

Setting -> Storage -> Empty

ネットワークもブリッジアダプターに変更する

CentOS7のインストール準備ができた状態

Startをクリックして、CentOS7のインストールを開始します。
CentOSインストールの注意点
今回はrootユーザのみ最初に使います。後でユーザを発行します。
rootユーザのパスワードは「CentOS7」とします。

[インストールの動画]


3. CentOS7インストール後の作業
CentOS7のインストール直後は、ネットワークインターフェースが有効になっていません。
ネットワークインターフェースが自動的に起動するように設定します。

# nmtui
これからインタフェースを選択して、編集をします。インターフェース名は使っているPCで異なる可能性があります。
「Automatically Connect」にチェックを入れます。チェックを入れるにはスペースを押します。その後、
#reboot
してOSを再起動します。起動後
# ip a
とすると、自分のIPアドレスが確認できます。
[注意]
IPアドレスは自動取得になっているため、時間が経過するとIPアドレスが変更されている場合があります。またIPアドレスは、ネットワークの場所に依存するため、IPアドレスは各自のものに書き換えて実習を行ってください。またIPアドレスが10.・・・となっている場合はネットワーク接続がNATのままになっている場合があります。手順を戻り、ブリッジアダプターに変更してください。

4. TeratermでのSSH接続(任意)
Virtualboxで作業を行うと、画面が小さかったり、コピーがしずらかったりと問題があります。Teratermを利用して、SSH接続をすると作業をしやすくなります。
これを行うためには、
# ip a
で自分のIPアドレスを確認してください。

参考:インストール〜初期ネットワーク設定まで


以上です。