brew install tfenv
tfenv --version
tfenv 3.0.0
tfenv で インストール可能なバージョンの一覧を表示させる
tfenv list-remote
バージョンはこちらも参考に
https://developer.hashicorp.com/terraform/install
バージョン 1.7.5 のインストール
tfenv install 1.7.5
tfenv use 1.7.5
tfenv list
Terraform のインストール
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
brew unlink tfenv
brew install hashicorp/tap/terraform
terraform version
Terraform v1.7.5
on darwin_arm64
bypass:キャッシュがバイパスされたため、応答はオリジン サーバーから提供されました。
hit : 応答はエッジから提供されました。
miss : 応答はエッジで見つからなかったため、オリジン サーバーから取得されました。
prerender : 応答は静的ストレージから提供されました。
revalidated : エッジで古い応答が見つかりましたが、同期的に再検証されました。
stale : 応答が古い (エッジから提供される)。
vapidKey(公開鍵, firebase console にて確認できる)をセットしてトークンを生成する
messaging.getToken({
vapidKey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
})
参考 ; https://blog.ojisan.io/fcm-push/
・「以前のHTTP」を使う ( https://fcm.googleapis.com/fcm/send )
必要なもの (Cloud Messaging API(レガシー)のサーバーキー)
・「HTTP v1」を使う ( https://fcm.googleapis.com/v1/projects/<プロジェクトID>/messages:send )
必要なもの (サービスアカウントの秘密鍵 json → 秘密鍵 jsonからアクセストークンを生成してそれを使用する)
参考 : 以前の HTTP から HTTP v1 に移行する
https://firebase.google.com/docs/cloud-messaging/manage-tokens?hl=ja
https://qiita.com/yum_fishing/items/54b4f10dea24e0d7722d
・(サーバー側)Topicを作成する
・(利用者)Topicに登録する
・(サーバー側)Topicに 対して通知を送信すると、そのトピックをサブスクライブしている全員に対して通知を送ることができる。
onMounted(() => {
const ui =
firebaseui.auth.AuthUI.getInstance() ||
new firebaseui.auth.AuthUI(firebaseAuth);
ui.start("#firebaseui-auth-container", {
// ログイン完了後に画面遷移するURL
signInSuccessUrl: "/mypage" ,
callbacks: {
uiShown: () => {
// 表示時に何か実行したい場合ここに記述
);
},
},
signInOptions: [
{
provider: EmailAuthProvider.PROVIDER_ID,
disableSignUp: {
status: true,
},
},
],
});
});
<template>
<div id="firebaseui-auth-container"></div>
</template>
git clone https://github.com/firebase/firebaseui-web.git
cd firebaseui-web
npm install
node node_modules/gulp/bin/gulp.js build-esm-ja
参考 : https://github.com/firebase/firebaseui-web#developer-setup
dist/esm__ja.js → firebaseui_ja.js
dist/index.d.ts → firebaseui_ja.d.ts
あとは普通に importすれば、 メッセージが日本語化されたfirebase-uiが使用できます
tsconfig.json の allowJs は 設定しなくてもok
"compilerOptions": {
// 設定しなくてもokです
"allowJs": true,
...
}
https://github.com/firebase/firebaseui-web/blob/master/translations/ja.xtb
yarn add @firebase/rules-unit-testing --dev
firestore.test.ts のサンプル
import fs from 'fs'
import * as testing from '@firebase/rules-unit-testing'
import * as http from 'http'
const projectId = '<FirebaseのプロジェクトID>'
// カバレッジレポートの出力
const COVERAGE_URL = `http://localhost:8080/emulator/v1/projects/${projectId}:ruleCoverage.html`
afterAll(async () => {
const coverageFile = 'firestore-coverage.html'
const fstream = fs.createWriteStream(coverageFile)
await new Promise((resolve, reject) => {
http.get(COVERAGE_URL, res => {
res.pipe(fstream, { end: true })
res.on('end', resolve)
res.on('error', reject)
})
})
console.log(`● カバレッジレポートを次のURLに出力しました\n${COVERAGE_URL}`)
})
describe('firestore', () => {
let testEnv: testing.RulesTestEnvironment
let userAuthor: testing.RulesTestContext
let userMaintainer: testing.RulesTestContext
let userDoesntHavePermission: testing.RulesTestContext
let userUnauthenticated: testing.RulesTestContext
beforeAll(async () => {
testEnv = await testing.initializeTestEnvironment({
projectId: projectId,
firestore: {
rules: fs.readFileSync('./firebase_emulator/firestore.rules', 'utf8'),
host: 'localhost', // npx jest から実行する場合は必要(firebase emulators:exec からテストする場合は不要)
port: 8080 // npx jest から実行する場合は必要(firebase emulators:exec からテストする場合は不要)
}
})
userAuthor = testEnv.authenticatedContext('test__userAuthor')
userMaintainer = testEnv.authenticatedContext('test__userMaintainer')
userDoesntHavePermission = testEnv.authenticatedContext('test__userDoesntHavePermission')
userUnauthenticated = testEnv.unauthenticatedContext()
// テストデータ作成
await testEnv.withSecurityRulesDisabled(async context => {
// Client SDK からのルールが適用されない Firestore インスタンス。
const noRuleDB = context.firestore()
// 1. (/users/test__userAuthor)
await noRuleDB.doc(`/users/test__userAuthor`).set({
name: 'テストデータ(userAuthor)'
})
// 2. (/users/test__userMaintainer)
await noRuleDB.doc(`/users/test__userMaintainer`).set({
name: 'テストデータ(userMaintainer)',
_permissions: ['/users/test__userAuthor/news']
})
// 3. (/users/test__userDoesntHavePermission)
await noRuleDB.doc(`/users/test__userDoesntHavePermission`).set({
name: 'テストデータ(userDoesntHavePermission)'
})
})
})
afterAll(async () => {
// テストデータ削除
await testEnv.withSecurityRulesDisabled(async context => {
const noRuleDB = context.firestore()
// 1. (/users/test__userAuthor)
await noRuleDB.doc(`/users/test__userAuthor`).delete()
// 2. (/users/test__userMaintainer)
await noRuleDB.doc(`/users/test__userMaintainer`).delete()
// 3. (/users/test__userDoesntHavePermission)
await noRuleDB.doc(`/users/test__userDoesntHavePermission`).delete()
})
})
test('「news/コレクション一覧の読み取り」: ログイン済みユーザ(本人)は読み取ることができる', async () => {
const newList = userAuthor.firestore().collection('/users/test__userAuthor/news').get()
await testing.assertSucceeds(newList)
})
test('「news/コレクション一覧の読み取り」: ログイン前ユーザ(本人)は読み取ることができない', async () => {
const newList = userUnauthenticated.firestore().collection('/users/test__userAuthor/news').get()
await testing.assertFails(newList)
})
test('「news/コレクション一覧の読み取り」: 権限を持たない本人以外のユーザは読み取ることができない', async () => {
const newList = userDoesntHavePermission.firestore().collection('/users/test__userAuthor/news').get()
await testing.assertFails(newList)
})
test('「news/コレクション一覧の読み取り」: 権限を持つ本人以外のユーザは読み取ることができる', async () => {
const newList = userMaintainer.firestore().collection('/users/test__userAuthor/news').get()
await testing.assertSucceeds(newList)
})
})
npx jest firestore.test.ts
FirestoreのカバレッジをGitHubActionsでいい感じに表示する - Qiita
rules-unit-testingがv2になったので変更点とともに紹介する
exists 存在やアクセスするためのパスを確認した後ゲットを行うと良い
debug(exists(/databases/$(database)/documents/users/XXXXXXXXXXXXXXXXXXXXXXXXXX))
↓ bool_value: true となった場合 このパスの位置にドキュメントがあることがわかるので get() に切り替えます
debug(get(/databases/$(database)/documents/users/XXXXXXXXXXXXXXXXXXXXXXXXXX))
↓ $(変数) で変数展開できます。現在ログイン中の uid はこちら
debug(get(/databases/$(database)/documents/users/$(request.auth.uid)))
Firestore セキュリティルールで使える関数一覧 - Qiita
CloudFirestoreのセキュリティルールの構造化 | Firebase
debug() で囲むとエミュレーターを使ったときに firestore-debug.log に
string_value: "hogehoge"
のような形でデバッグが表示されます(stringの場合)
debug(['a','b'])
↓ firestore-debug.log に次のように書き出されます
list_value {
values {
string_value: "a"
}
values {
string_value: "b"
}
}
debug(request.path)
↓ firestore-debug.log に次のように書き出されます
path_value {
segments {
simple: "databases"
}
segments {
simple: "(default)"
}
segments {
simple: "documents"
}
segments {
simple: "users"
}
segments {
simple: "xxxxxxxxxxxxxxxxYYYYYYYYYYYYZZZZZZZZZZ"
}
segments {
simple: "news"
}
}
単一リソースのワイルドカード
match /posts/{post}
これは posts 以下のすべてのドキュメントにマッチしますが、 posts 以下にコメントなどがネストされている場合は、コメントのサブコレクションにはマッチしません。
match /posts/{document=**}
これだと posts 以下なんでもマッチします。 引用 : posts
npm install -g firebase-tools
firebase --version
firebase logout
firebase login
(interl と M1, M2 mac で ダウンロードするインストーラーが違うのでご注意ください)
https://www.oracle.com/java/technologies/downloads/
mkdir _firebase_emulator_authentication
cd _firebase_emulator_authentication
firebase init
emulator だけを使用したい場合は次のコマンドでもokです
firebase init emulators
例: Authentication を使用したい場合
「Emulators: Set up local emulators for Firebase products」 を選択
↓
「Authentication Emulator」 を選択
例: Firestore を使用したい場合
「Emulators: Set up local emulators for Firebase products」 を選択
↓
「Firestore Emulator」 を選択
firebase emulators:start
https://www.oracle.com/java/technologies/downloads/
firebase.json
"emulators": {
"auth": {
"port": 9099,
"host": "192.168.1.26" // これを追加します
},
import { connectAuthEmulator} from "firebase/auth"
if (process.env.NODE_ENV != "production") {
connectAuthEmulator(auth, "http://localhost:9099")
}
ログイン成功時に返却される UserCredentialImpl に kid が含まれないため公開鍵が分からないため検証はできません。 https://zenn.dev/mekappi/articles/48034d52393184
ディレクトリに移動してから次のコマンドを実行します
firebase init
以下の2つをスペースを押して選択します
Emulators: Set up local emulators for Firebase products
Firestore: Configure security rules and indexes files for Firestore
次に以下の4つを聞かれるので答えます
・1. 既存プロジェクトまたは新規プロジェクトを使用するか聞かれるので答えます
・2. セキュリティールールのファイル名を聞かれるのでそのままエンターを押します(firestore.rules になる)
・3. インデックスのファイル名を聞かれるのでそのままエンターを押します(firestore.indexes.json になる)
・4. インストールするエミュレーターを聞かれるので( Authentication Emulator , Firestore Emulator)の2つを選択します
後はエンターキー連打でokです
firebase emulators:start --import firestore_data --export-on-exit
終了時にメモリ上のデータをディレクトリ「firestore_data」のファイルに書き出します。
必ずctrl+cを押して終了させるようにしましょう。
(ターミナルごとkillした場合は保存されません)
アプリ側の .ts (.js) を変更します
export const firebaseDB = getFirestore()
↓
export const firebaseDB = initializeFirestore(FirebaseApp, {
ignoreUndefinedProperties: true
})
引用 : https://firebase.google.com/docs/reference/js/firestore_
initializeFirestore (アプリ、設定、データベース ID)
指定された設定でFirestoreの新しいインスタンスを初期化します。 getFirestore()を含む他の関数の前にのみ呼び出すことができます.カスタム設定が空の場合、この関数はgetFirestore()を呼び出すのと同じです.
firebase emulators:start
firestore.rules を以下の内容で保存してデータ取得がエラーとなることを確認します
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// rule - 全て却下
match /{document=**} {
allow read, write: if false
}
}
}
ホワイトリスト形式で記述するので ルールを何を書かない場合でもアクセスができなくなります
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
}
}
なお、 firestore.rules は更新するとするルールが適用されます(エミュレーターを再起動する必要はありません)
brew install --cask google-cloud-sdk
シェルが bash の場合
source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.bash.inc'
source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.bash.inc'
シェルが zsh の場合
source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc'
source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc'
which gcloud
gcloud --version
which python
python --version
2.7 以上だと合格です。
brew install pyenv
.bash_profile
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
ここで一度ターミナルを終了して再度起動します。
gcloud auth login
webブラウザでログインします。
gcloud projects create <プロジェクトID>
test-my-first-project というプロジェクトを作成します
gcloud projects create test-my-first-project
プロジェクト一覧の表示
gcloud projects list
普通に行うと killed となるので以下のようにして実行します。
dnf config-manager --disable google-cloud-sdk
dnf config-manager --disable google-compute-engine
dnf -y update
Google Cloud PlatformのメニューからVPCネットワーク → 外部IPアドレスを開きます。 ここで不要な外部IPアドレスの確認および削除ができます。 外部IPアドレスをリストから選択して 静的アドレスを解放 で削除できます
Google Cloud Platformのメニューから「Compute Engine」 → 「VMインスタンス」から削除したいマシンを選択して削除します。
この後表示される画面で「有効にする」ボタンを押します
その後「VMインスタンスを作成」ボタンを押します。
「GCPコンソール」→「VPCネットワーク」→「IPアドレス」
から、「外部IPアドレス」を選択して、画面上部の「外部静的アドレスを予約」をクリック。
「名前」「リージョン」「接続先」を設定して「予約」ボタンを押す
sudo passwd root
su -
vi /etc/ssh/sshd_config
ポートを変更する
Port 52200
パスワードでのログインを禁止する
PasswordAuthentication no
再起動して新しいポートになっているか確認する
service sshd restart
systemctl status sshd.service
パスワードでのログインが禁止されているか確認する
ssh hoge@xxx.xxx.xxx.xxx -p 52200
メモリが少なくなったマシンようにKUSANAGIを再設定します
su -
kusanagi configure
kusanagi init
sudo -
cd /etc/nginx/
cp nginx.conf nginx.conf.backup
vi nginx.conf
KUSANAGI9 の場合は nginx のディレクトリ は /etc/opt/kusanagi/nginx になります
nginx.conf の3行目を変更します
user kusanagi kusanagi;
編集後にリロード
nginx -s reload
user = kusanagi
group = kusanagi
sudo rpm --rebuilddb
sudo yum update -y
cd
curl https://getcomposer.org/installer | php
sudo mv -i composer.phar /usr/local/bin/composer
composer -V
Composer version 1.10.9 2020-07-16 12:57:00
あるドメインだけ昔のバージョンの PHP で動作させたいという用件がたまにあります。
それをさくらのレンタルサーバーで実現する方法です。
.htaccess
Action myphp-script /php.cgi
AddHandler myphp-script .php .html
php.cgi (権限は 0755 に設定します)
#!/bin/sh
exec /usr/local/php/8.3/bin/php-cgi
これで php 8.3 が起動するようになります。
CLIから起動するときはこちらのフルパスで実行します
php -v
↓
/usr/local/php/5.6/bin/php-cgi -v
SERVER_ADDR を書き換えるのは難しいので、独自の環境変数「X-SERVER_ADDR_EIP」をセットします。
独自の環境変数「X-SERVER_ADDR_EIP」に 123.123.123.123 をセットする例
SetEnv X-SERVER_ADDR_EIP '123.123.123.123'
v=spf1 a mx ip4:54.199.137.202 include:asp.cuenote.jp ~all
「レコードセットの作成」を押して次のように設定します。
名前 : (空欄のまま)
タイプ : TXT テキスト
値 : v=spf1 a mx ip4:xxx.xxx.xxx.xxx ~all
なお、 -all、**~all* は次のような違いがあります。
-all (ハイフン + all)
設定以外のアドレスは当該ドメインのメールサーバとして認証しない
~all(チルダ + all)
設定以外のアドレスは当該ドメインのメールサーバとして認証しないが、正当なメールであっても認証失敗する可能性もある
チルダの方がルールが緩いゆえに、メールサービスによっては soft fail 扱いとなるので、-all を設定するようにしましょう。
$_SERVER['SERVER_ADDR']
↓
172.31.9.228
$eip = file_get_contents('http://169.254.169.254/latest/meta-data/public-ipv4');
echo $eip;
SPFレコードを IP xxx.xxx.xxx.xxx に対して設定する
txt @ v=spf1 +ip4:xxx.xxx.xxx.xxxx -all
なお、 -all、**~all* は次のような違いがあります。
-all (ハイフン + all)
設定以外のアドレスは当該ドメインのメールサーバとして認証しない
~all(チルダ + all)
設定以外のアドレスは当該ドメインのメールサーバとして認証しないが、正当なメールであっても認証失敗する可能性もある
チルダの方がルールが緩いゆえに、メールサービスによっては soft fail 扱いとなるので、-all を設定するようにしましょう。
(node.jsはあらかじめこちらの方法でインストールしておいてください。)
XSERVER で node.js を利用する|プログラムメモ
npm install phantomjs
./node_modules/phantomjs/bin/phantomjs -v
test_helo.js というファイル名で以下のファイルを作成
console.log('Hello, phantomjs');
phantom.exit();
./node_modules/phantomjs/bin/phantomjs test_helo.js
動的サイト「https://dev.to/top/week」からソースを取得します。
test_web.js というファイル名で以下のファイルを作成
var webpage = require('webpage').create();
var url = 'https://dev.to/top/week';
webpage.open(url, function() {
console.log(webpage.content);
phantom.exit();
});
./node_modules/phantomjs/bin/phantomjs test_web.js
これで「https://dev.to/top/week」のHTMLソースが表示されればOKです。
curl_phantom.js というファイル名で以下のファイルを作成
var system = require('system');
var args = system.args;
if ( ! args[1] ){
console.log( 'ERROR: please set URL' );
phantom.exit();
}
var webpage = require('webpage').create();
var url = args[1];
webpage.open(url, function() {
console.log(webpage.content);
phantom.exit();
});
./node_modules/phantomjs/bin/phantomjs curl_phantom.js https://dev.to/top/week
XSERVER へ ssh接続して
mkdir src
cd src
wget git.io/nodebrew
perl nodebrew setup
echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bash_profile
これで一旦ログアウトして再度 ssh接続します。
nodebrew
これでバージョンが表示されれば nodebrew のインストールが完了です。
nodebrew ls-all
nodebrew install-binary v20.11.0
パスを追加します
export PATH=$PATH:~/.nodebrew/node/v20.11.0/bin
nodebrew list
nodebrew use v20.11.0
http://taku910.github.io/mecab/#download
tar xvfz ./mecab-0.996.tar.gz
cd mecab-0.996
./configure --prefix=$HOME/local --with-charset=utf8 --enable-utf8-only
make
make install
# mecab
PATH="$HOME/local/bin:$PATH"
~/local/bin/mecab
mecab -v
http://taku910.github.io/mecab/#download
tar xvzf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8
make
make install
mecab -d ~/local/lib/mecab/dic/ipadic -D
XSERVERのコンパネでphp7を設定してもコマンドラインから実行するphpのバージョンは低いままです。
php -v
PHP 5.4.16 (cli) (built: Apr 12 2018 19:02:01)
なぜこれが起きているかというと、php と打った時に実行されるファイルは
which php
/usr/bin/php
/usr/bin/php となっています。これのバージョンが(PHP 5.4.16)なのです。
そこで /usr/bin/php の代わりに /usr/bin/php7.2 を見に行くように変更します。
vi .bash_profile
この中の下記の行を変更します
PATH=$PATH:$HOME/bin
↓
PATH=$HOME/bin:$PATH
( $HOME/bin を先頭に入れ替えます )
mkdir $HOME/bin
ln -s /usr/bin/php7.2 $HOME/bin/php
php -v
PHP 7.2.6 (cli) (built: May 30 2018 21:41:35) ( NTS )
これでOKです。
XSERVER では phpize できますので pecl拡張をインストールすることができます。
ホームディレクトリに php_source を作成してそこへインストールしたいモジュールを解凍して make します
cd
mkdir php_source
cd php_source
wget https://pecl.php.net/get/mailparse-3.0.2.tgz
tar zxvf mailparse-3.0.2.tgz
cd mailparse-3.0.2
phpize
./configure
make
make が無事完了すると ~/php_source/mailparse-3.0.2/modules/ にモジュールが作成されます。
このモジュールを好きなディレクトリへ移動します。
(例えば ~/php_modules/)
php の -d オプションを使って直接モジュールファイルを指定して使用します
php -d extension=/home/<YOUR-ACCOUNT-NAME>/php_modules/mailparse.so <実行したいPHPソース>
XSERVERのコンパネの php.ini設定 から設定します
extension = /home/<YOUR-ACCOUNT-NAME>/php_modules/xxxxx.so
さくらレンタルサーバのコンパネからメールアカウント「autoexec」を作成します。
cd ~/MailBox/autoexec
touch .mailfilter
chmod 0600 .mailfilter
.mailfilter
to "| /usr/local/bin/php <YOUR-PROGRAM-FULL-PATH>"
これでメール受信をきっかけにプログラムが起動します。
sshでさくらのレンタルサーバへログイン後に
chsh -s /usr/local/bin/bash
cd
mkdir -p usr/local/bin/
curl -sS https://getcomposer.org/installer | php -- --install-dir=usr/local/bin/
cd
mkdir -p composer2/
curl -sS https://getcomposer.org/installer | php -- --install-dir=composer2/
インストール先はどこでもokです。お好きなところへどうぞ。
とりあえず .bash_profile ファイル内に alias で設定します
vi .bash_profile
.bash_profile の最初にロケールを追加
デフォルトでは LANG=C (英語) に設定されているので日本語に設定しておきましょう。
export LANG="ja_JP.UTF-8"
.bash_profile の最後に追加
# composer
PATH=$PATH:$HOME/usr/local/bin
alias php='php -c~/www/php.ini'
alias composer='php -c~/www/php.ini ~/usr/local/bin/composer.phar'
( composer Version2 以降はデフォルトでも十分早いので以下は特に必要ありません )
リポジトリを(packagist.jp)に変更します
composer config -g repos.packagist composer https://packagist.jp
(もしもの時に)戻す場合はこちらのコマンドからリポジトリを削除します
composer config -g --unset repos.packagist
( composer Version2 以降はデフォルトでも十分早いので以下は特に必要ありません )
composer global require hirak/prestissimo
さくらのレンタルサーバ/マネージドサーバ Let's Encrypt
https://www.sakura.ne.jp/function/freessl.html?=mail_20171017
https://secure.sakura.ad.jp/rscontrol/rs/domain
・「証明書」 「更新」をクリック
・「秘密鍵を含む新しい設定の作成」をクリック
・「LETSENCRYPT xxxxxxx」 をアップロード
・「有効化の確認」にチェックを付けて「新しい設定を有効化する」ボタンをクリック
2017年10月17日以降さくらのレンタルサーバで自動更新が可能になりました
さくらのレンタルサーバ/マネージドサーバ Let's Encrypt
https://www.sakura.ne.jp/function/freessl.html?=mail_20171017
1. さくらコントロールパネルへログイン
2. 左のグローバルメニューから「ドメイン/SSL設定」を押す
3. 設定したいドメインの【登録】ボタンを押す
4. 【無料SSLの設定へ進む】ボタンを押す
5. 【無料SSLを設定する】ボタンを押す
SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
昔ながらのやり方はこちら↓
無料の独自SSL「Let's Enctypt」を簡単に導入し、独自ドメインを https://あなたのサーバー名/ でアクセスできるに設定します 。
簡単に導入できるネットオウルの無料ウェブサービス「SSLボックス」を利用します
なお、SSL認証レベルは【DV】です。
SSL認証の認証レベルは3段階あります。
1. ドメイン認証型(通称:DV)(ドメインの所有権を確認する一番低レベルなSSL認証)
2. 企業認証型(通称:OV)(ドメインの所有権に加えて企業の実在性を確認するスタンダートなSSL認証)
3. EV認証(通称:EV)(Extended Validation 認証。更に厳しい認証。取得するとブラウザのアドレスバーに企業名が表示される)
http://www.netowl.jp
の会員登録から会員登録を行います。
https://secure.netowl.jp/netowl/?service=sslbox
SSL種別 : 『Let's Enctypt』を選択
コモンネーム : あなたのドメイン名
国 : JP
都道府県(state) : Tokyo (例)
市区町村(local) : Tokyo (例)
組織 (org) : Personal (例)
部署 (unit) : None (例)
入力後「所有者確認手続き」ボタンをクリックします
-「Web認証」「DNS認証」と選ぶ画面が出てきますが、「Web認証」を選択し、トークンファイル「ダウンロード」ボタンをします。
CERT(SSL証明書) : LETSENCRYPTXXXXXXXX.cert
中間証明書 : LETSENCRYPTXXXXXXXXInt.cert
秘密鍵 : LETSENCRYPTXXXXXXXX.key
https://あなたのサーバー名/ へアクセスして独自SSLが正しく設定されていることを確認します。
「仮想マシン作成」ボタンから新しいマシンを作成する。
作成後に届くメールに SSHの PASS が書いてあるので
管理画面の「コンソール」から
id : root
pass : メールに記載のパスワード
でログインできる。
左メニューの「SSH key」から SSH KEY 登録画面を表示する
登録するキーは、自分のマシンのコンソールから
cat ~/.ssh/id_rsa.pub
で表示させる。
SSH KEY登録画面から「アップロード」タブを選択し
SSH Key名 : 任意の名前
RSA公開鍵を貼り付け : 先程のキーを貼り付ける
で登録する
左メニューの「IPアドレス」からマシンのIPアドレス(xxx.xxx.xxx.xxx)をクリックして「 ファイアーウォール 」タブを選択し下記のように設定する
例 : SSHの設定の場合(HTTP,HTTPSも同様に設定する)
コメント : 任意のコメント(例:SSH)
ソースCIDR : IPによるアクセス制限(制限をかけたくなければ Any を選択)
タイプ: Custom TCP
ポートレンジ : 52222
左メニューの「IPアドレス」からマシンのIPアドレス(xxx.xxx.xxx.xxx)をクリックして「 ポートフォワード 」タブを選択し下記のように設定する
コメント : 任意のコメント
パブリックポート : SSH
プライベートポート: 49152〜65535 あたりから任意の値を選択 (例:52222)
仮想マシン : 先ほど作成したマシンを選択
鍵ファイルが `
id_rsa_idcf_cloud`
の場合は以下のようにしてログインします
ssh -i ~/.ssh/id_rsa_idcf_cloud -p52222 root@xxx.xxx.xxx.xxx
さくらのレンタルサーバへPECL拡張をインストールするには
`
extension = xxxxx.so`
を記述でできます。
例としてPECL拡張 `
mailparse`
をインストールしてみます。
https://pecl.php.net/
から使用したいpecl拡張をダウンロードします。
(この際対応しているPHPのバージョンを確認すること)
例 : mailparse バージョン 2.1.6 をダウンロードします
wget https://pecl.php.net/get/mailparse-2.1.6.tgz
tar zvxf mailparse-2.1.6.tgz
cd mailparse-2.1.6
ターミナルから以下のコマンドを実行します。
phpize
./configure
make
make test
ここでは ホームディレクトリ直下の php_modules ディレクトリにコピーします
mkdir cd ~/php_modules/
cp ./modules/mailparse.so ~/php_modules/
extension_dir = /home/『ユーザー名』/php_modules/
extension = mailparse.so
phpinfo() で項目が表示されていれば正しくインストールされています。
● .bash_profileに以下を追加
alias php='php -c/home/『ユーザー名』/www/php.ini'
● .cshrc に以下を追加
alias php php -c /home/『ユーザー名』/www/php.ini
追加後にコマンドラインから
php -m
で該当モジュール(mailparse)が表示されていれば正しくインストールされています
composer requie hogehoge/hogehoge
とするかわりに
php /PATH/TO/COMPOSER/composer.phar require hogehoge/hogehoge
とすればいいでしょう。
さくらのレンタルサーバ「スタンダード」へPHPの FTP拡張(ftp.so)ソケット拡張(socket.so)をインストールする方法。
PHPのソースから
phpinfo();
でバージョンを確認します。
https://secure.php.net/releases/
例(バージョン 5.6.21)の場合はPHP 5.6.21 (tar.gz) をダウンロードして展開するとフォルダ php-5.6.21 ができます。
cd ./php-5.6.21/ext/sockets
phpize
./configure
make
成功すると modules/sockets.so ファイルができます。
例( 【ホームディレクトリ】/php_modules)の場合
mkdir ~/php_modules
cp modules/sockets.so ~/php_modules/
php.ini に以下を追加します
extension_dir = /home/『ユーザー名』/php_modules/
extension = sockets.so
成功すると と表示されます。
同様に 3〜5 の手順で ftp拡張をインストールするすることもできます。
● .bash_profileに以下を追加
alias php='php -c/home/『ユーザー名』/www/php.ini'
● .cshrc に以下を追加
alias php php -c /home/『ユーザー名』/www/php.ini
追加後にコマンドラインから
php -m
で該当モジュール(mailparse)が表示されていれば正しくインストールされています
composer requie hogehoge/hogehoge
とするかわりに
php /PATH/TO/COMPOSER/composer.phar require hogehoge/hogehoge
とすればいいでしょう。