LAMP環境でサイト制作することが多いので、VagrantでローカルにLAMP環境構築してみたメモ。
ローカル環境
マシン:mac os 10.15.4
知識:Linuxを少しいじったことがあるくらい
構築環境
LAMP | version |
---|---|
centOS | 7 |
APACHE | 2.4 |
PHP | 7.3 |
MYSQL | 8.0 |
手順
1,VirtualBoxをインストール
2,Vagrantをインストール
3,Vagrantfileを設置
3-1,Vagrantfile作成
作業用のフォルダを作成しcuiで該当ディレクトリに移動し下記コマンドをうつ
vagrant init centos/7
3-2,Vagrantfile修正
Vagrantfile が作成されるので下記と差し替え
- Vagrantfile:OS情報や基本的な環境設定が記載された。ファイル中身を書き換える
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.network :private_network, ip: "192.168.33.10"
config.vm.provider "virtualbox" do |vb|
# GUIの有無
vb.gui = false
# 仮想マシンの名前
vb.name = "centOS7"
# 仮想マシンが使うメモリ(MB)
vb.memory = "2048"
# 仮想マシンが使うCPU
vb.cpus = 1
end
# 秘密鍵の場所
config.ssh.private_key_path = "/Users/xxxxxxx/.vagrant.d/insecure_private_key"
config.ssh.insert_key = false
if Object.const_defined? 'VagrantVbguest'
config.vbguest.auto_update = false
config.vbguest.no_remote = true
end
# ミドルウェアのインストール
config.vm.provision :shell, keep_color: true, path: "Vagrantfile.provision.sh"
# ホスト環境のフォルダをマウント(初期ではエラーになるのでコメントアウトしとく)
# config.vm.synced_folder "xxxxxxxxxxx", "/var/www/html", mount_options: ['dmode=777','fmode=777']
end
Vagrantfile の下記行は適宜自分の環境に置き換える。
config.ssh.private_key_path = "/Users/xxxxxxx/.vagrant.d/insecure_private_key"
3-3,ミドルウェアインストールファイルの設置
ミドルウェア(Apache,Mysql,Php)のインストールのためのシェルスクリプトを設置
- Vagrantfile.provision.sh:ミドルウェアをインストールするためのシェルスクリプトを記載。(ファイル名は任意)
#filename: Vagrantfile.provision.sh
#!/usr/bin/env bash
# timezone
cp -p /usr/share/zoneinfo/Japan /etc/localtime
# history format
HISTTIMEFORMAT='%y/%m/%d %H:%M:%S ';
# yumにリポジトリ追加してupdate
sudo yum -y install epel-release
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo yum -y update
# yumでmariadbは削除
sudo yum remove mariadb-libs
sudo rm -rf /var/lib/mysql/
# yumで apatch mod_ssl wget git curl vim unzip インストール
sudo yum -y install httpd mod_ssl wget git curl vim unzip
# yumで 拡張パッケージ インストール
sudo yum -y install gcc gcc-devel curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
# php7.3 インストール
sudo yum -y install --enablerepo=epel,remi,remi-php73 php php-{devel,mbstring,mysql,pdo,xml,gd,mcrypt,opcache,pear,pecl-ssh2,pecl-zip}
# composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
# ポート開放(SELinux無効化)
sudo systemctl restart firewalld
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
sudo setenforce 0
# Apacheの起動、自動起動設定
sudo systemctl start httpd
sudo chkconfig httpd on
# PHPの設定ファイルのバックアップ、timezoneの設定
cp /etc/php.ini /etc/php.ini.org
sed -i -e "s/date\.timezone =/date\.timezone = Asia\/Tokyo/g" /etc/php.ini
# /etc/httpd/conf/httpd.confのバックアップと編集
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
sed -i -e "s/AllowOverride None/AllowOverride All/g" /etc/httpd/conf/httpd.conf
#Apachenのバージョン非表示
sed -i -e "s/ServerTokens OS/ServerTokens Prod/g" /etc/httpd/conf/httpd.conf
lineNum=`sudo grep "AddType application/x-gzip .gz .tgz" -n /etc/httpd/conf/httpd.conf | cut -d ":" -f 1`
if [ $lineNum ]; then
sudo sed -i -e "${lineNum}a \ AddType application/x-httpd-php .php" /etc/httpd/conf/httpd.conf
lineNum=$((lineNum+1))
sudo sed -i -e "${lineNum}a \ AddType application/x-httpd-php-source .phps" /etc/httpd/conf/httpd.conf
fi
# mysql8 インストール
sudo yum -y localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/mysql-community.repo
sudo yum -y install --enablerep=mysql80-community mysql-community-server mysql-community-devel
# MySQLの起動と設定
systemctl restart mysqld
# 必要最小限のMySQLの設定内容を書き込む
cat << __CONF__ >> /etc/my.cnf
character-set-server = utf8
default_password_lifetime = 0
default-authentication-plugin = mysql_native_password
validate_password.policy = LOW
__CONF__
# MySQLの自動起動を有効化し起動する
systemctl enable mysqld
systemctl start mysqld
# httpd.confの反映
sudo systemctl restart httpd
4,Vagrantのコマンド実行
下記コマンドでVagrand実行し仮想環境を立ち上げる
vagrant up
5,Vagrant環境へログイン
下記コマンドで作成した仮想環境にSSH接続する
vagrant ssh
無事ログインできたら必要なミドルウェアがインストールされているか確認
yum list installed | grep httpd
httpd -v
yum list installed | grep php
php -v
yum list installed | grep mysql
mysqld -V
6,MYSQLの初期設定
vagrant環境にSSH接続しrootのパスワード変更する。
その後各種ユーザー作成する
(下記記載はMiiT+)
######################################################
## MYSQLの設定
#######################################################
# rootに変更
sudo su
# 初期パスワードを取得する
cat /var/log/mysqld.log | grep "A temporary password" | tr ' ' '\n' | tail -n1
# 最低限のセキュリティ設定
mysql_secure_installation
7,Vagrant環境(ゲストOS)にローカル環境(ホストOS)のフォルダ(ディレクトリ)をマウント(共有化)
長くなったので続きは
初心者がVagrantでローカル環境にLAMP環境構築してみた(マウント編)
に記載。
Vagrandコマンドメモ
コマンド | 内容 | 注釈 |
---|---|---|
vagrant init | Vagrantfile作成 | 環境構築の最初の一歩すでに Vagrantfile がある場合は不要 |
vagrant up | Vagrantで仮想環境立ち上げ | Vagrantfile に記述された環境が作成される、2回目以降は基本環境立ち上げ |
vagrant reload | 再起動 | 仮想環境の再起動 |
vagrant halt | シャットダウン | 仮想環境のシャットダウン。癖つけよう |
vagrant destroy | 環境削除 | 作成した環境を削除 |
参考
初心者必読:【Linux環境構築】VagrantとVirtualBoxとは?使い方を初心者向けに解説!
https://kitsune.blog/linux-environment
参考:vagrant up 時の共有フォルダのマウントエラー解消方法
https://qiita.com/takutoki/items/33cf1230e032931f9adc
参考:Install MySQL 8.0 on CentOS 7
https://qiita.com/ymasaoka/items/7dc131dc98ba10a39854