LoginSignup

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

【Symfony2】本番環境公開手順

Last updated at Posted at 2016-08-12

実際にサーバー上でSymfony2を利用するための、開発環境構築について手順をメモ書き。それぞれ作業環境が異なるが現在サーバー上に何がインストールされているのか等、結構面倒な作業も多い。

大きくざっくりと手順を説明すると3つほどある。ただしPHPのバージョンについては、バージョンが5.4以上であれば作業の必要なし。mb_stringやTimeZoneなどは最低限設定は必要。

PHPのバージョンは5.4以上

Symfony2のインストーラーを使って環境構築する場合はPHPのバージョンが5.4以上である必要がある。仮にバージョンが古い場合は、この手順を実行してバージョンアップすべし!!

/**
 * バージョン確認
 */
php -v

/**
 * インストール済みのパッケージを確認
 */
rpm -qa | grep php

/**
 * 必要なyumを取得
 */
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/ius-release-1.0-11.ius.el6.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

/**
 * 古いPHPを削除
 */
yum erase php php-devel php-common php-cli php-pear php-xml

/**
 * 新しいバージョン(ver5.4以上)をインストール
 */
yum install php54 php54-devel php54-common php54-cli php54-pear php54-xml php54-pdo

ちなみに私は上記手順で5.4にアップしたが5.5にしてもらってもOK。私の環境ではエラーが出たので5.4にした。

Symfony2インストーラを実行

特にエラー等が発生しなければ、コマンドで指定したディレクトリが作成されるはず。

コンポーザーでビルド実行

Symfony2ではweb配下に、app.phpとapp_dev.phpのフロントコントローラが用意されている。app_dev.phpで動作させる場合は、デバック情報など開発に役立つ細かい情報が出力される。本番環境の場合はapp.phpを利用。

/**
 * 環境変数の設定
 * 開発環境:dev
 * 本番環境:prod
 */
export SYMFONY_ENV=dev
export SYMFONY_ENV=prod

/**
 * ビルド
 */
php composer.phar run-script post-update-cmd

/**
 * ディレクトリの共通化
 */
APACHEUSER=`ps aux | grep -E '[a]pache|[h]ttpd' | grep -v root | head -1 | cut -d\  -f1`
setfacl -R -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs
setfacl -dR -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs

コンポーザーが存在しない場合はコンポーザーをインストール。上記コマンドで開発・本番それぞれビルドが可能。

Welcomeページにアクセスしてみる

bin配下にapp.shというファイルを作成し以下内容を記載。

#!/bin/bash
NLS_LANG=Japanese_Japan.JA16EUC
export NLS_LANG
LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
export LD_LIBRARY_PATH
TNS_ADMIN=/usr/lib/oracle/12.1/client64
export TNS_ADMIN
SYMFONY_ENV=prod
export SYMFONY_ENV

cd "`dirname "$0"`"
cd "../"
execCount=0
requestExec=1

case "$@" in
    retry)
         requestExec=`expr $requestExec + 1`
    ;;
esac

while [ $execCount -lt $requestExec ]
do
    /usr/local/bin/php app/console $@ --no-debug 2>&1 | logger -i -p local1.info

    if [ $? -eq 1 ]
    then
        break;
    fi
    execCount=`expr $execCount + 1`;
done

適当なバンドルを作成して、アクセスできるか確認してみる。

今後開発を行う上で、phpファイルの改修であればビルドを実行する必要はありません。ただしymlやtwigファイルを改修した場合は、ビルドを行う必要があるのでコンポーポーザを実行する必要があり。ディレクトリの共通化は最初の1回だけでOK。

Apacheのmod_rewriteを有効化

フロントコントローラ(app.php)をURLで省略するために、Apacheのmod_rewriteを利用する。まずはhttpd.confファイルでhtaccessを有効化。

<Directory "/home/htdocs/Symfony2/web">
・
・
・
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit

    AllowOverride All
・
・
・
</Directory>

上の場合ドキュメントルートのSymfony2配下に.htaccessファイルを作成し、以下のように記述。Apacheを再起動すれば動きます。

/**
 * .htaccessファイル
 */
<IfModule mod_rewrite.c>
     RewriteEngine On
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteRule ^(.*)$ app.php
</IfModule>
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