LoginSignup
1
1

More than 5 years have passed since last update.

1つのサーバーに異なるphpのversionでmagentoをインストールしたかった。(失敗談)

Last updated at Posted at 2018-12-20

本記事はMagento2 Advent Calendar 2018 20日目の記事になります。。
php7.1のmagento2.2.7とphp7.2のmagento2.3をphpenvを使って同じサーバーでインストールしたかった話です。

手順

  • phpenvのインストール
    • phpenvのインストール
    • phpenvの下準備 
    • php7.1のインストール
    • php7.2のインストール
  • apache2のインストール
    • apache2の設定
  • mysqlのインストール
    • mysqlの設定
  • composerを使ってmagentoのソースをダウンロード
    • magento2.2.7のインストール
    • magento2.3のインストール

phpenvのインストール

まずphpenvを/usr/srcにインストールします。
phpenvのインストールはCentOS7にphpenvをインストールし、PHPのバージョンを管理するを参考にさせていただきました。

$ cd /usr/src
$ git clone https://github.com/CHH/phpenv.git
$ cd phpenv/bin/
$ ./phpenv-install.sh
Installing phpenv in /root/.phpenv
Cloning into '/root/.phpenv'...
remote: Enumerating objects: 2744, done.
remote: Total 2744 (delta 0), reused 0 (delta 0), pack-reused 2744
Receiving objects: 100% (2744/2744), 515.63 KiB | 130.00 KiB/s, done.
Resolving deltas: 100% (1720/1720), done.
Success.

$  export PATH="/root/.phpenv/bin:$PATH"
$  eval "$(phpenv init -)"

phpenvが読めることを確認します。

$ phpenv --version
$ rbenv 1.1.1-39-g59785f6

php-buildのインストール

PHPをインストールするためのphp-buildを取得します。

$ git clone https://github.com/CHH/php-build.git ~/.phpenv/plugins/php-build

phpenvの下準備

このままphpをインストールしてもエラーになるため追加で下記のものをインストールします。
※ 余計な物が入っているかもしれませんが私の環境の場合は全部いれないとエラーになってしまいました。

$ apt install  autoconf \
  automake \
  libxml2-dev \
  libcurl4-openssl-dev \
  libssl-dev \
  openssl \
  gettext \
  libicu-dev \
  libmcrypt-dev \
  libmcrypt4 \
  libbz2-dev \
  libreadline-dev \
  build-essential \
  libmhash-dev \
  libmhash2 \
  libxslt1-dev \
  libtidy-dev  \
  re2c 

$  apt-get install libxml++2.6-dev  \
  libpng-dev \
  libcurl4-gnutls-dev \
  libjpeg-turbo8-dev 

phpのインストール

今回は php7.2.13 と php7.1.25 をインストールします。

$  phpenv install 7.2.13
$  phpenv install 7.1.25

とても時間がかかるので気をつけてください。
sshで接続の場合 サーバーから切断されてしまう可能性があるのでsshのconfファイルの設定をすることをお勧めします。
~/.ssh/configについて

インストールが終わったら使うphpを選択します。

# 今回は7.1.25を先に使います。
$ phpenv global 7.1.25 

magento インストールに必要なphpのモジュールをインストールします。

$ sudo apt-get -y update
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get -y update
$ sudo apt-get install -y php7.1 libapache2-mod-php7.1 php7.1-common php7.1-gd php7.1-mysql php7.1-mcrypt php7.1-curl php7.1-intl php7.1-xsl php7.1-mbstring php7.1-zip php7.1-bcmath php7.1-iconv php7.1-soap

userの作成

root権限を持つuserを作成します

$ adduser magento
$ gpasswd -a magento sudo

パスワードはお好みで、パスワードを入力したらあとは全てEnterで大丈夫です。

apache2のインストール

$ apt install apache2 -y

apache2 の設定

apacheの設定などはmagento2:開発環境構築(初級者編)を参考にさせていただきました。

 $ sudo vim /etc/apache2/apache2.conf
 <Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
 </Directory>

 Servername localhost

こんな感じにします。

 # 「rewrite」 を有効にします。
 $ cd /etc/apache2/mods-enabled/
 $ sudo a2enmod rewrite

実行ユーザーを統一

apacheの実行者のズレによってmagento側でエラーが発生するため、実行ユーザー・グループを先ほど作成したmagentoに統一します。

$ sudo vim /etc/apache2/envvars
       export APACHE_RUN_USER=magento
       export APACHE_RUN_GROUP=magento

mysqlのインストール

$ apt install mysql-server mysql-client

mysqlの設定

rootユーザーでmysqlにログインします。

$ sudo mysql -u root 

databaseとuserを作成します。

create database magento;
create user magento IDENTIFIED BY 'magento';
GRANT ALL ON magento.* TO magento@localhost IDENTIFIED BY 'magento';
flush privileges;

phpcomposerをインストール

magento install に必要なphpComposerをインストールします。

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('sha384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"

magento install (2.2.7)

magentoをインストールするためにmagentoのアカウントを作成して、アクセスキーを取得し公開鍵と秘密鍵を入手しておいてください。

# magentoをinstall するためのディレクトリーを作成
$ mkdir -p /var/www/html/magento2.2.7

# magento2.2.7をダウンロード
$ php composer.phar create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.2.7 /var/www/html/magento2.2.7/

# パーミッションを設定
$ chmod 777 -R /var/www/html/magento2.2.7/*

Authentication required (repo.magento.com): には


        Username: 公開鍵
        Password: 秘密鍵

を入力します。

ダウンロードが終わったら
http://ipaddress/magento2.2.7
にアクセスしてインストールします。

magento install (2.3)

インストールが終わったらphpのバージョンを切り替えます

$ phpenv global 7.2.13

magento インストールに必要なphpのモジュールをインストールします。

$ sudo apt-get -y update
$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get -y update
$ sudo apt-get install php7.2 libapache2-mod-php7.2 php7.2-common php7.2-gd php7.2-mysql  php7.2-curl php7.2-intl php7.2-xsl php7.2-mbstring php7.2-zip php7.2-bcmath  php7.2-soap

magento2.3をダウンロードします。

# magento2.3をインストールするためのディレクトリーを作成
$ mkdir /var/www/html/magento2.3

# magento2.3をinstall
$ php composer.phar create-project --repository=https://repo.magento.com/ magento/project-community-edition /var/www/html/magento2.3

# パーミッションを設定
$ chmod 777 -R /var/www/html/magento2.3/*

ダウンロードが終わったら
http://ipaddress/magento2.3
にアクセスしてインストールします。

なぜ失敗なのか

CLI側のphpのvarsionは切り替わっているのですが、webserver側のphpのvarsionが切り替わらずどちらもphp7.1でインストール・ダウンロードしている状態になっています。
一応phpenv-apache-versionなど試してみたのですがうまく動きませんでした。

おわりに

来年のMagento Advent Calendarでは成功談を話せる様に頑張ります。
アドバイスや助言がありましたらコメントにお願いします。
パーミッションはインストールを目標にしているためセキュリティなどは考えておりません注意してください。

参考資料

参考にさせて頂きました、ありがとうございました。

1
1
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
1
1