FAQ: 技術的な仕様に関する質問

サービス全般に関する質問や、利用料金に関する質問につきましては よくある質問 を参照ください。


アプリケーションとは何ですか

アプリケーションとは、お客様が公開するウェブサイトを動かすためのサーバーのことです。 Sqaleでウェブサイトを公開する場合は、アプリケーションを作成してサーバー上にウェブサイトのプログラムやファイルをアップロードします。 設定済みのサーバーが手に入るため、アプリケーションを作成してすぐにウェブサイトを公開できます。 アプリケーションを作成するごとに、15日間のお試し期間があります。お試し期間中は無料でご利用いただけます。


コンテナとは何ですか

コンテナとは、アプリケーションに追加できるサーバーのことです。 コンテナを追加することで、アプリケーションの性能を向上させることができます。


SSH接続する方法を教えてください

ダッシュボードから公開鍵を登録後に以下のコマンドを実行してください。なお、SSH接続のポート番号は 2222443 がご利用いただけます。

$ ssh -p 2222 sqale@gateway.sqale.jp
$ ssh -p 443 sqale@gateway.sqale.jp


SSH接続しようとするとパスワードを求められます

SSH接続には公開鍵と秘密鍵を利用します。パスワードを求められる場合は、公開鍵の設定ができておりませんので、公開鍵の設定方法 (Mac 編) 公開鍵の設定方法 (Windows 編) の手順に従って設定を行なってください。

以下のようなメッセージが表示された場合は、公開鍵での認証ができない状態ですので、上記のマニュアルをご覧いただき、改めて公開鍵の設定をお願いします。

$ ssh -p 2222 sqale@gateway.sqale.jp
sqale@gateway.sqale.jp's password:
Permission denied, please try again.


SSH接続しているとすぐ切断されてしまいます

SSH接続中はサーバーからSSHクライアントに対して45秒ごとに接続確認を行なっており、無操作の場合も接続が維持されるようになっておりますが、もし接続が切れてしまう場合はローカルの ~/.ssh/config に以下の設定を追加してください。

Host gateway.sqale.jp
  ServerAliveInterval 45


複数アカウントで SSH 接続をしたい

ユーザ foo と ユーザ bar がいるとします。~/.ssh/config に以下の設定を記述します。

Host sqale-foo
    HostName gateway.sqale.jp
    IdentityFile ~/.ssh/foo.id_rsa # foo 用の秘密鍵を指定する
    User sqale
    Port 2222
Host sqale-bar
    HostName gateway.sqale.jp
    IdentityFile ~/.ssh/bar.id_rsa # bar 用の秘密鍵を指定する
    User sqale
    Port 2222

これで、以下のようにして接続が可能です。

$ ssh sqale-foo
$ ssh sqale-bar

もしくは ControlMaster の設定を有効にしている場合は以下のようにして無効にして接続してください。

$ ssh -o ControlMaster=no sqale-foo


アプリケーションの CSS が表示されず、 404 not found となってしまいます

Sqale では、静的コンテンツは以下のディレクトリを参照する設定となっております。

/home/sqale/current/public

CSS を上記の場所に配置し、ご利用のアプリケーションの CSS 参照パス等を修正してください。


アプリケーションを再起動したいです

アプリケーションを再起動するには ssh でログインしてコンテナ毎に以下のコマンドを実行します。

$ /etc/init.d/app restart


アプリケーションのログは何処に出力されますか?

アプリケーションのログファイルは以下のファイルに出力されます。

/var/log/app/stderr.log
/var/log/app/stdout.log


環境変数を変更することは可能でしょうか?

Ruby と PHP で設定方法が異なりますが、それぞれ設定可能です。

Ruby

/home/sqale/current/.env というファイルを作成することで、アプリケーションのプロセスが使用する環境変数を設定可能です。例えば、LANG=Cで アプリケーションを動かしたい場合は以下の内容を .env ファイルに記述し、アプリケーションのトップディレクトリに配置します。

LANG=C

.env ファイルは git リポジトリで管理すると、コンテナの追加を行った際に追加コンテナにも反映されます。

手元のマシン上で開発時に .env の内容を利用したい場合は rack-env gem を利用するか、 source .env && rackup のようにしてアプリケーションを起動してください。

なお Sqale でデフォルトで提供する環境変数は以下の内容です。

BUNDLE_BIN_PATH: /usr/local/rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/bundler-1.1.3/bin/bundle
BUNDLE_GEMFILE: /etc/bundler/1.9.2-p290/Gemfile
GEM_HOME: /usr/local/rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1
GEM_PATH:
HOME: /home/sqale/
LANG: ja_JP.UTF-8
PATH: /usr/local/rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/bin:/home/sqale/.rbenv/versions/1.9.2-p290/bin:/home/sqale/.rbenv/libexec:/home/sqale/.rbenv/shims:/home/sqale/.rbenv/bin:/usr/local/bin:/usr/bin:/bin
PWD: /home/sqale/current
RACK_ENV: production
RAILS_ENV: production
RBENV_DIR: /home/sqale/current
RBENV_HOOK_PATH: :/home/sqale/.rbenv/rbenv.d:/usr/local/etc/rbenv.d:/etc/rbenv.d
RBENV_ROOT: /home/sqale/.rbenv
RUBYOPT: -I/usr/local/rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/bundler-1.1.3/lib -rbundler/setup

PHP

SSH で接続後、/etc/php-fpm.d/env.conf に環境変数を設定します。phpinfo() などでも同じように環境変数が反映されているか確認可能です。

[www]
env[FOO] = bar

上記のように設定してから php-fpm を再起動します。

$ /etc/init.d/app restart

そして <?php echo $_SERVER['FOO']; などとして PHP から環境変数を取得できます。


パスワードのような公開したくない情報を簡単に扱う仕組みはありますか?

パスワードや API のトークンのような非公開情報は Sqale では2種類の方法で簡単に扱うことが可能です。

1. .env を利用する方法

パスワードや API のトークンのような非公開情報は .env ファイルを使用することで、アプリケーションのコードにハードコーディングせずに利用することができます。例えば .env ファイルに

GITHUB_TOKEN=xxxyyyzzz
GITHUB_SECRET=aaabbbccc

と書き、アプリケーションから ENV['GITHUB_TOKEN'] と呼び出すことで、.env ファイルに記載した xxxyyyzzz を利用することができます。

2. postinstall を利用する方法

ローカルのアプリケーションのルートディレクトリに postinstall というファイルを用意しておくことでデプロイ完了ごとに postinstall をスクリプトとして実行します。

#!/bin/sh

set -e
ln -s /home/sqale/etc/database.yml /home/sqale/current/config/database.yml
ln -s /home/sqale/etc/oauth.yml /home/sqale/current/config/oauth.yml

使い方の例として、例えばあらかじめ sqale に SSH でログインして、etc というディレクトリを作成しておきます。 そこに公開したくないファイルを設置しておき、デプロイのタイミングでシンボリックリンクを貼るフックをかけます。

postinstall のメリットは GitHub のようなサイトで公開しながらアプリケーションを作成する場合に特に便利です。

postinstall はシェルスクリプト以外でも記述可能です。以下は Python の例です。適切な Shebang を記述してください。

#!/usr/bin/env python

postinstall は実行に失敗してもデプロイ自体は止まりません。失敗した際はダッシュボードにエラーログが表示されます。

Rails アプリケーションで assets:precompile を利用している方へ

postinstall スクリプトで database.yml を配置する場合は assets:precompile が実行されないため、 postinstall スクリプトに

cd /home/sqale/current && bundle exec rake assets:precompile

という行を足す必要があります。


RAILS_ENV を production 以外で起動したい

Sqale の本番環境で staging や development といった任意の environment で Rails を起動させる方法です。

ルートディレクトリに .env というファイルを用意して、以下のように記述します。

staging として起動させる

RAILS_ENV=staging
RACK_ENV=staging

development として起動させる

RAILS_ENV=development
RACK_ENV=development


MySQL 以外のデータベースは使用可能でしょうか?

MySQL のほかに SQLite もご利用いただけます。お客様が外部に用意したデータベースを使用することも可能です。memcached や redis のような揮発性のストレージも同様です。


コンテナを追加することで、データベースをスケールすることはできますか?

Sqale では、MySQL を共用のサーバとして提供しておりますので、コンテナを追加することでスケールすることはできません。

SQLite をご利用の場合、データベースが単一ファイルに格納されることになり、コンテナ間での共有ができませんのでご注意ください。


MySQL ダンプデータをダウンロードすることはできますか?

Sqale の仕組み上、コンテナから手元のマシンへダンプデータを直接ダウンロード、またはアップロードする手段は提供しておりません。

例えば AWS のクライアントプログラム 等と AWS S3 を利用して MySQL のダンプデータを手元のマシンとやりとりすることは可能です。

データベースのバックアップ方法については こちら をご参照ください。


Memcached の設定方法を教えてください

Sqale で Memcached を利用する方法 をご覧ください。


Memcached を外部のサーバーからも利用できますか?

Sqale で提供している Memcached は Sqale のアプリケーション (コンテナ) 以外からは接続できません。


Memcached の容量はどのくらい利用できますか?

Memcached の容量は 5MB まで利用できます。


アプリケーションからメールを送信するための仕組みはありますか?

Sqale ではメールサーバーを提供しておりません。ユーザーが外部に用意したメールサーバーを利用することは可能です。

例えば、Rails の場合なら

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => 'baci.lindsaar.net',
  :user_name            => '<username>',
  :password             => '<password>',
  :authentication       => 'plain',
  :enable_starttls_auto => true  }

と記載することで GMail 経由のメール送信が可能です。「Action Mailer Basics の 5.2 より抜粋」

また、Amazon SESSendGrid のご利用も可能です。


アプリケーションのパフォーマンスを計測する仕組みはありますか?

Sqale では提供しておりません。パフォーマンスを計測したい場合は NewRelic 等をご利用ください。


SSHログイン後に常駐プロセスを起動することは可能でしょうか?

コンテナ内で常駐プロセスを起動することはできません。また、任意のポートを listen するプログラムも実行できません。

バックグラウンド処理用のワーカー等はコンテナの種類を増やすことで対応予定です。


デプロイ時に何が行われるのでしょうか

アプリケーションをデプロイすると以下の処理が実行されます。

  • ビルドサーバ上への Git リポジトリの展開
  • Ruby on Rails の場合、 config/database.yml ファイルを Sqale 用に変換
  • Gemfile ファイルを Sqale 用に変更
  • ビルドサーバ上で bundle install --path=vendor/bundle --quiet --without development:test コマンドの実行
  • Ruby on Rails の場合、以下の条件を満たすときに bundle exec rake assets:precompile の実行
    • Rakefile ファイルが存在する
    • app/assets ディレクトリが存在する
    • public/assets/manifest.yml ファイルが存在する
  • 各コンテナへ rsync でファイルをデプロイ


「アプリケーション○○のビルドに失敗しました」というエラーが出ます

ビルドが失敗してしまう原因には様々な理由が考えられます。ビルドに失敗した場合、ダッシュボードのアクティビティにビルドサーバのエラーログを表示するボタンが表示されますので、原因調査にご利用ください。

アプリケーションを修正してもビルドエラーが解消しない場合、 Git の強制アップデートを使うことでビルド用の一時ディレクトリをクリーンアップしてビルドを行います。 Sqale に git push するとき --force オプションを付与してデプロイを行なってください。


デプロイ後に 503 エラーが出ます

  • アプリケーションが 503 を返し続ける場合は、コンテナ内のアプリケーションもしくは Webサーバーが停止している可能性があります。
    • SSH ログインしてエラーを解決してください

コンテナにSSHログインして 「APPLICATION IS NOT RUNNING」 の警告が出た場合

コンテナにSSHログインして **「APPLICATION IS NOT RUNNING」** の警告が出た場合

何らかのエラーでアプリケーションが停止しています。エラーログは下記のコマンドで確認できます。

$ cat /var/log/app/stderr.log

エラーの原因を解決できたらアプリケーションを再起動します。
エラーを解決できない場合は、【お問い合わせフォーム】からお問い合わせください。

$ /etc/init.d/app start

コンテナにSSHログインして 「HTTPD IS NOT RUNNING」 の警告が出た場合

コンテナにSSHログインして **「APPLICATION IS NOT RUNNING」** の警告が出た場合

コンテナのWebサーバーが停止しています。下記のコマンドで Webサーバーを再起動できます

$ /etc/init.d/httpd restart

エラーを解決できない場合は、【お問い合わせフォーム】からお問い合わせください。

SSHログインができない場合

もし SSH ログインできない場合は、【お問い合わせフォーム】からお問い合わせください。


デプロイ後に画像が消えるのを回避する方法はありますか?

Sqale ではデプロイの際に rsync コマンドによって Git リポジトリの最新版をコンテナへコピーするため、 Git リポジトリの管理下にないファイルはデプロイ時に削除されてしまいます。

そのため、画像などのコンテンツの保存先には Amazon S3 などの外部ストレージをおすすめしております。

また Amazon S3 を使わない場合の方法として、postinstall と組み合わせる方法もあります。

※postinstall スクリプトの詳細については以下のページをご覧ください。 https://sqale.jp/support/manual/faq-technical#secret-env

例えばこのようなスクリプトを postinstall という名前で保存します。

そしてあらかじめ ssh でログインして

sqale@test-sample-1:~$ ls
current tmp
sqale@test-sample-1:~$ mkdir uploads
sqale@test-sample-1:~$ ls
current tmp uploads

として /home/sqale/uploads に画像を格納するディレクトリを作成しておきます。

そして毎回デプロイ後に postinstall が実行され /home/sqale/current/uploads に /home/sqale/uploads からリンクが貼られます。

この方法で画像が消えることを回避することができます。


SFTP 接続してサーバーからファイルを削除してもデプロイが始まりません

SFTP クライアントでファイルを削除してもデプロイが開始しない場合は、一旦 SFTP クライアントの接続を切断するか、 SFTP クライアントを終了してください。


Rails アプリケーションの起動の仕組みを教えてください

Sqale ではアプリケーションサーバーとして unicorn 、リバースプロキシとして nginx を採用しています。unicorn は /home/sqale/current/config.ru/etc/unicorn/config.rb を用いて起動します。

この設定はユーザーは変更することが不可能ですので、作成するアプリケーションの git リポジトリの最上位に config.ru ファイルを配置してください。


使っているサーバの OS は何ですか?

Amazon Linux AMI になります。


独自ドメインを設定する方法を教えて下さい

CNAME での設定が可能です。

ご利用のドメイン登録事業者のページで、 参照先に「アプリケーション名-ユーザー名.sqale.jp」を設定したCNAMEレコードを作成します。

ダッシュボード のアプリケーション一覧より 独自ドメインを設定したいアプリケーションの【詳細】をクリックした後、 【独自ドメイン管理】をクリックして下さい。 その後、独自ドメインの管理ページで登録を行なってください。


独自ドメインにAレコードは設定できますか?

Sqale では原則的にAレコードに対して独自ドメインを設定することが仕様としてできません。 自己責任になりますが、もし AWS の route53 を使っている場合には Sqale + Route 53 で Naked Domain を割り当てる方法 で Naked Domain を設定することも可能です。

推奨するバージョンを教えて下さい

下記のバージョンを推奨いたします。

  • Ruby 1.9.3以上
  • Ruby on Rails 3.2以上
  • Git 1.7.0以上
  • MySQL 5.5.0以上


PHPアプリケーションをデプロイしたときに何が行われるのでしょうか?

PHPアプリケーションをデプロイすると、コンテナの /home/sqale/current ディレクトリ以下にファイルがコピーされます。


PHPアプリケーションの起動の仕組みについて

PHPアプリケーションは php-fpm という FastCGI プロセスによって起動されます。

詳しくは PHPアプリケーションのマニュアル をご覧ください。


Directory Index の優先順位について

Directory Index の優先順位は以下のようになっています。

↑優先度高

* index.html
* index.php

↓優先度低


php.ini をカスタマイズできますか?

php.ini を直接カスタマイズすることはできませんが、かわりに .user.ini  をご利用いただけます。


Disk quota exceeded というエラーが表示されます

お客様が使用できるディスク使用量は 2GB 、ファイル数は 50000 となっております。
不要なファイルを削除するなどの対応をお願いいたします。


解決しません!

ご不明な点がございましたら、お気軽に【お問い合わせフォーム】からお問い合わせください。