masalibの日記

システム開発、運用と猫の写真ブログです

centos7.4にphp5.6と7,2をインストールする

vagarantを使用してcentos7.4にphp5.6と7,2をインストールをおこないました
centos7系、php7.2が初めてで時間がかかった
まだ途中だけどメモを残す

centos7.4のイメージは公式のイメージだと思います
小さいサイズではないのでダウンロードに時間がかかると思う
https://app.vagrantup.com/centos/boxes/7

作業1・初期設定

イメージをいれるフォルダを作成する

mkdir centos7
cd centos7
vagrant init centos/7
作業2・Vagrantfileの修正

直下の所にVagrantfileというファイルができるのでそちらを修正する

vim Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.synced_folder ".", "/vagrant", type:nil
  config.vm.box = "centos/7"
  config.vm.box_check_update = false
  config.vm.network "private_network", ip: "192.168.33.10"
  #config.vm.synced_folder "./opt", "/var/opt"
  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = true
    # Customize the amount of memory on the VM:
    vb.memory = "1024"
  end
  config.vm.provision :shell, :path => "00_ssh.sh"
  config.vm.provision :shell, :path => "01_init.sh"
  config.vm.provision :shell, :path => "02_php.sh"
  config.vm.provision :shell, :path => "03_mysql.sh"
  config.vm.provision :shell, :path => "04_apache.sh"
  config.vm.provision :shell, :path => "05_phpmyadmin.sh"
end

細かい設定は00_ssh.sh~05_phpmyadmin.shやる形になる



作業3・SSHの設定変更

vim 00_ssh.sh

# SSHのパスワードでのアクセス
# Windowsを対象にしている為、Winscpだと毎回変換しないといけない。
# 手順が増えるのでローカル環境のみSSHのパスワードでのアクセスを許可する

sudo sed -i -e "s/^PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config 
systemctl restart sshd.service
作業4・マシンの初期設定系

vim 01_init.sh

#SELinuxの無効化(恒久対応)
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
sudo  setenforce 0

# iptables stop ローカルでは使わない
systemctl disable firewalld
systemctl stop firewalld

# デフォルトではiptablesは入っていないのでコメントアウト
#systemctl disable iptables
#systemctl stop iptables

# bashのupdate お決まり
yum update bash -y

# openssl update お決まり
yum update openssl -y


# ntp install 時間同期
yum install -y ntp*
systemctl enable ntpd
systemctl restart ntpd

# cron install アバウト系を削除してぴったり系をインストール
yum -y install cronie-noanacron
yum -y remove cronie-anacron
systemctl enable crond
systemctl restart crond

# devtool lib install 開発系で使うものをインストール
yum install rsync unzip zip zlib zlib-devel openssl-devel sqlite-devel gcc-c++ glibc-headers libyaml-devel readline readline-devel zlib-devel libffi-devel epel-release wget -y

# timezone の変更
timedatectl set-timezone Asia/Tokyo
timedatectl status



作業5・PHPのインストール

vim 02_php.sh

#php5.6とphp7.2のインストール

# リポジトリをインストールする
sudo yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm -y
sudo yum install yum-utils -y
sudo yum-config-manager --enable remi

# インストールする
for v in 56 72 ; do sudo yum -y install php$v php$v-php-{gd,xml,mbstring,mysqlnd} ; done
for v in 56 72 ; do sudo yum -y install php$v-php-{opcache,pecl-apcu,pecl-memcached} ; done


#バージョンの確認
for v in 56 72 ; do sudo php$v -v ; echo \ ; done

#php.ini の配置場所
for v in 56 72 ; do sudo php$v --ini | grep Loaded | awk '{print $4}' ; done


#php-fpm のインストール
for v in 56 72 ; do sudo yum -y install php$v-php-fpm ; done

#プロセスマネージャーの変更
for v in 56 ; do sudo sed -i '/pm = /s/dynamic/ondemand/' /opt/remi/php$v/root/etc/php-fpm.d/www.conf ; done
for v in 72 ; do sudo sed -i '/pm = /s/dynamic/ondemand/' /etc/opt/remi/php$v/php-fpm.d/www.conf ; done


#確認
for v in 56 ; do sudo grep 'pm = ondemand' /opt/remi/php$v/root/etc/php-fpm.d/www.conf ; done
for v in 72 ; do sudo grep 'pm = ondemand' /etc/opt/remi/php$v/php-fpm.d/www.conf ; done


#listenの変更
for v in 56 ; do sudo sed -i "s/9000/90$v/" /opt/remi/php$v/root/etc/php-fpm.d/www.conf ; done
for v in 72 ; do sudo sed -i "s/9000/90$v/" /etc/opt/remi/php$v/php-fpm.d/www.conf ; done

#listenの確認
for v in 56 ; do sudo grep 'listen = 127' /opt/remi/php$v/root/etc/php-fpm.d/www.conf ; done
for v in 72 ; do sudo grep 'listen = 127' /etc/opt/remi/php$v/php-fpm.d/www.conf ; done

#サービスの起動と再起動の設定
sudo systemctl restart php72-php-fpm 
sudo systemctl enable php72-php-fpm 
sudo systemctl restart php56-php-fpm 
sudo systemctl enable php56-php-fpm 

#サービスのステータス確認
sudo systemctl status php72-php-fpm 
sudo systemctl status php56-php-fpm 



作業6・mysqlのインストール

mariadbは使わずmysqlを使う方向になった
自分的にはmariadbでいいと思うが・・・

vim 03_mysql.sh

# デフォルトで入っているmariadbを削除する
# インジェクションがあるpostfixが消えるのが・・・やばいかも
sudo yum remove mariadb*

# mysql5.7のリポジトリを落としてきて「yum」でインストールする
cd /var/tmp/
sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
sudo yum install mysql-community-server -y

#確認
mysqld --version

# サービスの起動
sudo systemctl restart mysqld.service

# OS再起動の設定
sudo systemctl enable mysqld.service

#MySQL の初期パスワード確認(ログに出力されるのでそれを取得する)
# (2回目はエラーになるかも)
DB_PASSWORD=$(grep "A temporary password is generated" /var/log/mysqld.log | sed -s 's/.*root@localhost: //')
echo ${DB_PASSWORD}

#パスワードのバリデーション解除
sudo sed -i '$a validate-password=OFF' /etc/my.cnf

#文字コードのutf-8の設定
sudo sed -i '$a character-set-server=utf8' /etc/my.cnf

#パスワードの360日問題解除
sudo sed -i '$a default_password_lifetime=0' /etc/my.cnf

sudo systemctl restart mysqld.service

#新しいパスワードの設定をする(2回目はエラーになるかも)
NEW_DB_PASSWORD='password'
mysql -uroot -p${DB_PASSWORD} --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${NEW_DB_PASSWORD}'; "

#確認
sudo mysql -u root -p${NEW_DB_PASSWORD} -e "select user,host,password_last_changed from mysql.user;" 
sudo chown -R mysql /var/lib/mysql



作業7・apacheのインストール

vim 04_apache.sh

cd /var/tmp/
sudo yum install --enablerepo=remi --enablerepo=remi-php56 httpd httpd-devel mod_ssl -y

# パーミッション系の変更
sudo chown -R apache:apache /var/log/httpd
sudo chmod -R 755 /var/log/httpd
sudo mkdir /var/log/httpd/access_logs
sudo chown -R apache:apache /var/log/httpd/access_logs
sudo chmod -R 755 /var/log/httpd/access_logs
sudo mkdir /var/log/httpd/error_logs
sudo chown -R apache:apache /var/log/httpd/error_logs
sudo chmod -R 755 /var/log/httpd/error_logs

# 設定ファイルのパーミッション変更(vagrant環境のみ)
sudo chown -R vagrant:vagrant /etc/httpd/conf.d/
sudo chown -R vagrant:vagrant /etc/httpd/conf/

sudo systemctl enable httpd
sudo systemctl restart httpd 

sudo usermod -aG apache vagrant
sudo usermod -aG vagrant apache 

# phpの所でいれた方がいいかも
if [ -e /usr/local/bin/composer ]; then
    echo "composer installed"
else
    echo "composer no installed"
    echo "composer install start"
    cd /tmp/
    sudo wget https://getcomposer.org/installer
    sudo php72 /tmp/installer
    sudo mv /tmp/composer.phar /usr/local/bin/composer
fi

# svnのインストール・・・古いシステムがあるので・・・
sudo yum install  subversion  -y



作業8・phpmyadminのインストール

vim 05_phpmyadmin.sh

sudo yum install --enablerepo=remi --enablerepo=remi-php56 phpmyadmin -y

#既存の設定は邪魔で削除
sudo rm -rf /etc/httpd/conf.d/phpmyadmin.conf

sudo cat << 'EOT' >> /etc/httpd/conf.d/phpmyadmin.conf
Listen 10003
<virtualhost *:10003="">
    DocumentRoot /usr/share/phpMyAdmin/

	<directory usr="" share="" phpmyadmin="">
	   AddDefaultCharset UTF-8
	   <ifmodule mod_authz_core.c="">
	     Require all granted
	   </ifmodule>
	</directory>
	<filesmatch \.php$="">
	    SetHandler "proxy:fcgi://127.0.0.1:9056" 
	</filesmatch>

	<directory usr="" share="" phpmyadmin="" setup="">
	   <ifmodule mod_authz_core.c="">
	     Require local
	   </ifmodule>
	</directory>

</virtualhost>
EOT


echo "#service httpd restart"
systemctl restart httpd 


これで
http://192.168.33.10:10003/
にアクセスする
phpmyadminが表示される


はまった事

seLinuxがデフォルトでオンになっていた事・・・


このせいでphp72-php-fpmが立ち上がらなかった。

ERROR: unable to bind listening socket for address '127.0.0.1:9072': Permission denied (13)
パーミッションが間違えていますしかエラーにでないもんだから本当に辛かった

この記事をみつけるまでseLinuxの存在をすっかり忘れていた
unix.stackexchange.com

参考URL
MySQL5.7の初期パスワードを非対話で変更する - akamist blog
enomotodev.hatenablog.com

あああ・・・めんどくさいからgitにあげよう!!

CentOS 7実践ガイド (impress top gear)

CentOS 7実践ガイド (impress top gear)