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 でネットワークデバイスを確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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" |
1 2 |
systemctl restart NetworkManager systemctl restart network |
名前解決もしておく
初期はつなげてなければ、ネームサーバが分からないと名前解決ができないので、
/etc/resolv.conf にリゾルバに名前解決を記述。ルーターのアドレスかグーグルのネームサーバーを指定。
1 2 |
search 8.8.8.8 nameserver 192.168.11.1 |
SElinuxやファイヤーウォールも無効に。
SElinux無効に。なにかと開発環境には無用なので、SElinuxは切っておきます。
1 2 3 |
# vi /etc/sysconfig/selinux SELINUX=disable |
ファイヤーウォールも切っておきます。
# 確認 (´・ω・)ス
1 2 3 |
# iptables -L # systemctl status firewalld # systemctl stop firewalld |
起動時もオフに
1 2 3 |
#systemctl list-unit-files | grep firewall # systemctl disable firewalld.service # systemctl list-unit-files | grep firewall |
1 |
# reboot |
まずはアップデート
1 |
# yum -y update |
もし以下でエラーが出る場合。
1 2 3 4 5 |
# 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-デバイス名の見直しを。
ここまでユーザーもできているはずだが、もし忘れた場合はここで再度ユーザーの作成を。
ユーザの追加
1 2 |
# useradd kato # passwd kato |
katoはユーザ名ですよ。この後にデザさんとかローカルIDEでFTPで利用するのに使うので、先に用意しておきます。
一括で入れる方法と必要なものを必要なだけ入れる方法があります。まずは一括で開発環境を入れます。
開発ツールとリポジトリのインストール
1 2 3 |
#yum -y groupinstall "Development Tools" "Base" # yum install epel-release # rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm |
WEBサーバ(Apache)のインストール
1 |
# yum -y install httpd httpd-devel mod_ssl |
バーチャルサーバの設定
バーチャルドメインに開発しますので、設定もしておきます。
まずはディレクトリを用意します。
1 |
# mkdir -p /var/www/vhosts/example.net/httpdocs/project |
続けてバーチャルドメインもWEBサーバ(apache)に設定しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 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> |
接続ユーザーをアパッチ権限をユーザに追加してあげます。
1 2 3 4 5 6 |
# vi /etc/httpd/conf/httpd.conf #User apache #無効化 #Group apache #無効化 User kato #追加 Group apache #追加 |
1 |
# usermod -aG apache kato |
文法チェックとApache自動起動
1 2 3 |
# httpd -t # systemctl restart httpd # systemctl enable httpd |
1 2 3 4 |
service httpd configtest でも httpd -t でも同じ。 |
エラーとして以下でますが無視します。開発用ですから。
1 2 |
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インストール
1 2 3 4 |
#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です。
1 2 3 4 |
# 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ですので、一度消します。
1 2 |
# yum remove mariadb-libs # rm -rf /var/lib/mysql/ |
レポジトリを入れてインストールします。
1 2 3 4 5 |
# 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 |
初期パスワードを確認します。
1 2 |
# 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がパスワードですので、入って初期設定します。
1 |
# mysql_secure_installation |
Postfixを入れ直します。
1 2 3 |
# yum install postfix # systemctl start postfix # systemctl enable postfix |
phpMyAdminのインストール
1 2 3 4 5 6 7 8 9 |
# 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のインストール
1 2 |
# curl -sS https://getcomposer.org/installer | php # mv composer.phar /usr/local/bin/composer |
バージョンも確認します。
-VのVは大文字(´・ω・)ス
1 2 |
# composer -V Composer version 1.8.0 2018-12-03 10:31:16 |
プロジェクト作成
1 2 |
# composer global require laravel/installer # composer create-project laravel/laravel /var/www/vhosts/example.net/httpdocs/project --prefer-dist |
プロジェクトのディレクトリの権限を変更
1 2 3 4 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# 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