AWS Lightsail + bitnami に自作アプリケーションを作って共存させる + ドメイン振り分け設定

2018-08-18
amazon%20lightsailphpapachewordpressamazon%20awsbitnami
    

目次

はじめに

lightsail_logo.pngAWS Lightsailでbitnami WordPressのイメージを選択してインスタンスを立てた場合、 デフォルトのアプリケーションとしてWordPressとphpmyadminが利用できるようになっています。

これに加え、 http://設定したドメイン/ (場合によってはhttp://設定したドメイン/wordpress/)でwordpressに、 http://設定したドメイン/phpmyadmin/ でphpmyadminに リクエストが行くようになっています。

デフォルトの設定を流用した場合、同じインスタンス内で複数のアプリケーションを建てると、 URLがサブディレクトリを切る形になります。

例 : アプリケーション名をmyappとした時

http://設定したドメイン/myapp/ 個人的にも、SEO的にも、アプリケーションをサブドメインごとに分けたいので、 bitnamiの構成を維持しつつ複数のアプリケーションを起動 + 複数バーチャルホストの設定を行いました。

例 : wordpress

http://blog.設定したドメイン/ 自作アプリ http://myapp.設定したドメイン/ bitnami関連のドキュメントは殆ど英語であり、欲しい記事も見つからなかったので これを記事にしました。

概要

  • 他のbitnamiアプリケーションと同じ設定を流用し、wordpressなどと共存させる
  • バーチャルホストで振り分け設定
  • 自作アプリケーションを作成、PHP-FPM + FCGIで起動

環境

  • AWS Lightsail
  • Ubuntu 14.04.5 LTS, Trusty Tahr
  • PHP 7.0.21
  • Apache 2.4

アプリケーションの作成

デフォルト状態のアプリケーションディレクトリの構成はこのようになっていると思います。

/opt/bitnami/apps
|-- bitnami
|-- phpmyadmin
`-- wordpress

新しく myappとしてアプリケーション用のディレクトリを作成します。

mkdir -p /opt/bitnami/apps/myapp
/opt/bitnami/apps
|-- bitnami
|-- phpmyadmin
|-- wordpress
`-- myapp

また、myapp配下に、conf、htdocsを作成します。

/opt/bitnami/apps/myapp/
|-- conf
`-- htdocs

confはApacheの設定ファイルをおきます。 htdocsは公開するコンテンツ(html/css/js、phpなど)を置くところとします。 phpで動かすことを想定し、 index.phpを作成します。

<?php
echo('Hello World');

次にApacheの設定を行います。

Apache - Virtual Hostの設定

ディレクトリ構成

作成したconfディレクトリに以下のようなApacheの設定ファイルを作成し編集します。

/opt/bitnami/apps/myapp/conf/
|-- certs
|   |-- server.crt
|   `-- server.key
|-- httpd-app.conf
|-- httpd-prefix.conf
|-- httpd-vhosts.conf
`-- php-fpm
    |-- php-settings.conf
    `-- pool.conf

設定ファイルの説明

certs/server.key & server.crt

証明書関連の設定で必要。 詳しくは、 【WordPress】AWS LightsailとCertbotでHTTPS化に挑戦してみた

httpd-app.conf

DocumentRootなどの設定

httpd-prefix.conf

サブディレクトリを切る時に利用する設定ファイル 今回は利用しない

httpd-vhosts.conf

バーチャルホストの設定

php-fpm/php-settings.conf & pool.conf

PHP-FPMの設定

ファイルの修正例

このように書き換えます。myappのところを適宜書き換えます。

httpd-app.conf
<IfDefine USE_PHP_FPM>
	<Proxy 'unix:/opt/bitnami/php/var/run/static.sock|fcgi://static-fpm' timeout=300>
	</Proxy>
</IfDefine>

<Directory '/opt/bitnami/apps/static/htdocs'>
	AllowOverride None
	<IfModule php7_module>
		php_value upload_max_filesize 80M
		php_value post_max_size 80M
	</IfModule>

	<IfDefine USE_PHP_FPM>
	<FilesMatch \.php >
		SetHandler 'proxy:fcgi://static-fpm'
	</FilesMatch>
	</IfDefine>
	<IfVersion < 2.3 >
		Order allow,deny
		Allow from all
		Satisfy all
	</IfVersion>
	<IfVersion >= 2.3>
		Require all granted
	</IfVersion>
</Directory>
httpd-vhosts.conf
<VirtualHost *:80>
	ServerName myapp.設定したドメイン.com
	ServerAlias www.myapp.設定したドメイン.com
	DocumentRoot '/opt/bitnami/apps/static/htdocs'
	Include '/opt/bitnami/apps/myapp/conf/httpd-app.conf'
</VirtualHost>

<VirtualHost *:443>
	ServerName myapp.設定したドメイン.com
	ServerAlias www.myapp.設定したドメイン.com
	DocumentRoot '/opt/bitnami/apps/myapp/htdocs'
	SSLEngine on
	SSLCertificateFile '/opt/bitnami/apps/myapp/conf/certs/server.crt'
	SSLCertificateKeyFile '/opt/bitnami/apps/myapp/conf/certs/server.key'
	Include '/opt/bitnami/apps/myapp/conf/httpd-app.conf'
</VirtualHost>
php-settings.conf
php_value[upload_max_filesize]=80M
php_value[post_max_size]=80M
pool.conf
[myapp]
listen=/opt/bitnami/php/var/run/static.sock
include=/opt/bitnami/php/etc/common-ondemand.conf
include=/opt/bitnami/apps/myapp/conf/php-fpm/php-settings.conf
include=/opt/bitnami/php/etc/environment.conf
pm=ondemand

bitnamiに設定ファイルを読み込ませる

bitnamiの設定ファイルの構成は/opt/bitnami/apache2下にあるconfファイルが 各アプリケーションの設定ファイル(上記で設定したファイル)をIncludeするようになっています。 ここでbitnamiのbitnami-apps-prefix.confを無効化しbitnami-apps-vhosts.confに設定を移します。 bitnami-apps-prefix.confの記述内容は全てコメント化します。

# Bitnami applications installed in a prefix URL
#Include '/opt/bitnami/apps/wordpress/conf/httpd-prefix.conf'
#Include '/opt/bitnami/apps/phpmyadmin/conf/httpd-prefix.conf'

bitnami-apps-vhosts.confに先ほど設定したファイルをIncldueさせます。 phpmyadminは利用しなければ消しても良いと思います。

# Bitnami applications installed in a Virtual Host
Include '/opt/bitnami/apps/wordpress/conf/httpd-vhosts.conf'
#Include '/opt/bitnami/apps/phpmyadmin/conf/httpd-vhosts.conf'
### myapp
Include '/opt/bitnami/apps/myapp/conf/httpd-vhosts.conf'

bitnami apacheを再起動します。

sudo /opt/bitnami/ctlscript.sh restart apache

PHP-FPMの起動

PHP-FPM関連の設定は /opt/bitnami/php/etc下にあります 記述したpool.confを読み込ませます。 具体的には/opt/bitnami/php/etc/php-fpm.confを編集し、 最終行に設定を追加します。

include=/opt/bitnami/apps/myapp/conf/php-fpm/pool.conf

php-fpmとApacheを再起動します。

sudo /opt/bitnami/ctlscript.sh restart php-fpm
sudo /opt/bitnami/ctlscript.sh restart apache

上手くいけばソケットが作成されていると思います。

/opt/bitnami/php/var/run/myapp.sock

参考

https://community.bitnami.com/t/wp-multisite-on-amazon-lightsail/48393/7

ブログ内で紹介する静的コンテンツを置く場所として && 砂場として && 個人で立てているサーバ代をケチりたくて、このようなことを行いました。 現在Lightsailで小さいインスタンスを利用しており、500円/月〜くらいで運用できるので、 こんなケチくさいことするなら新しいインスタンスを立てるなり、EC2を使うなどした方がよっぽど楽だと思います。以上

    

関連記事

AWS Amplify で コンテナベースのデプロイを行い REST API を構築
検証した環境 やってみる 初期準備 パイプラインを確認 終了処理 参考 AWS Amplify で コンテナベースのデプロイを行い REST API を構築した際のメモです。 検証した環境 amplify 5.1.…

PostfixでメールリレーしてMailHogで受信する開発用Dockerコンテナの構築
環境 Dockerイメージ作成 コンテナの起動 telnetで送信テスト phpで送信テスト Postfixのリレーを介して送信されたメールをMailHog(開発用SMTPサーバ)でキャッチするDocker開発環境を構築した際のメモです。 環境 Docker…

php-fpmのステータスページを表示 Apache & htaccess
試した環境 php-fpm の pm.status_path について php-fpmのconfの設定 .htaccess の設定 アクセスしてみる 参考にしたサイト Apache環境で php-fpm のステータスページを htaccess…

Homebrew で php7.4 + Xdebug をインストール
php7.4のインストール Xdebugのインストール php.ini に追記 参考にさせていただいたサイト phpunitのカバレッジを算出を行うためにMacにHomebrewでphp7.4をインストールしようとした際の記録です。 php7.…

PHP-FPM(php7.4) Apache2.4 on Ubutnu20.04 Webサーバ構築
環境 パッケージの更新 Apache と PHP のインストール Apache のサービスを開始する PHPファイルを作成 参考にしたサイト Ubuntu20.04 に PHP7.4 + Apache2.4 をインストールしてWeb…

PHP-FPM(php7.4) Apache2.4 でWebサーバ構築 on CentOS8
環境 php7.4 のインストール apacheのインストール php-fpmの設定を変更する php-fpm の起動 apacheの起動 確認 おまけ: エラーと解決方法 "System has not been booted with systemd as…

CentOS8 に PHP7.4 インストール
環境 普通にインストールしようとするとphp7.2がインストールされる modularityについて php7.4 インストール CentOS8 に modularity を利用して PHP7.4をインストールした際のメモです。 環境 CentOS8.…

UNIXドメインソケット通信 vs INETドメインソケット通信 php-fpmで動作させる場合の違いについて
結論 ソケット通信について ソケットについて ソケット通信の種類 UNIXドメインソケット通信を行う場合のメリット 参考にしたサイト php-fpm の設定方法で調べた際にIPとポートで設定するパターンとUNIX…

Amplify CLI のインストール
Amplify CLI のインストール Amplify CLI の設定 バックエンド環境作成 Amplify CLI のインストールから設定まで Amplify CLI をインストール 設定 Amplify アプリを初期化 Amplify CLI…

AWS Amplify に Next.js (SSG) で作ったアプリをデプロイする
はじめに 操作 Next.js (React) アプリの作成、Gitへのプッシュ AWS Amplifyでプロジェクト作成 参考にしたサイト この記事では、React / Next.js アプリケーションを作成し、AWS Amplify…

最新の投稿

[Mac]ipコマンドの導入[iproute2mac]
iproute2macについて 導入 homebrewで導入 直接インストール 確認 サポートコマンド を導入して、macOSでipコマンドを導入した際のメモ iproute2macについて brona/iproute2mac: CLI wrapper for…

AutotoolsでconfigureやMakefileの作成
はじめに Autotools 環境 準備 ツール類のインストール ソースコードの作成 configure.ac と Makefile.am configure Makeの生成 その他 makeオプション autoreconf について Perlの場合 リンク はじめに C…

RPMパッケージ作成 Dockerを利用して
はじめに RPMパッケージ step1.環境構築からRPMパッケージングまで 事前準備 ワークスペースの作成 プログラム配置 specファイル rpmbuild インストール リンク はじめに Dockerを利用してRPM開発環境を用意し、実際にRPM…

RPMのspecファイルで利用するマクロ・変数
はじめに マクロ一覧 基本情報系 Body項目 コメント 参考文献 はじめに RPM(Fedora/CentOS系)を作成する際に利用するspecファイルで利用できるマクロについて調べた際のメモです。 マクロ一覧 基本情報系 パッケージの名前を定義します。これはspec…

CentOS8/RHEL8でのRPM管理における検討事項
初めに 前提 rpm rpm yum dnf コマンド リポジトリ リポジトリとライフサイクル AppStream Compatibility Level について AppStreamのサポート期間 Yum v3 -> Yum v4 リンク 初めに CentOS8/RHEL…

homebrewでnodejsインストール&任意のバージョン利用
初めに homebrewインストール nodejsの検索 インストール nodejsの利用 初めに homebrewでサクッとnodejsのインストールを行なった際のメモです。 環境はMacを対象としていますが、Linux…

tracerouteコマンドでネットワークの経路を洗い出す
tracerouteの用途 tracerouteの原理 IPヘッダのTTL コマンドを実行してみる 参考文献 tracerouteコマンドでネットワークの経路を洗い出した際の操作をメモしました。 環境はmacで実施しています。 また、traceroute…

[Vue]フロントエンド機能のみでダウンロードを実装する[JS]
実装 ポイント ソース デモ 参考サイト フロントエンドのみ(=サーバサイドがダウンロードさせない) でダウンロードを行う機能を実装した時のメモです。 Vueを利用して実装していますが、ここで記載しているコードはVueに依存した機能ではなく、ピュアなJSのAPI…

Node.js で作成した REST API を Docker化
Node.jsでREST APIを作成 コンテナ化 コンテナ化定義 コンテナ化作業 参考 Node.js で作成した REST API を Docker化した際のメモです。 Node.jsでREST APIを作成 まずはNode.js…

JavaScriptで優先度付きキューを実装する
優先度付きキューについて ソース 参考 JavaScriptで優先度付きキュー (プライオリティキュー) を実装する 優先度付きキューについて 具体的には次のような機能があります。 キューに対して要素を優先度付きで追加 (push…

Tags

Dates

s-yoshiki
s-yoshiki
githubtwitterqiita
ただの備忘録です。
JS/TS/node.js/PHP/AWS/OpenCV/CentOS
※このブログの内容は個人の見解であり、所属する組織等の見解ではありません。
© 2022   404 motivation not found