LoginSignup
5
3

More than 5 years have passed since last update.

Windows 8.1 + Cygwin + Vagrant で CentOS 7.0 に PHP 7 をインストールする

Last updated at Posted at 2016-11-07

CentOS 7.0 の VagrantBox 落とすところからそれに PHP 7 入れるまでをやってみる。
打ったコマンドと出会ったエラーぜんぶ書く。
といっても標準の PHP 5 を 7 にするための rpm コマンド実行時に cURL まわりで詰まったくらいだった。

環境

  • Windows 8.1
  • Cygwin 2.6.0
  • VirtualBox 5.0.28
  • Vagrant 1.8.1

やりたいこと

とりあえず CentOS 7.0 を入れて PHP 7 を使えるようにする。
お遊び開発用。

やったこと

VagrantBox をダウンロード → 起動する

A list of base boxes for Vagrant - Vagrantbox.es

test って名前で作る。add 時の URL は上記サイトからコピー。
box 落とせたらvagrant upで起動。ssh で入る。

$ vagrant box add test https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
$ vagrant init test
$ vagrant up
$ vagrant ssh
[vagrant@localhost ~]$

試しにファイル一覧を見てみる。

[vagrant@localhost ~]$ ll
insgesamt 24
-rwxr-xr-x 1 vagrant vagrant 450 16. Jul 2015  base.sh
-rwxr-xr-x 1 vagrant vagrant 118 16. Jul 2015  cleanup.sh

このinsgesamtって何?

Vagrant の言語設定を英語にする

と思ったらドイツ語らしい。そういえばvagrant upのときにうわーって出てきてたメッセージにもウムラウトついてた。
言語設定を英語に直して再起動。

[vagrant@localhost ~]$ sudo localectl set-locale LANG=en_US.utf8
[vagrant@localhost ~]$ exit
$ vagrant reload
$ vagrant ssh
[vagrant@localhost ~]$ ll
total 24
-rwxr-xr-x 1 vagrant vagrant 450 16. Jul 2015  base.sh
-rwxr-xr-x 1 vagrant vagrant 118 16. Jul 2015  cleanup.sh

なったっぽい。

PHP 入れてみる

ここから全部vagrant sshで入ってからやる。
見づらいのでプロンプトの[vagrant@localhost ~]$をはしょって単に$と表記。

CentOS に PHP 入れる、的なのでぐぐって最初にひっかかる方法をまずやる。

$ sudo yum install php php-mbstring

途中でIs this ok [y/d/N]:と聞かれたらyでエンターキーぽち。
データ量の確認らしい。以後ぜんぶイエスマン。

終わったらちゃんと入ったか確認。

$ php -v
PHP 5.4.16 (cli) (built: Aug 11 2016 21:24:59)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

5 が入ってた。7 がいい。

PHP 7 の yum リポジトリを追加する

この記事にしたがってやり直し。
CentOS7にPHP7をyumでインストールする - Qiita

CentOS が最初から持ってるインストーラーが PHP 5 だから外から PHP 7 用のを落としてくる、みたいなイメージなのか?
そのために Remi というのが必要で、そのために EPEL というのが必要?

とにかく叩く。

$ sudo yum install epel-release

EPEL なるものは無事に入ったらしい。が、

$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
Retrieving http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
curl: (56) Recv failure: Connection reset by peer
error: skipping http://rpms.famillecollet.com/enterprise/remi-release-7.rpm - transfer failed

Remi は何やら失敗したっぽい。接続切れてる? peer って誰。
とりあえずこれとたたかう。

curl: (56) Recv failure: Connection reset by peer とたたかう

cURL はコマンドからいんたねっとにリクエスト送るやつ。そいつがうごいてない。
一緒にいた友人に調べてもらったところ、Vagrant 自体のいんたねっと通信に問題は無さそうとのこと。
でも cURL が何かに失敗している……。

11/17 追記:cURL の入れ直した(?)らできた(?)

本記事執筆当時やんややって結局できたんですけど(後述)、何やら余計なことやってたみたいで。
原因よくわかんないままながら cURL 入れ直したらできた。
参考記事こちら。
How to install curl 7.37.0 with CentOS 6.5 - Qiita

$ sudo wget https://curl.haxx.se/download/curl-7.51.0.tar.gz
$ sudo tar -xzf curl-7.51.0.tar.gz
$ cd curl-7.51.0
$ sudo ./configure --enable-libcurl-option
$ sudo make
$ sudo make install

続きは「PHP 7 の yum リポジトリを追加する(再)」
画面右の目次からどうぞ。

以下、古いの

ぐぐってたらあたったこのエントリがそれっぽいかも、と思って試す。
【PHP】cURLをインストールして有効化する手順 | Step On Board

通信方式みたいな話らしい。
rpm コマンドを実行したとき、いまだと cURL は NSS というのを使うけど、それを OpenSSL というのを使うようにしてあげる?
(11/8 追記:これ関係ないらしい。何がほんとの原因だったかは追って調べます><)

OpenSSL のインストール

URL はここから。(ファイル名を右クリックでリンク先アドレスコピー)
/source/index.html

$ sudo wget https://www.openssl.org/source/openssl-1.0.2j.tar.gz
$ sudo tar -xzf openssl-1.0.2j.tar.gz
$ cd openssl-1.0.2j
$ sudo ./config --prefix=/usr/local/openssl shared zlib
$ sudo make
$ sudo make install

cURL の再インストール

URL はここから。
cURL - Download

$ cd /usr/local/src/
$ sudo yum install libssh2-devel
$ sudo wget https://curl.haxx.se/download/curl-7.51.0.tar.gz
$ sudo tar -xzf curl-7.51.0.tar.gz
$ cd curl-7.51.0
$ sudo ./configure --prefix=/usr/local --with-ssl=/usr/local/openssl --with-libssh2

とりあえず全部打ったけど config だけ書き換えればインストールし直さなくてもいいのかも。

PHP 7 の yum リポジトリを追加する(再)

ルートディレクトリに戻って再開。

$ cd /
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Remi もなんとかなったっぽい。
いざ PHP 7 を……

$ sudo yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd
Complete!
$ php -v
PHP 7.0.12 (cli) (built: Oct 13 2016 18:02:31) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

できたー!

補足:上記 cURL 問題

cURL を使わずに rpm リポジトリを追加する(やってない)

今回やらなかったけどメモ。
上で騒いだ件、打ちたかったこのコマンド↓

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

でそもそも何をしたかったかというと、rpm 形式のファイルをいんたねっとに探しに行って云々したかった。
で cURL が切れるから探しに行けなかった。

cURL にこだわらなくてもファイルが手に入ればいいのでは。
ホスト PC のブラウザで上記 URL にアクセスすると確かに remi-release-7.rpm が手に入る。
そやつを CentOS に移して云々すればいいんじゃないかという説。

参考になりそう

おわり

まあひとまずできたので今日のところはこれでおっけー。

すごくどうでもいいことだけど本記事は下記エントリを意識してたりする。
今回の作業時間は2時間30分くらいでした。
JavaScriptでバグが消えるまで - ジンジャー研究室

5
3
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
5
3