LoginSignup
0
0

More than 3 years have passed since last update.

vagrant環境で CentOS7 + Apache2.4.6 + MySQL5.7 + PHP 7.4.14の構築してみた

Posted at

vagrant環境で、指定のバージョンでWebサーバーを構築することになったので、
その際の備忘録です。

vagrant インストール

VirtualBoxインストール

まず、Vagrantから利用するVirtualBoxをインストールします。
https://www.virtualbox.org/wiki/Downloads
ここからお使いの環境に合ったものをダウンロードしてインストールしてください。

Vagrantインストール

次にVagrantをインストールします。
http://www.vagrantup.com/downloads
ここからお使いの環境に合ったものをダウンロードしてインストールしてください。

インストール完了後、下記のコマンドが動作していればOKです。

vagrant -v

フォルダ作成

PC上に作業用のディレクトリを作成する
私は、ホームディレクトリにvagrantというフォルダを作成、学習用にcent7を追加しました
※この作業はGUIでも可

$ mkdir cent7
$ pwd
/Users/vagrant/cent7

vagrant boxを追加

以下からCentOS7のBoxを探します
https://app.vagrantup.com/boxes/search

スクリーンショット 2020-04-19 17.20.00.png

以下のコマンドでBoxを追加することができます

$ vagrant box add [Box名またはURL]

今回は、[centos/7]を選択し、追加する事にします
途中どれで使うか聞かれます。今回は、virtualboxで使用するので「3」を選択します

$ vagrant box add centos/7
==> vagrant: A new version of Vagrant is available: 2.2.7 (installed version: 2.2.5)!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html

==> box: Loading metadata for box 'centos/7'
    box: URL: https://vagrantcloud.com/centos/7
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) hyperv
2) libvirt
3) virtualbox
4) vmware_desktop

Enter your choice: 3

スムーズに行けばOKとでるのですが、エラーでました、、なんだろう

An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
again.

OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 54

後日、再度やり直したらうまくいきました、、、なんで、、、?
キャッシュ削除でうまくいく件などもあるみたいなので、もしかしたら、関係あるかもです、、、
https://qiita.com/yyykms123/items/ec7241971ad3b3d63fd7

Vagrant Boxのインストール確認

インストールできたかどうか、以下コマンドで確認します。

$ vagrant box list
centos/7 (virtualbox, 1905.1)

いけたみたいですね

Vagrantfileの作成

準備ができたら、Vagrantfileを追加していきます
工程の中で追加した「centos/7」を使います

Vagrantfileがなんなのか、、こちらのサイトに簡単な説明がありましたので引用しておきます

https://qiita.com/nemui_/items/de5dd5feee95e60aa264
Vagrantfileは、仮想マシンを立ち上げる際のconfigやprovision(立ち上げ時自動実行)を記述するファイル です。要は仮想環境の設計図みたいなもので、これを元にどんなPCでも同じような仮想環境を構築できます。

$ vagrant init centos/7

コマンド実行後、実行したフォルダ内にVagrantfileが作られます
スクリーンショット 2020-04-25 15.13.25.png

操作しやすいようVagrantfileのファイルを編集します

※特定のIPアドレスをプライベートアドレスとすることも可能。
フォルダ内のVagrantfileを開き以下をコメントアウトを外す

config.vm.network :private_network, ip: "192.168.33.20"

また、仮想にアクセスしやすいよう設定
Vagrantfileのおいてるフォルダ内にhtmlを設置し、仮想にアクセスしたとき、/var/www/html/に配置したものと同期するようになります

config.vm.synced_folder"./html","/var/www/html/",mount_options:['dmode=777', 'fmode=666']

ついでにvargrantで起動した際のユーザーのデフォルトは以下の通り
ユーザ/パスワード vagrant/vagrant
ユーザ/パスワード root/vagrant

仮想マシンを起動

以下コマンドで仮想マシンを起動させるします

$ vagrant up

仮想マシンにSSHで接続

仮想マシンの起動が終わると、SSHでシェル接続が可能になります。

$ vagrant ssh

通常、SSHでの接続にはサーバアドレスやユーザIDの指定などが必要ですが、Vagrantによって立ち上げられた仮想マシンには、vagrant sshコマンドを使って簡単にSSH接続できるようになっています。

sshにログインすると以下のような表記に変換されたら大丈夫です

$ vagrant ssh
[vagrant@localhost ~]$ 

phpバージョン指定

yum-config-manager --enable remi-php00
ここを欲しいバージョンに変更

yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum install yum-utils
yum-config-manager --enable remi-php74
yum install php

LAMP環境をつくるために入れて置いた方がいいモジュールを追加しておきます

sudo yum -y install php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql

または、バージョン指定して、これでもいけると思います

yum info --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql

こちらのコマンドで追加できたから確認できます
yum list installed | grep php

Apacheインストール

Apacheインストールする

sudo yum install httpd

Apacheを一旦起動

sudo systemctl start httpd.service

ELinuxが有効になっていると、うなく行かないことがあるらしいです
ってことで変更します
https://engineers.weddingpark.co.jp/?p=1031

$ sudo vi /etc/selinux/config
> SELINUX=disabled     ← enforcing から disabled に変更

#selinuxの反映のためサーバー再起動
$ sudo shutdown -r now 

#SELINUXの状態確認
$ getenforce
Disabled

PHPが使える様にこちらも設定しておきます

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

こいつの下に以下の文を追加

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Apacheを再起動して反映します

sudo systemctl restart httpd.service

MySQLインストール

mysql5.7をインストール

#リポジトリ追加
sudo yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

#mysqlインストール
sudo yum -y install mysql-community-server

#バージョン確認 (念のため)
$ mysqld --version

mysql起動

sudo systemctl start mysqld

MySQLの初期設定

rootの初期パスワードを調べます
このパスワードは、/var/log/mysqld.logに記載があるようなので、以下のコマンドでパスワードを調べます

[vagrant@localhost log]$ sudo cat /var/log/mysqld.log | grep ' A temporary password is generated'
2020-05-05T17:30:13.457949Z 1 [Note] A temporary password is generated for root@localhost: XXXXXXXX

以下のコマンドで、初期設定を行えます

$ mysql_secure_installation

>Enter password for user root: (先ほど調べたパスワード)
>New password: (設定したいパスワード)
〜

このあと何点か質問事項がでてくるみたいですが、基本的にyでいいみたいです、、

ついでに、MySQLのバージョンによって厳密SQLモードになってることもあり、大文字小文字記号数字などを使用した複雑な文字列にする必要な場合があります。

こちらの記事によるとsql-modeが原因の様です。
https://amg-solution.jp/blog/7866

my.cnfにを変更を変更します

$ sudo vi /etc/my.cnf

my.cnfにを以下を追加

[mysqld]
sql-mode="STRICT_ALL_TABLES"

そして、mysqlを再起動し、設定を反映します
開発段階だけ使用するならこちら設定していいかもしれないです

sudo systemctl restart mysqld

phpMyAdminを導入

phpMyAdminをインストール

sudo yum -y install phpMyAdmin

※インストールしようとしたら以下のエラーが、、

No package phpMyAdmin available.
Error: Nothing to do

epel-releaseをインストールしたら大丈夫みたいです

sudo yum install epel-release

参考URL
https://yululy.com/yum-install-phpmyadmin/

インストールしたphpMyAdminにはアクセス制限がかかっているため、あなたのIPアドレスをアクセス許可にする必要らしいです、なので、設定します

sudo vi /etc/httpd/conf.d/phpMyAdmin.conf
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 192.168.33.20 <= ここを変更(127.0.0.1->自身のIP)
Require ip ::1
</RequireAny>
</IfModule>
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
AllowOverride all <----ここにこの記述を追加!
Require all granted  <----ここにこの記述を追加!
~

phpmyadminのバージョンアップ

phpmyadminを開いたら、画面にエラーがでていたました。

 Array and string offset access syntax with curly braces is deprecated

phpのバージョンによるものぽいですね
参考URLを元にphpmyadminをバージョンアップすることにしました
https://satox.info/?p=6666

sudo yum --enablerepo=remi -y install php70-php-mysql php70-php-mcrypt
sudo yum --enablerepo=remi-test info phpMyAdmin
sudo yum -y --enablerepo=remi,remi-test update phpMyAdmin

これでエラーが消えました!

自動起動設定

毎回起動しなおすの面倒なため自動で立ち上がるよう設定します

$ sudo systemctl enable httpd.service
$ sudo systemctl enable mysqld.service

補足) cent6以前の場合は「chkconfig httpd on」

長かった、、
mysqlのパスワード設定していないため、あとでちゃんと設定します
とりあえず、手順まで、、

時間あるときに再編集、および、整理します

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0