Symfony 3 DoctrineMigrationsBundleの使い方

この記事では、DoctrineMigrationsBundleのセットアップ手順と、マイグレーションの作成・適用手順についてまとめてみました。

Symfonyは、デフォルトではマイグレーション機構が含まれていません。
また、doctrine:schema:update --forceコマンドを使ってデータベースにスキーマを反映することができますが、デフォルトではProduction環境で利用できないためマイグレーションを導入したほうが無難です。

Symfonyでマイグレーションを実装するには、DoctrineMigrationsBundle (Github: doctrine/DoctrineMigrationsBundle)を導入します。

インストールと設定

composerでパッケージを追加

$ composer require doctrine/doctrine-migrations-bundle "^1.0"

Bundleの読み込みを追加

// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        //...
        new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
    );
}

“Symfony 3 DoctrineMigrationsBundleの使い方” の続きを読む

Facebook SDK for PHP (facebook/graph-sdk) v5.xのインストールと使い方まとめ

PHP用Facebook SDK v5を利用してFacebookアプリを作成する最小限の手順です。
Github: facebook/php-graph-sdk

以前に書いた記事「Facebook PHPをComposerで利用するには」の内容が、古くなっていたので、改めて試してまとめました。

SDKのインストール

Instllationに従い、facebook/graph-sdkをcomposerでインストール

$ composer require facebook/graph-sdk

facebook/graph-sdkが含まれる以下のcomporser.jsonが生成される

// composer.json
{
  "require" : {
    "facebook/graph-sdk": "^5.6"
  }
}

ログインサンプル

php-graph-sdk/facebook_login.mdのサンプルを実装して動作を確認してみます。
“Facebook SDK for PHP (facebook/graph-sdk) v5.xのインストールと使い方まとめ” の続きを読む

Let’s encryptでUbuntu 16.04のApacheをhttps化するには

Let’s encryptとは

無料で使えるSSL認証局で、Internet Security Research Group (ISRG)という団体が提供しています。

ISRGには、Current Sponsors – Let’s Encrypt – Free SSL/TLS Certificatesを見ると、しっかりスポンサーがついているので安心して使えそうです。
SAKURA Internetなど日本の企業もスポンサーも居ます。

証明書の発行とセットアップは、公式に提供されている Certbot コマンドで行います。

証明書の期限は90日で、エージェントが自動更新を行ってくれます。
ということは、AWSのELBのように、Let’s encrypt非対応のミドルウェアを利用している場合は、更新の仕組みを自分で用意する必要があります。

また、さくらのレンタルサーバなどLet’s encryptに対応していてるホスティングサービスの場合、サービスのコントロールパネルで設定が可能でセットアップが簡単にできたりするそうです。

さくらインターネットの「さくらのレンタルサーバ」、コントロールパネル上の簡単操作で無料SSL証明書「Let’s Encrypt」を設定可能に~「Let’s Encrypt」のシルバースポンサーとして参画し、常時SSL化推進に貢献~
提供は、10/17からのようです。

“Let’s encryptでUbuntu 16.04のApacheをhttps化するには” の続きを読む

SymfonyでJS、SCSSをWebpack encoreでビルドするには

Symfonyで、JavascriptやCSSなどフロントエンドのアセットを管理する仕組みとして、以前はAsseticが用意されていましたが、Webpackを利用するWebpack Endoreに置き替わり今時な構成になりました。

Laravelで言うところのElixirにあたります。

Webpack Encoreの利用方法については、公式ドキュメント Managing CSS and JavaScript に一通りの使い方が載っています。
また、Symfonyのでもアプリ symfony/symfony-demo が、Webpack Encoreを使った構成になっているので、こちらのソースを読むほうが解りやすいかもしれません。

この記事では、公式ドキュメントの例、First Example を試してみた手順をまとめいます。
公式ドキュメントでは、nodeのパッケージ管理システムにyarnを使っていますが、私は普段まだnpmを使っているので、npmを利用してパッケージをインストールしています。

プロジェクトの構成

symfony/symfony-demo を参考に、以下のようなディレクトリ構成にします
“SymfonyでJS、SCSSをWebpack encoreでビルドするには” の続きを読む

React x TypeScript x Webpackの開発環境でjQuery (Bootstrap)を使うには

TypeScriptで記述しているReactアプリケーションをWebpackでビルドしている開発環境で、jQueryライブラリをあわせて使う構成について調べたことをまとめてみました。

ここでは、前回の記事 「TypeScript,WebPackを利用したReactJS開発環境セットアップまとめ」で構築したプロジェクトに、jQuery Bootstrapを追加してみます。

jQueryは、TypeScriptのコンパイルはimportで通りますが、そのままでは、jQueryがbundle.jsに含まれません。
jQueryをbundle.jsに含めるためには、ProvidePluginを利用することで解決できます。
また、jQuery本体については、CDNからjsを含めても依存の問題は発生しにくいので、scriptタグで指定してしまうのが良い気もします。

ReactでBootstrapを使いたい場合は、React-Bootstrapを使うほうが筋が良いと思いますが、ここではあえて本家のBoostrapを利用してみます。

パッケージのインストール

jqueryとbootstrap、その型定義をインストールします
また、bootstrapのPopoverはpopper.jsに依存しているのでpopper.jsも追加しておきます

$ npm install --save jquery @types/jquery bootstrap @types/bootstrap popper.js

“React x TypeScript x Webpackの開発環境でjQuery (Bootstrap)を使うには” の続きを読む

React x SCSS x Webpack開発環境セットアップ手順まとめ

スタイルシートをSCSSで、JSはES6で記述するReactJSのアプリケーションを、Webpackでビルドする手順についてまとめてみました。

スタイルシートはバンドルされたJSに含めず、ExtractTextWebpackPluginを利用してファイルを分けるようにしています。

この記事を試したnodeのバージョンは以下の通りです

$ node -v
v6.9.4
$ npm -v
3.10.10

プロジェクトの構成とnpmの初期化

プロジェクトのディレクトリ構成は以下のようにします

“React x SCSS x Webpack開発環境セットアップ手順まとめ” の続きを読む

TypeScript,WebPackを利用したReact開発環境セットアップまとめ

TypeScriptの公式チュートリアル React & Webpack · TypeScriptをベースに、TypeScriptで記述したReactJSアプリをWebpackでビルドする開発環境の構築手順についてまとめています。

nodeのバージョン

この記事では、以下のバージョンのnode.jsを利用しました。

$ node -v
v8.5.0
$ npm -v
5.3.0

プロジェクトのディレクトリ構成を準備

プロジェクトの構成は、以下のようにsrcディレクトリにReactJSのコンポーネントを置き、distディレクトリをWebpackのビルドターゲットとします。

以下コマンドで、プロジェクトのディレクトリ構成を作成します

“TypeScript,WebPackを利用したReact開発環境セットアップまとめ” の続きを読む

Symfony 3.x FOSRestBundleとJMSSerializerBundleでREST APIを実装する

FOSRestBundleと、シリアライザーとしてJMSSerializerBundleを利用し、SymfonyでREST APIを実装する手順についてまとめました。

FOSRestBundleは、非常に多機能で柔軟な実装が可能ですが、ここではレスポンスフォーマットはjsonのみに対応したシンプルなREST APIを実装する手順について紹介してみます。

バンドルのインストールと読み込み

Step 1: Setting up the bundleに従って以下の手順でインストールします

friendsofsymfony/rest-bundlejms/serializer-bundleをComposerでインストール

$ composer require friendsofsymfony/rest-bundle
$ composer require jms/serializer-bundle

“Symfony 3.x FOSRestBundleとJMSSerializerBundleでREST APIを実装する” の続きを読む

Azure Web AppにデプロイしたPHPからHTTPSサイトにアクセスする

cUrlGuzzleで外部のAPIを利用するアプリケーションをAzure WebAppで動かした場合、証明書が見つからずAPIにHTTPSで接続できない問題が発生します。

HTTPSアクセスする際のSSL証明書の場所は、php.iniのcurl.cainfoに設定しますが、Azure Web Appではd:\home\site\ini/settings.iniファイルで設定できます。

公式ドキュメントは、Azure App Service Web Apps での PHP の構成方法
「PHP_INI_SYSTEM 構成設定の変更」を参照ください。

settings.iniの場所をアプリ設定で指定

[アプリケーション設定] > [アプリの設定]に、キー PHP_INI_SCAN_DIR、値 d:\home\site\ini を追加します。

guzzle-on-azure-webapp
“Azure Web AppにデプロイしたPHPからHTTPSサイトにアクセスする” の続きを読む

AnsibleでUbuntu 14.04にLAMPをセットアップ

管理ホスト、対象ホスト共にUbuntu 14.04の環境でAnsibleを利用する手順について調べたことをまとめました。

インストール、動作確認、LAMP環境構築の順に解説しています。

LAMP環境を構築するPlaybookについてはGithubに公開していますので、全体のコードはこちらを参照ください:
https://github.com/hrendoh/ansible-lamp-simple

動作確認は、Ansibleの実行をVagrant上で、環境構築の対象サーバーはAWS EC2インスタンスで行っています。
Ansibleを実行する管理ホスト用のVagrantfileもGithubプロジェクトにいれてあるので、プロジェクトをClone後、この記事の内容をすぐに試せるようにしています。

また、LAMP構築のPlaybookは、公式のサンプル集 ansible/ansible-examples のLAMPサンプル lamp_simple をUbuntu 14.04用に修正したものになります。
CentOS、RHELを利用の場合は、公式のPlaybookが利用できます。

インストール

Ubuntu 14.04にAnsibleをインストールします。

デフォルトのAptリポジトリからインストールすると古い1.5.xがインストールされてしまうので、公式のPPAリポジトリを追加してインストールします。

$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible

“AnsibleでUbuntu 14.04にLAMPをセットアップ” の続きを読む