LoginSignup
1
0

More than 5 years have passed since last update.

VMwareでPHP(symfony)開発環境作るまでのメモ

Last updated at Posted at 2016-05-13

作業メモ。すっげー長いよ。
VMWareに設定。

CentOSのインストール

CentOSのイメージファイルを手に入れる

参考:http://www.server-world.info/query?os=CentOS_7&p=download

最小構成(minimal)ではなくDVD.iso入れます。
のでDL。

VMWareにインストール

普通に新規作成でやる。
やってみてわかんなかったこと↓

  • Linuxのパーソナライズの「フルネーム」がよくわからん。(とりあえずユーザー名と同じにした)
  • rootは使えない(rootユーザーは存在するので、別ユーザーを入れないといけないっぽい)
  • 仮想ディスクは単一ファイルとして格納
  • キーボードは「日本語」がいい

これで起動してみる。
VMwareから起動する。
できた。

※追記
フルネームはWindowsでいうところのアカウント名みたいなやつだそうです。
(人から聞きました)

追記

Linuxのパーソナライズについて

http://linux.oboe-gaki.com/archives/000372.html

フルネームはユーザー名につけられる名前っぽい。
ユーザー名で設定できるのは一般ユーザーだそうな。
なるほど。

仮想ディスクの単一ファイル

分けるとコピーするときコピー漏れが出ちゃったりして大変なのでこっちを選ぶ方がいいらしい。
分割のメリットまでは不明。

Apacheのインストール

参考:http://weblabo.oscasierra.net/installing-apache-with-yum/

yum install httpd
  • 何にも設定してないのに外に取りにいけるのは、ネットワークのアダプタ1が自動で出来てるから。
  • アダプタはNAT2が1個のみ。外にいけるけど入れない状態。
  • H/WもVMWareが自動認識してくれる。

問題発生?(CentOSの問題)

一旦パワーオフ、それで続きをやろうとしてこんなメッセージが出る

対応するデバイスがホストに存在しないため仮想デバイスide1.0に接続できません

よくわからないので「いいえ」→もっかい起動し直す→起動時にカーネルを選択する画面が出てくる。
とりあえず適当に選択したら前まで英語表記だったのに日本語で出るようになったよ!
しかもなんか知らんけど前まで英語名でしか表示しなかったのに

エラーメッセージについて

参考:http://ameblo.jp/hitomazu-kyuukei/entry-10958890508.html

どうやら光学ドライバにつながらないよ!ってことらしい。
まあ使わないし「いいえ」でいいか……。
使うことになったら調べる。

カーネルの選択画面について

参考:http://knowledge4linux.blogspot.jp/2014/11/centos7rhel7kernel.html

参考サイトの一番上と下のカーネルだけあるっぽい。
たぶん下の方が英語のカーネル……??
→起動してみたらそんなこともなかった
resqueモードのやつっぽいな…。
これは毎回出るのかな??
でもほかのVM(人からもらったやつ)だと出ないなあ。

とりあえず起動はできるので放置。
あとでまた調べる機会あったら調べる。
→やってみたけどまだ選択画面出る。

httpdの自動起動設定

とりあえず続き!
起動時に自動で起動できるようにする。

chkconfig httpd on

再起動して確認→自動起動OK!
細かい設定はあとで。

Apacheをソースコードからビルドする

参考:http://weblabo.oscasierra.net/install-apache24-1/
そういえば「Apachはソースコードからビルドしてね」って指示だったんだ。
てへへ。

yumでインストールしたApacheをアンインストール

yum remove httpdで一旦インストールしていない状態に戻す。

インストールに必要なモノをインストール

yum install gcc make pcre pcre-devel wget

APRのインストール

APR (Apache Portable Runtime) というものをインストールする必要があります。 APR は OS の違いを吸収してくれるライブラリです。
というわけで入れてみましょう。

今は1.5.2が最善のバージョンっぽい。

# cd /usr/local/src
# wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//apr/apr-1.5.2.tar.gz
# tar -xvzf apr-1.5.2.tar.gz
# cd apr-1.5.2
# ./configure --prefix=/opt/apr/apr-1.5.2
# make
# make test
# make install

cd /usr/local/src→インストールしたいディレクトリへ移動
wget→URLからデータをダウンロード
tar -xvzf→解凍して展開
./configure→インストール時のMakefile作成スクリプト
make→Makefileとかのコンパイルとか自動でしてくれる
make test→動作検証
make install→インストール

APR-utilのインストール

1.5.4が最新ぽい。

# cd /usr/local/src
# wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.5.4.tar.gz
# tar -xvzf apr-util-1.5.4.tar.gz
# cd apr-util-1.5.4
# ./configure --prefix=/opt/apr-util/apr-util-1.5.4 --with-apr=/opt/apr/apr-1.5.2
# make
# make test
# make install

コマンドの詳細は前項でやったので略。

Apacheのインストール

ソースコードのダウンロード

最新版は2.4.20な模様。

# cd /usr/local/src
# wget http://ftp.jaist.ac.jp/pub/apache//httpd/httpd-2.4.20.tar.gz
# tar -xvzf httpd-2.4.20.tar.gz

コンパイルとインストール

# cd /usr/local/src/httpd-2.4.9
# ./configure --prefix=/opt/httpd/httpd-2.4.20 --with-apr=/opt/apr/apr-1.5.2 --with-apr-util=/opt/apr-util/apr-util-1.5.4
# make
# make install

この時make testはできない。→よくわからず??

起動

/opt/httpd/httpd-2.4.20/bin/apachectl start

→これでできた!
が、↓のメッセージが出る。

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

確実にサーバー設定してないからlocalhost.localdomainが取れないよ!設定して!みたいなことか。

/opt/httpd/httpd-2.4.20/conf/httpd.confで設定する。

httpd.configの設定

参考:http://kazmax.zpp.jp/apache/apache1.html

①UserとGroupを設定する

デフォルトだとUser, Groupにdeamonが設定されている。
セキュリティ的には専用のものを用意した方が良いらしい。
(他のシステムでもdeamonを使う可能性があるので)

※deamonグループ:Linuxのサーバー用グループ

作ろうとしたらapacheさんが既にいるみたいなので、設定。
 

②ServerNameを設定する。

localhost:80と設定してみる。

 

③Options Indexesの設定

Directory "/うんちゃら/htdocs/"の下にあるOptionsから'Indexes'を削除する。

ディレクトリにアクセスしたときに中身が見えちゃうApacheのアレを抑制するため。
CentOSをDLするときに見えるやつ。
あれApacheだったんか。

-Indexesでもよい模様。今回は消しました。

wget -d localhost:80で確認できる。

 

④ServerTokensの設定

サーバーの応答ヘッダに表示する内容の設定。

ServerTokens Prodを追加。(ファイルになかったので)

これを追加すると、Apacheであることぐらいしか相手に伝わらなくなる。

wget -d localhost:80で確認できる。

confファイルがちゃんと書けたか確認

/opt/httpd/httpd-2.4.20/bin/apachectl configtest

これでSyntax OKが出たらOK。

Serviceへの登録

長いの打つの大変じゃね?
service うんちゃらでやりたい。

参考:http://kazmax.zpp.jp/apache/apache2.html

shell作るのか…。

cd /etc/init.d/
vim apache ※shell作成は別途
chmod 755 apache
chkconfig --add apache

最終的に作ったshell

#!/bin/sh
#
# chkconfig: 35 85 15
# descripution: apache 2.4.20

apachectl="/opt/httpd/httpd-2.4.20/bin/apachectl"

case "$1" in
        start|stop|restart|graceful|graceful-stop|configtest|help)
                $apachectl $@ ;;
        *)
                ;;
esac

status系とstartsslは後で調整するので入れてない。
chkconfig: 35 85 15の部分はデーモン制御スクリプトの実行順らしいです。
→あとで調べる。

mysqlインストール

yumを使ってインストール

yum install mysql-server入らない。

理由判明→http://www.kakiro-web.com/linux/mysql-install.html

CentOS7になり、標準リポジトリからMySQLはインストールできなくなっています。MySQLの公式サイトからRPMをダウンロードすることで、新しいバージョンのインストールを行うことができます。

マジですか。ないんですね。
これはまたソースコードから取り込むやつっぽい。

ソースコードからインストール

参考:http://eeggs.hatenablog.com/entry/2015/12/21/111438

rootユーザーで実施。

ユーザー作る

groupadd mysql
useradd -g mysql -s /sbin/nologin mysql

実はこの方法に至るまで七転八倒してたので、cmakencurses-develmariadb-libsは既に入れてた。
この辺入れてないと次の工程でエラーになるだけなので、まあめんどくさいけどエラー見ながら後で入れてもいい。

インストールする

cd /usr/local/src
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.12.tar.gz
tar xvzf mysql-5.7.12.tar.gz
cd mysql-5.7.12
cmake . -DDEFAULT_CHARSET=utf8mb4 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/src
make
make install

この手順を基に別のものを作成してたんだけど、makeの前にこんなエラーが発生した。

CMake Error: your CXX compiler: “CMAKE_CXX_COMPILER-NOTFOUND” was not found. Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
yum install gcc-c++

でかいけつした。

my.cnfの設定

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf

viよりvimが好き。
下記設定追記。

[client]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
explicit_defaults_for_timestamp = 1
default_password_lifetime = 0

初期化

mysql_install_dbは5.7から非推奨。
元々5.7から使ってるのでむしろmysql_install_db使ったことない。

chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 
--user=mysql

パスワード変更

--initialize-insecureがパスワードを設定しないオプションなので、パスワード設定する。

su mysql
/usr/local/mysql/bin/mysqld_safe --user=mysql &
/usr/local/mysql/bin/mysql -u root

ここでmysqlユーザーにsuしてからやってみたけど、rootでも普通に起動できるの確認したった。

mysql> use mysql; 
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'
mysql> exit

エラーでた
解決策:http://certate.dip.jp/?p=478

[root@localhost mysql-5.7.12]# /usr/local/mysql/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
[Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
[Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
[ERROR] --initialize specified but the data directory has files in it. Aborting.
[ERROR] Aborting

自動起動できるようにする

参考:http://qiita.com/dribble13/items/20c769f1e94eceac0186

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on

chkconfig --listを打って下みたいになればOK

mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off

または、service mysql statusと打って下みたいになってればOK

SUCCESS! MySQL running (XXXX)

パスワード設定後は下記のコマンド入力後、パスワードを入力する。

/usr/local/mysql/bin/mysql -u root -p

リブートで確かめる。
失敗。起動しない。
手動起動するとこうなる

Starting MySQL.The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

/etc/my.cnfに下記内容追加

datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock

もっかいリブートして確認!→できた☆

PHPのインストール

現時点でsymfony3.0.5が最新の安定バージョンみたいなので、これに合わせてPHPをインストールしようず!

https://packagist.org/packages/symfony/symfonyで確認すると、
phpは5.5.9以上ならOKらしい。
7.0.6をいれてみまんぼ。

以下、参考:http://docs.hatenablog.jp/entry/php7

ソースダウンロード→展開

/usr/local/srcへ。

wget http://jp2.php.net/get/php-7.0.6.tar.gz/from/this/mirror -O php-7.0.6.tar.gz
tar zxvf php-7.0.6.tar.gz

いまいちこういうURLってどうやって知るのかわからんぞう。

移動。

cd php-7.0.6/

http://www.phppro.jp/phpmanual/install_linux.php

今回は、Apacheのモジュールとして組み込む、日本語環境が使用できて、PostgreSQLとMySQLが使用できるようにします。下の例はApache2がインストールされている場合のものです。

とりあえず最低限はこれでいいのかな?

下記コマンドを打つ

./configure --with-apxs2 --enable-mbstring  --enable-zend-multibyte --with-pgsql --with-mysql

エラー

Configuring SAPI modules
checking for Apache 2.0 handler-module support via DSO through APXS... 

Sorry, I cannot run apxs.  Possible reasons follow:

1. Perl is not installed
2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs
3. Apache was not built using --enable-so (the apxs usage page is displayed)

The output of apxs follows:
./configure: line 6208: apxs: command not found
configure: error: Aborting

APXSがないって出る。

http://tazakazushi.net/apache_no_apxs.html

http-devel入れればよいぽい。

yum install httpd-devel

もう一回./configureやります。
はいエラー。

configure: error: xml2-config not found. Please check your libxml2 installation.

(http://d.hatena.ne.jp/yohei-a/20100426/1272275098)
[http://d.hatena.ne.jp/yohei-a/20100426/1272275098]
より、
libxml2-develを入れればよいぽい。

yum install libxml2-devel

もっかい。
はいエラー。

configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path

そもそも元のコマンドで--with-pgsqlいらんやん。
と気づく。

./configure --with-apxs2 --enable-mbstring  --enable-zend-multibyte --with-mysql

うまくいったけど、警告で
WARNING: unrecognized options: --enable-zend-multibyte, --with-mysql
と出る。
mysqlないのん?

http://php.net/manual/ja/configure.about.php

調べたら
./configure --with-apxs2
でいいっぽい?

後で追加できる。→後でコンパイルすればOK
でもこのときは、すべてのオプションを書く必要あり。

削除の場合はmake cleanでキャッシュ消してからもっかいやる。

成功するとconfig.niceができる。
追加する場合はconfig.nice [オプション]で追加できちゃったりする。

make
make test
make install

こういう書き方できるらしい。
てかmake test飛ばしても問題ないそうな。

./configure && make && make install

&&使うと失敗すると止まるらしい。
パイプは標準出力だけど、これはコマンドの実行結果をみてやってくれる。

確認する。

php -v

おk

PHP 7.0.6 (cli) (built: May  9 2016 02:39:54) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

設定が抜けてる場合→iniファイルを変更してApache再起動
ライブラリが抜けてる場合→コンパイルをし直す。

symfony3のインストール

公式:http://symfony.com/download#symfony1
参考:http://qiita.com/ma2saka/items/2cd6cb3a8007fdf9fe2e

sudo curl -LsS http://symfony.com/installer -o /usr/local/bin/symfony
sudo chmod a+x /usr/local/bin/symfony
symfony --verion

エラー。

Fatal error: Uncaught PharException: zlib extension is required for gz compressed .phar file "/usr/local/bin/symfony" in /usr/local/bin/symfony:9
Stack trace:
#0 /usr/local/bin/symfony(9): Phar::mapPhar('default.phar')
#1 {main}
  thrown in /usr/local/bin/symfony on line 9

必要な物が足りないようだ……。

yum search zlib
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
===================================== N/S matched: zlib =====================================
jzlib.noarch : Re-implementation of zlib in pure Java
jzlib-demo.noarch : Examples for jzlib
jzlib-javadoc.noarch : API documentation for jzlib
perl-Compress-Raw-Zlib.x86_64 : Low-level interface to the zlib compression library
perl-IO-Zlib.noarch : Perl IO:: style interface to Compress::Zlib
zlib-devel.i686 : Header files and libraries for Zlib development
zlib-devel.x86_64 : Header files and libraries for Zlib development
zlib-static.i686 : Static libraries for Zlib development
zlib-static.x86_64 : Static libraries for Zlib development
zlib.i686 : The compression and decompression library
zlib.x86_64 : The compression and decompression library

調べてみたら入ってた。(zlib-devel.x86_64)

オプションどうつければいいかチェック

./configure --help | grep zlib
  --with-zlib=DIR         Include ZLIB support (requires zlib >= 1.0.9)
  --with-zlib-dir=<DIR>   Define the location of zlib install directory
  --with-zlib-dir=DIR     GD: Set the path to libz install prefix
  --with-zlib-dir=DIR     PDO_MySQL: Set the path to libz install prefix
  --with-zlib-dir=DIR     ZIP: Set the path to libz install prefix
  --with-zlib-dir=DIR     mysqlnd: Set the path to libz install prefix

こんな感じに。

どれやねん……。
とりあえずこうしてみる。
ちなみにこれな、phpがあるディレクトリの下じゃないとアカンねんて!
てかmakeコマンドとかその辺めっちゃわけわからん。
ちな、ここな→/usr/local/src/php-7.0.6

./configure --with-apxs2 --with-zlib --with-zlib-dir=/usr
make && make install

確認

symfony --verion
 Symfony Installer (1.5.1)
 =========================

 This is the official installer to start new projects based on the
 Symfony full-stack framework.

 To create a new project called blog in the current directory using
 the latest stable version of Symfony, execute the following command:

   symfony new blog

 Create a project based on the Symfony Long Term Support version (LTS):

   symfony new blog lts

 Create a project based on a specific Symfony branch:

   symfony new blog 2.3

 Create a project based on a specific Symfony version:

   symfony new blog 2.5.6

 Create a demo application to learn how a Symfony application works:

   symfony demo

 Updating the Symfony Installer
 ------------------------------

 New versions of the Symfony Installer are released regularly. To update your
 installer version, execute the following command:

   symfony self-update

できた?
ここから新規プロジェクトとか作るときにインストールされる?っぽい。

これはインストーラっぽい。
ここから新しいの作るよーって感じか

あ、でもdemo以外だとバージョン指定できるぽいね。
それはおいおい。

追記

別サーバーで構築しようとしてたらこんなエラー

[GuzzleHttp\Exception\RequestException]                                                            
  Error creating resource: [message] fopen(): Unable to find the wrapper "https" - did you forget t  
  o enable it when you configured PHP?                                                               
  [file] phar:///usr/local/bin/symfony/vendor/guzzlehttp/ringphp/src/Client/StreamHandler.php        
  [line] 406                                                                                         
  [message] fopen(https://get.symfony.com/symfony.version): failed to open stream: No such file or   
  directory                                                                                          
  [file] phar:///usr/local/bin/symfony/vendor/guzzlehttp/ringphp/src/Client/StreamHandler.php        
  [line] 406                                                                                         
  [message] Undefined variable: http_response_header                                                 
  [file] phar:///usr/local/bin/symfony/vendor/guzzlehttp/ringphp/src/Client/StreamHandler.php        
  [line] 407

openssl入れる。
develってのが足りない場合がおおいらしい。

yum install openssl-devel
make && make install

追記2

pdoが足りなかった。

php -i | grep configure | sed -e 's/ /\n/g'

これでチェックしたけどやっぱり足りなかった。
もっかい。

./configure --with-apxs2 --with-zlib --with-zlib-dir=/usr --with-openssl --with-pdo-mysql

これでまたmakeする。

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