簡単な仮想マシン(VM)
概要
このドキュメントは、サーバーソリューションを購入したクライアント向けにEasy Softwareが提供する仮想マシン(VM)を対象としています。 1年2022月XNUMX日以降に生成されたVMに有効です。
それはあなた自身のサーバー環境のインスピレーションとしても役立つかもしれませんが、そのような場合、あなたが使用している可能性のあるコンポーネントやテクノロジーの多様性のために保証はありません。
VMは、小規模なサイト(cca 10の同時稼働ユーザー)専用に構成されています。 VMは ほとんど 本番環境に対応していますが、経験豊富な管理者がVMを環境にインストールし、バックアップ、監視、ネットワーキング、セキュリティポリシーなどを設定する必要があります。EasySoftwareは、専用環境でこのVMを実行する責任を負いません。VMは、アプリケーションがどのようにできるかの一例です。ホストされます。
このREADMEは、「EasyProject」または「EasyRedmine」のいずれかで置き換えることができる「Application」に対応しています。
最初のステップ
VMは特定の時点で生成されたため、一部のコンポーネントは、展開するまでにすでにいくつかのパッチまたはセキュリティ修正プログラムをリリースしている可能性があります。
そのため、常にバックアップから始めて、その後に続ける必要があります OSのアップデート。 最新のセキュリティ修正をインストールし、古いコンポーネントを更新する可能性があります。
VMの説明
OSは64ビット版のDebianです。
重要なデフォルトは次のとおりです。
- OSはポート22経由でSSHで利用可能
- ファイアウォールが設定されていません(システム管理者次第です)
- ディスクは約 100 GB です
- /ブート512M
- / 30G
- /ホーム60G
- 4Gを交換する
- ディスクを増やすには、利用可能な LVM を使用します
- アプリケーションはHTTPSでリッスンしますが、自己署名証明書を使用するため、できるだけ早く置き換える必要があります(詳細は以下を参照)。
- アプリケーションは/ home / easy / [application_name] / currentで実行されています。
Linuxログイン:
- ユーザー名:簡単
- パスワード:e4syPwd-
できるだけ早く変更してください。 これを行うには、コマンドを実行します passwd インターミナル
Mysqlログイン:
コマンドを使用するだけ mysql あなたのアプリ名 (アプリケーション名のすべてのドットまたはダッシュは下線に置き換える必要があります。例:your-app-nameはyour_app_nameである必要があります)
アプリケーションログイン:
デフォルトのログイン (「クリーン」データベースの場合) は次のとおりです。
- ユーザー名:admin
- パスワード:admin
VM のデフォルトのログイン デモデータ 次のとおりです。
- ユーザー名:マネージャー
- パスワード:easy848
クラウドアプリケーションのデータベースの場合、パスワードはそのままです。
アプリケーションのホームの構造
.
├──バックアップ#バックアップスクリプトはそこにデータを保存します
└──$ APP_NAME
├──application.pid
├──application.sock#nginxはこのソケットを使用します
├──設定
│├──#事前に生成されたアプリケーション構成
│├──#(データベース、メーリング、シークレット、アプリサーバーなど...)
│└──..。
├──現在
│├──config#すべてのアプリケーション構成
││├──configuration.yml#ここで送信メールの設定を設定します
││├──database.yml#ここで設定されたデータベースアクセス
││└──..。
│├──ファイル#永続的なアプリケーションデータ
│├──ログ#アプリケーションログ
│├──public#静的ファイル
│└──バージョン#アプリケーションバージョン
└──public_html-> / home / easy / $ APP_NAME / current
アプリケーションの再起動は、sudoとして「systemctlrestart puma @ [application_name]」を使用するだけです。
お客様の責任
VMは、最新の推奨バージョンのDebianで実行されます。 システムには、次のような一般的なメンテナンスが必要です。
- 定期的なアップデート
- リソースの監視(空き領域、メモリ使用量、負荷など)
- 独立したディスクへのデータバックアップ
- セキュリティポリシー
更新版
システムのセキュリティ更新を頻繁に行います。 少なくとも週にXNUMX回は行うことをお勧めします。 更新する前に、最新のバックアップが利用可能で機能していることを確認してください。
セキュリティアップデートのみを実行する方法の公式ドキュメントhttps://wiki.debian.org/UnattendedUpgrades
リソースモニタリング
Easy Softwareは、Prometheusで優れた経験を持っています。 したがって、node_exporterは1.3以降のVMの一部です。 2022年。
Node ExporterとPrometheusの公式の非常に基本的なドキュメントは、https://prometheus.io/docs/guides/node-exporter/にあります。最高のクイックスタートgrafanaダッシュボードは、https://grafana.com/grafana/dashboards/1860にあります。
使用状況に応じて、VMリソース設定を調整する必要があります。たとえば、RAMの量やVMに提供されるコアの数を増やします。 これらの構成はすべて、仮想環境管理者が定期的に行う必要があります。
ノードエクスポータはポート9100でリッスンします。
node_exporterを無効にする
node_exporterは、以下を実行して無効にすることができます。
systemctl stop node_exporter.service
systemctl は、node_exporter.service を無効にします。
systemctlマスクnode_exporter.service
次の再起動後にノードエクスポータを起動できなくなります...
Easy Softwareによる完全な環境サポート(セキュリティとパフォーマンスの最適化、バックアップ、監視など)が必要な場合は、クラウドソリューションに移行することをお勧めします。
データのバックアップ
VMに存在する事前構成されたバックアップは実用的な例であり、インフラストラクチャに適合させる必要があり、監視する必要があります。 適切なバックアップは次のようになっていることに注意してください。
- バックアッププロセスが終了した後にチェックされます(少なくともバックアップのサイズをチェックしてください)
- 安全な場所に保管
- 実行環境から離れている(少なくとも別の都市では)
- 回復を実行する能力をテストするために時々復元されます
アプリケーションはデータをXNUMXつの場所に保存するため、両方をバックアップすることを忘れないでください。
DB
データベースのバックアップは、非常に簡単に誤って実行される可能性があります。 mysqlデータベースのバックアップを実行するための最良かつ最も安全な方法は、サンプルスクリプトに示されているように、データベースダンプを使用することです。 バージョンに依存しないバックアップを作成します。これにより、全体を復元したり、古いデータの一部のみを取得したりできます。
例:
mysqldump --add-drop-tables --routines --triggers --flush-logs $ DATABASE_NAME> path / to / file_where_db_will_be_stored.sql
/ var / lib / mysqlからファイルをコピーすることは、DBバックアップを保存する誤った方法です。
アプリケーションにアップロードされたすべてのファイル/添付ファイルは、に保存されます / home / easy / $ APP_NAME / current / files。 このディレクトリのコンテンツ全体をバックアップする必要があります。 この場合、内容をコピーするだけです。
セキュリティポリシー
VMには、home / easy / .ssh/authorized_keysにEasySoftwareエンジニア用のSSHキーが含まれています。 また、/ etc / iptablesのiptablesファイアウォールのルールにより、EasySoftwareIPアドレスへのアクセスが許可されます。
これらのポリシーは両方とも、お客様の要求に応じてスタッフが最終的にリモートサポートすることを目的としています。 アクセスポリシーは完全にあなたの管理下にあります。
自動タスク
すべての自動タスクは、5mごとにスケジュールされたジョブを開始するCRONとSidekiqによってスケジュールされます。 パフォーマンス要件が高いため、これらのジョブを短い間隔で実行しないことをお勧めします。 変更を加えるには、usereasyの下で以下のコマンドを実行して編集できます。
crontab -e
このVMにデータを移行する
古いアプリケーションまたはRedmineデータ(SOURCE)をVM(TARGET)にインポートする方法。 これはほとんどの場合機能しますが、ソースRedmineインスタンスでサードパーティのプラグインを使用している場合、この手順は機能しない可能性があります。
1.(SOURCE)からMySQLダンプファイルを作成します。
mysqldump --opt easy> backup.sql
2. backup.sqlを(TARGET)に転送します
3.(TARGET)のアプリケーションフォルダに移動します
cd / home / easy / [application_name] / current
4.(TARGET)データベースを再作成します
bundle exec rake db:drop db:create RAILS_ENV = product DISABLE_DATABASE_ENVIRONMENT_CHECK = 1
5.backup.sqlをインポートします
mysql [db_name] <backup.sql
6.添付ファイルやその他のファイルを(SOURCE)[redmine] / filesから(TARGET)/ home / easy / [application_name] / current / filesに転送します
7.実行:
bundle exec rake easyproject:install RAILS_ENV = production
8.アプリケーションを再起動します
sudo systemctl restart puma @ [application_name]
トラブルシューティング
不足しているsidekiq
一部のマシンでは、sidekiq @ .serviceファイルが追加されていません。 sidekiq @ .serviceファイルが表示されている場合は、/ etc / systemd / systemフォルダーを確認してください。 そうでない場合は、追加してください。 次のものが含まれている必要があります。
[単位]
Description =%iのSIDEKIQサービス
After = redis.service
PartOf = puma @%i.service unicorn@%i.service
[サービス]
Type = simple
PIDFile = / home / easy /%i / sidekiq.pid
Environment = RAILS_ENV = production
環境= MALLOC_ARENA_MAX = 2
User = easy
Group = www-data
WorkingDirectory = / home / easy /%i / public_html
ExecStart = / usr / local / rvm / bin / rvm default do bundle exec sidekiq -e Production
ExecReload = / bin / kill -s TSTP $ MAINPID
再起動=常に
[インストール]
WantedBy = multi-user.target puma@%i.service unicorn@%i.service
ファイルが作成された後、実行します
sudo systemctl daemon-reload
pumaを再起動します
MYSQLバックアップは間違ったデータベースを対象としています
この問題を修正するには、ファイル/usr/local/bin/mysql-backups.shを開き、DB名「easy」をアプリDBに置き換えてください(通常はアプリ名と同じですが、すべてのダッシュとドットを下線に置き換える必要があります)