Apache 2.4 で TLS を安全に設定する

概要

本番にはブラウザーが信頼する認証局の証明書を使います。自己署名証明書はローカル開発や検証に限定し、TLS設定はApache 2.4の公式資料に従います。

実施例

sudo a2enmod ssl
sudo apachectl configtest
sudo systemctl reload apache2

# 開発専用の短期自己署名証明書
openssl req -x509 -newkey rsa:4096 -sha256 -nodes -days 30 \
  -keyout dev.key -out dev.crt -subj '/CN=localhost'

注意点

証明書更新、秘密鍵の権限、HTTPからHTTPSへの方針、TLSスキャナーによる定期確認を運用に組み込みます。

参考: 公式ドキュメント

続きを読む

Ubuntu で最小の Apache、PHP、MySQL 構成を作る

概要

小規模なWebアプリ用の基本構成は、OS標準パッケージ、最小権限のDBユーザー、HTTPS、バックアップ、更新管理を前提にします。

実施例

sudo apt update
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql
sudo systemctl enable --now apache2 mysql
sudo apachectl configtest

注意点

公開前にファイアウォール、DBの外部公開可否、管理画面のアクセス制限、復元テストまで確認します。

参考: 公式ドキュメント

続きを読む

Drupal 11 の設定を環境間で同期する

概要

設定は開発環境で変更し、差分をレビューしてから本番へ同期します。コンテンツ、アップロードファイル、秘密情報は設定同期と別に扱います。

実施例

# 開発環境
drush config:export -y
git add config/sync
git commit -m 'Update Drupal configuration'

# 本番デプロイ後
drush config:import -y
drush cache:rebuild

注意点

同期前にはデータベースバックアップを取り、表示された差分に意図しない削除がないことを確認してください。

参考: 公式ドキュメント

続きを読む

Composer を使って Drupal 11 を Ubuntu に導入する

概要

Drupal本体・モジュール・DrushはComposerで管理します。Webサーバーの公開ディレクトリはプロジェクトのwebに限定します。

実施例

sudo apt update
sudo apt install php php-cli php-mysql unzip
composer create-project drupal/recommended-project site
cd site
composer require drush/drush

注意点

インストール後はファイル権限、データベース接続、公開ファイルのバックアップ、更新手順を運用文書に残します。

参考: 公式ドキュメント

続きを読む

Drupal 11 の現行テキスト編集環境を設定する

概要

Drupal 5向けTinyMCE手順は使いません。Drupal 11では有効なテキスト形式、許可HTML、メディア、編集権限をまとめて設計します。

実施例

# 本番で直接変更せず、検証環境で確認する
drush config:export -y
drush config:import -y
drush cache:rebuild

注意点

外部エディターを採用する場合も、保守状況、セキュリティ方針、メディア統合、アップデート手順を先に評価します。

参考: 公式ドキュメント

続きを読む

Drupal 8 で、HTML マークアップに URL リンクを含めて戻り値を返す方法

$entity->toLink(..)という便利なヘルパー関数があるらしい。最後は->toString()で文字列にして$this->t(...)に渡す。

public function foo(Request $request = NULL) {

  $id = $request->get('id');  // from query string
  $entity = YourEntity::load($id);

  $message = $this->t('Check at @url.', [
    '@url' => $entity->toLink('<TEXT_TO_LINK_HERE>', 'edit-form')->toString(),
  ]);

  return [
    '#type' => 'markup',
    '#markup' => $message, 
  ];
}
続きを読む