-------------------------------------------------------------------------------- ・前処理 ・用意するもの CentOS-8.2.2004-x86_64-dvd1.iso -------------------------------------------------------------------------------- ・Oracle VM VirtualBox マネージャ で 新規作成 ・名前 lara02 ・タイプ Linux ・バージョン Other Linux (64bit) ・メモリサイズ 1024MB ・仮想ハードディスクを作成する ・ハードディスクのファイルタイプ: VDI(VirtualBox Disk Image) ・物理ハードディスクにあるストレージ: 可変サイズ ・ファイルの場所とサイズ: lara02, 80GB ・[作成] -------------------------------------------------------------------------------- ・ストレージ ・CentOS-8.2.2004-x86_64-dvd1.iso ・ネットワーク ・固定IPの場合 ・[設定(S)] - ネットワーク(固定IP) ・ブリッジ・アダプタ ・[OK] ・DHCPの場合 ・[設定(S)] - ネットワーク(Local Only) ・NAT ・Host Only ・[OK] -------------------------------------------------------------------------------- ・インストール ・起動(T) ・Install CentOS 8 ・Language: English (United States) ・DATE & TIME: Asia Tokyo ・KEYBOARD: Japanese ・SOFTWARE SELECTION: Minimal Install; ・KDUMP: disabled ・NETWORK & HOST ; Ethernet = ON; lara02.mydomain ・[Begin Installation] ・ROOT PASSWORD ・USER CREATION // <-- devusr ・(処理終了を待つ) ・Reboot ・ネットワーク設定 ・DHCPの場合(Local Only の場合) /etc/sysconfig/network-scripts/ifcfg-enp0s8 ONBOOT=yes ・固定IPの場合 $ su - # cd /etc/sysconfig/network-scripts # cp ifcfg-enp0s3 _ifcfg-enp0s3_org # vi ifcfg-enp0s3 # diff _ifcfg-enp0s3_org ifcfg-enp0s3 < BOOTPROTO="dhcp" --- > BOOTPROTO="static" > IPADDR="192.168.3.223" > NETMASK="255.255.255.0" > GATEWAY="192.168.3.1" # # vi /etc/resolv.conf # cat /etc/resolv.conf nameserver 192.168.3.1 # ・Reboot # shutdown -r now -------------------------------------------------------------------------------- ・以降、client端末からsshでログインし、処理します。 -------------------------------------------------------------------------------- # yum -y update ### ### reboot ### # shutdown -r now # yum -y install epel-release https://rpms.remirepo.net/enterprise/remi-release-8.rpm; \ yum config-manager --set-enabled PowerTools # yum -y install tar wget net-tools gcc make zip unzip emacs nkf # yum -y install mariadb mariadb-server mariadb-devel # systemctl enable mariadb.service; \ systemctl start mariadb.service # mysql -u root -p パスワード入力はCR(Enter)だけ。 MariaDB [(none)]> set password for 'root'@'localhost' = password('...password...'); MariaDB [(none)]> create database devdb character set utf8; MariaDB [(none)]> create user 'devusr'@'localhost' identified by '...password...'; MariaDB [(none)]> grant all privileges on devdb.* to 'devusr'@'localhost'; MariaDB [(none)]> exit # yum -y module install php:remi-7.4 # yum -y install zlib-devel curl-devel openssl-devel \ httpd-devel apr-devel apr-util-devel libffi-devel # yum -y install php-bcmath php-dba php-dbg \ php-embedded php-enchant php-gd php-gmp php-intl php-ldap \ php-mysqlnd php-odbc php-opcache php-pdo php-pgsql \ php-process php-recode php-snmp php-soap php-xmlrpc php-zip # systemctl enable httpd; \ systemctl start httpd # firewall-cmd --permanent --add-service=http; \ firewall-cmd --permanent --add-service=https; \ firewall-cmd --reload # cd /etc # cp php.ini ~/php.ini # vi php.ini # diff ~/php.ini php.ini 588a589 > error_log = /var/log/php_error.log 923a925 > date.timezone = Asia/Tokyo 1017c1019 < pdo_mysql.default_socket= --- > pdo_mysql.default_socket=/var/lib/mysql/mysql.sock # touch /var/log/php_error.log; \ chown apache:apache /var/log/php_error.log; \ chmod 666 /var/log/php_error.log # setsebool -P httpd_can_network_connect 1; \ setsebool -P httpd_can_network_connect_db 1 # systemctl restart httpd ### ### npm ### # yum -y install npm ### ### Image Magick ### # yum -y install ImageMagick ImageMagick-devel ### ### composer ### # cd # wget https://getcomposer.org/installer -O composer-installer.php # php composer-installer.php --filename=composer --install-dir=/usr/local/bin # composer self-update --preview # rm -f composer-installer.php ### ### .bashrc ### # cd # vi .bashrc # cat .bashrc <<< # .bashrc # User specific aliases and functions # alias rm='rm -i' # alias cp='cp -i' # alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi alias ls='ls' alias ll='ls -la' alias e='emacs' alias delb='rm -f *~ .??*~' >>> ### ### .emacs ### # cd # vi .emacs # cat .emacs <<< (setq-default tab-width 4 indent-tabs-mode nil) (add-hook 'php-mode-hook (lambda () (setq tab-width 4) (setq c-basic-offset 4))) >>> ### ### 参照: https://readouble.com/laravel/ ### ### PATH="$HOME/.local/bin:$HOME/bin:$PATH;$HOME/.composer/vendor/bin:..." ### # yum -y install git # su - devusr $ composer global about $ vi .bashrc $ cat .bashrc <<< # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific environment PATH="$HOME/.local/bin:$HOME/bin:$PATH;$HOME/.composer/vendor/bin:$HOME/.composer/vendor/laravel/installer/bin" export PATH # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions alias ls='ls' alias ll='ls -la' alias e='emacs' alias delb='rm -f *~ .??*~' >>> $ composer global require laravel/installer $ composer create-project --prefer-dist laravel/laravel lar7 $ exit # mv /home/devusr/lar7 /var/www/lar7; \ chown -R devusr:devusr /var/www/lar7; \ chcon -R -t httpd_sys_rw_content_t /var/www/lar7 # chown -R apache:apache /var/www/lar7/storage # cd /etc/httpd/conf.d # vi lar7.conf # cat lar7.conf <VirtualHost *:80> ServerName lara02.mydomain DocumentRoot /var/www/lar7/public SetEnv APPLICATION_ENV "development" // <-- 環境変数 <Directory /var/www/lar7/public> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all <IfModule mod_authz_core.c> Require all granted </IfModule> </Directory> </VirtualHost> # # systemctl restart httpd ### 例: ### Client側(Windows10)のC:\Windows\System32\drivers\etc\hosts ### "192.168.56.124 lara02.mydomain"を追加。 ### Check http://lara02.mydomain # vi /etc/hosts <<< 次の1行を追加 192.168.56.124 lara02.mydomain >>> # su - devusr $ cd /var/www/lar7 $ php artisan --version $ exit # /* * https://qiita.com/sano1202/items/6021856b70e4f8d3dc3d * * ──/var/www/lar7 * ├── app ・・・アプリケーションのロジック * ├── bootstrap ・・・laravelフレームワークの起動コード * ├── config ・・・設定ファイル * ├── database ・・・MigrationファイルなどDB関連 * ├── public ・・・Webサーバのドキュメントルート * ├── resources ・・・ビューや言語変換用ファイルなど * ├── routes ・・・ルーティング用ファイル * ├── storage ・・・フレームワークが使用するファイル * ├── tests ・・・テストコード * └── vendor ・・・Composerでインストールしたライブラリ */ # touch /var/www/lar7/storage/logs/laravel.log # chmod 666 /var/www/lar7/storage/logs/laravel.log # su - devusr $ vi album.sql $ cat album.sql -- -- mysql -u devusr -p devdb -- use devdb; DROP TABLE IF EXISTS `album`; CREATE TABLE `album` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `artist` VARCHAR(100) NOT NULL, `title` VARCHAR(100) NOT NULL, `del_flg` BOOLEAN NOT NULL DEFAULT '0', `c_ts` TIMESTAMP, `c_id` BIGINT, `c_ip` VARCHAR(80), `u_ts` TIMESTAMP, `u_id` BIGINT, `u_ip` VARCHAR(80), PRIMARY KEY (id) ); INSERT INTO `album` (`artist`, `title`) VALUES ('The Military Wives', 'In My Dreams'), ('Adele', '21'), ('Bruce Springsteen', 'Wrecking Ball (Deluxe)'), ('Bruno Mars', 'Unorthodox Jukebox'), ('Various Artists', 'Call the Midwife (Music From the TV Series)'); UPDATE `album` SET c_ts = NOW(), c_id = 1, c_ip = '127.0.0.1'; $ $ mysql -u devusr -p devdb > \. album.sql > exit $ $ cd /var/www/lar7 $ cp .env .env.org $ vi .env $ diff .env.org .env 1c1 < APP_NAME=Laravel --- > APP_NAME=Lara02 5c5 < APP_URL=http://localhost --- > APP_URL=http://lara02.mydomain 12,14c12,14 < DB_DATABASE=laravel < DB_USERNAME=root < DB_PASSWORD= --- > DB_DATABASE=devdb > DB_USERNAME=devusr > DB_PASSWORD=...password... $ $ php artisan tinker Psy Shell v0.10.4 (PHP 7.4.9 — cli) by Justin Hileman >>> DB::select('select * from album where id = 1'); => [ {#3081 +"id": 1, +"artist": "The Military Wives", +"title": "In My Dreams", +"del_flg": 0, +"c_ts": "2020-06-10 12:48:45", +"c_id": 1, +"c_ip": "127.0.0.1", +"u_ts": "0000-00-00 00:00:00", +"u_id": null, +"u_ip": null, }, ] >>> q Exit: Goodbye $ $ cd /var/www/lar7 $ composer update $ composer fund $ cd /var/www/lar7/config $ vi database.php <<< ... 'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'devdb'), 'username' => env('DB_USERNAME', 'devusr'), 'password' => env('DB_PASSWORD', '...password...'), ... >>> $ cd /var/www/lar7 $ php artisan make:controller AlbumController $ php artisan make:model Album $ cd /var/www/lar7/app $ vi Album.php $ cat Album.php <?php namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; class Album extends Model { public function listAll() { $records = DB::select('SELECT * FROM `album`'); return $records; } } $ $ cd /var/www/lar7/app/Http/Controllers $ vi AlbumController.php $ cat AlbumController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Album; class AlbumController extends Controller { public function index() { return 'Hello world.'; } public function list() { $album = new Album; $dat = ['records' => $album->listAll()]; return view('album.list', $dat); } } $ $ cd /var/www/lar7/resources/views $ mkdir album $ cd /var/www/lar7/resources/views/album $ vi list.blade.php $ cat list.blade.php <!DOCTYPE html> <html> <head> <meta charset ="UTF-8" /> <title>Album list</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" /> </head> <body> <table class="table"> <tr> <th>Artist</th> <th>Title</th> </tr> @foreach($records as $record) <tr> <td>{{ $record->artist }}</td> <td>{{ $record->title }}</td> </tr> @endforeach </table> </body> </html> $ $ cd /var/www/lar7/routes $ vi web.php <<< この2行を追加。 Route::get('/album', 'AlbumController@index'); Route::get('/album/list', 'AlbumController@list'); >>> 以下の2つのページをチェック。 1. http://lara02.mydomain/album 2. http://lara02.mydomain/album/list .end of line