ESXI上にCentOSを入れて、Laravelの開発環境をつくる(´・ω・)ス
これはその忘備録です。
ちなみに今回ESXiを動かしているマシンは激安組みでG440@3.3GHz メモリ32GBだが、仮想マシンはCPUは2コア・メモリ4GB以上ないときつい。逆に書けば以上のスペックあれば快適に動く。
ESXi 上のCentOS インストール
CentOS公式からダウンロードしたISOをCD/DVDにセット。 ISO パワーオン時に接続を忘れずに。
インストール時の注意
特別に注意はないが、ネットワーク設定をしておかないと、コマンドで設定する必要がある。面倒なのでインストール時に設定しておくのがベスト。
ネットワークとホスト名をクリックし、次の画面で右上のEthernet オンは忘れずれに変えて、右下の「設定」から入り、上のIPv4のセッティングをクリック。右にある追加で設定。
またセキュリティポリシーもオフにしておく。
また、インストールが進む際にrootのパスワードを決めるが、その際にユーザーも作っておいたが楽。
今回はkatoで作っておく。なぜ作る必要があるか?というとWEBサーバの権限で利用することや、rootでなくFTP接続などで使う必要があるため。
インストール後ローカルマシンからSSH接続させる。
インストール後、再起動。この状態で外部からSSH接続ができる。
ESXi上のコンソールだとコマンドのコピーがしづらいので、ローカルマシンからSSH接続を行う。
接続できない?
この時点で外部からSSH接続できないケースは主に2つ。IPアドレスを設定してなかったか、SElinuxとファイヤーウォールが設定してないケース。
IPアドレスの設定方法
/etc/sysconfig/network-scripts/内にある ifcfg-デバイス名 というファイルを設定すればOk.このディバイス名は大抵ifcgg-何々のはずだが、デバイス名はls でネットワークデバイスを確認
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens160 UUID=60fe0527-5477-4a0b-90f9-8058e44c288a DEVICE=ens160 ONBOOT=yes IPADDR="192.168.11.170" NETMASK="255.255.255.0" GATEWAY="192.168.11.1" DNS="192.168.11.1"
systemctl restart NetworkManager systemctl restart network
名前解決もしておく
初期はつなげてなければ、ネームサーバが分からないと名前解決ができないので、
/etc/resolv.conf にリゾルバに名前解決を記述。ルーターのアドレスかグーグルのネームサーバーを指定。
search 8.8.8.8 nameserver 192.168.11.1
SElinuxやファイヤーウォールも無効に。
SElinux無効に。なにかと開発環境には無用なので、SElinuxは切っておきます。
# vi /etc/sysconfig/selinux SELINUX=disable
ファイヤーウォールも切っておきます。
# 確認 (´・ω・)ス
# iptables -L # systemctl status firewalld # systemctl stop firewalld
起動時もオフに
#systemctl list-unit-files | grep firewall # systemctl disable firewalld.service # systemctl list-unit-files | grep firewall
# reboot
まずはアップデート
# yum -y update
もし以下でエラーが出る場合。
# yum -y update 読み込んだプラグイン:fastestmirror Determining fastest mirrors Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 不明なエラー"
ネームサーバかゲートウェイどちらか間違っているので、/etc/resolv.conf と/etc/sysconfig/network-scripts/内にある ifcfg-デバイス名の見直しを。
ここまでユーザーもできているはずだが、もし忘れた場合はここで再度ユーザーの作成を。
ユーザの追加
# useradd kato # passwd kato
katoはユーザ名ですよ。この後にデザさんとかローカルIDEでFTPで利用するのに使うので、先に用意しておきます。
一括で入れる方法と必要なものを必要なだけ入れる方法があります。まずは一括で開発環境を入れます。
開発ツールとリポジトリのインストール
#yum -y groupinstall "Development Tools" "Base" # yum install epel-release # rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
WEBサーバ(Apache)のインストール
# yum -y install httpd httpd-devel mod_ssl
バーチャルサーバの設定
バーチャルドメインに開発しますので、設定もしておきます。
まずはディレクトリを用意します。
# mkdir -p /var/www/vhosts/example.net/httpdocs/project
続けてバーチャルドメインもWEBサーバ(apache)に設定しておきます。
# vi /etc/httpd/conf.d/app.conf <VirtualHost *:80> DocumentRoot /var/www/vhosts/example.net/httpdocs/project/public ServerName example.net ErrorLog logs/example.net-error_log CustomLog logs/example.net-access_log common <Directory "/var/www/vhosts/example.net/httpdocs/project/public"> AllowOverride All Require all granted </Directory> </VirtualHost>
接続ユーザーをアパッチ権限をユーザに追加してあげます。
# vi /etc/httpd/conf/httpd.conf #User apache #無効化 #Group apache #無効化 User kato #追加 Group apache #追加
# usermod -aG apache kato
文法チェックとApache自動起動
# httpd -t # systemctl restart httpd # systemctl enable httpd
service httpd configtest でも httpd -t でも同じ。
エラーとして以下でますが無視します。開発用ですから。
AH00112: Warning: DocumentRoot [/var/www/vhosts/example.net/httpdocs/project/public] does not exist AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
PHP7インストール
#yum -y install --enablerepo=epel libmcrypt libwebp #yum -y install --enablerepo=remi-php71 php php-cli php-devel php-common #yum -y install php-mbstring php-mysql php-phpunit-PHPUnit php-pecl-xdebug #yum -y install php-gd php-pdo php-xml php-mcrypt php-fpm php-opcache php-pecl-apcu php-zip
少し長いの分けましたが、ワンライナーでもOKです。
# php -v PHP 7.1.25 (cli) (built: Dec 8 2018 13:52:58) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
MySQLのインストール
手順はMariaDBを削除して、MySQLを入れます。また現時点(2018年12月29日)でMySQLはバージョン8がありますが、今回は少し前のを入れます。
開発環境、またはデフォルトではMariaDBですので、一度消します。
# yum remove mariadb-libs # rm -rf /var/lib/mysql/
レポジトリを入れてインストールします。
# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm # yum -y install mysql-community-server # systemctl enable mysqld # systemctl start mysqld
初期パスワードを確認します。
# tail -n 500 /var/log/mysqld.log | grep root 2018-12-29T08:11:18.241744Z 1 [Note] A temporary password is generated for root@localhost: E*=wjr40Xm,7
このE*=wjr40Xm,7がパスワードですので、入って初期設定します。
# mysql_secure_installation
Postfixを入れ直します。
# yum install postfix # systemctl start postfix # systemctl enable postfix
phpMyAdminのインストール
# yum -y install --enablerepo=remi-php71 phpMyAdmin # vi /etc/httpd/conf.d/phpMyAdmin.conf <Directory /usr/share/phpMyAdmin/> AddDefaultCharset UTF-8 AllowOverride all Require all granted
Laravelインストール
Composerのインストール
# curl -sS https://getcomposer.org/installer | php # mv composer.phar /usr/local/bin/composer
バージョンも確認します。
-VのVは大文字(´・ω・)ス
# composer -V Composer version 1.8.0 2018-12-03 10:31:16
プロジェクト作成
# composer global require laravel/installer # composer create-project laravel/laravel /var/www/vhosts/example.net/httpdocs/project --prefer-dist
プロジェクトのディレクトリの権限を変更
chmod 755 /var/www/vhosts/example.net/httpdocs/project chmod 755 -R /var/www/vhosts/example.net/httpdocs/project/storage chmod 755 -R /var/www/vhosts/example.net/httpdocs/project/bootstrap/cache chown kato:apache -R /var/www/vhosts/example.net/httpdocs/project
以下メモ
【躓き】デフォルトのドキュメントルートは パーミッション
【躓き】laravel コマンド時にkatoユーザに。
【躓き】Installation failed, deleting ./composer.json.
php-zip 追加
chmod 755 /var/www/vhosts/example.net/httpdocs/project
chmod 755 -R /var/www/vhosts/example.net/httpdocs/project/storage
chmod 755 -R /var/www/vhosts/example.net/httpdocs/project/bootstrap/cache
chown apache:apache -R /var/www/vhosts/example.net/httpdocs/project
# ls -laht
合計 232K
-rw-r--r--. 1 apache apache 706 12月 27 00:27 .env
drwxr-xr-x. 45 apache apache 4.0K 12月 27 00:27 vendor
-rw-r--r--. 1 apache apache 174K 12月 27 00:27 composer.lock
drwxr-xr-x. 12 apache apache 4.0K 12月 27 00:27 .
drwxr-xr-x. 3 root root 21 12月 27 00:16 ..
-rw-r--r--. 1 apache apache 213 12月 15 23:37 .editorconfig
-rw-r--r--. 1 apache apache 655 12月 15 23:37 .env.example
-rw-r--r--. 1 apache apache 111 12月 15 23:37 .gitattributes
-rw-r--r--. 1 apache apache 151 12月 15 23:37 .gitignore
drwxr-xr-x. 6 apache apache 84 12月 15 23:37 app
-rwxr-xr-x. 1 apache apache 1.7K 12月 15 23:37 artisan
drwxr-xr-x. 3 apache apache 34 12月 15 23:37 bootstrap
-rw-r--r--. 1 apache apache 1.6K 12月 15 23:37 composer.json
drwxr-xr-x. 2 apache apache 247 12月 15 23:37 config
drwxr-xr-x. 5 apache apache 72 12月 15 23:37 database
-rw-r--r--. 1 apache apache 1.1K 12月 15 23:37 package.json
-rw-r--r--. 1 apache apache 1.2K 12月 15 23:37 phpunit.xml
drwxr-xr-x. 5 apache apache 127 12月 15 23:37 public
-rw-r--r--. 1 apache apache 4.0K 12月 15 23:37 readme.md
drwxr-xr-x. 6 apache apache 53 12月 15 23:37 resources
drwxr-xr-x. 2 apache apache 75 12月 15 23:37 routes
-rw-r--r--. 1 apache apache 563 12月 15 23:37 server.php
drwxr-xr-x. 5 apache apache 46 12月 15 23:37 storage
drwxr-xr-x. 4 apache apache 83 12月 15 23:37 tests
-rw-r--r--. 1 apache apache 537 12月 15 23:37 webpack.mix.js
Supervisorのインストール # yum install -y supervisor