Ubuntu 16.04でVirtualminおよびAnsibleを使用して複数のWordpressサイトをデプロイする方法

Vultr仮想サーバーの一般的な使用法は、Wordpress Webサイトをホストすることです。このガイドでは、仮想サーバーの構成を最初から自動化し(Ansibleを使用)、複数の独立したWordpress Webサイトを展開する方法(Webmin / Virtualminを使用)について説明します。Virtualmin / Webminは、同じマシン上での複数の仮想サーバーアカウントの展開を管理できるグラフィカルユーザーインターフェイスです(LAMP / LEMPスタックを完備)。VirtualminはcPanelとPleskに非常に似ており、このチュートリアルでは無料のGPLエディションを使用します。Vultrサーバーの初期セットアップとVirtualminのインストール後、Virtualminインターフェイス内から複数の仮想サーバーを非常に迅速にセットアップし、独自のドメイン名を使用してWordpressをその仮想サーバーに直接インストールできます。

このチュートリアルでは、コマンドの長いリストを手動で入力する代わりに、Ansibleを使用します。Ansibleは、サーバータスクを確実かつ繰り返し自動化できるpythonベースの自動化ツールです。つまり、このチュートリアルを実行すると、いくつかのコマンドを使用するだけで、同じ方法で別のサーバーをデプロイできるようになります。

前提条件

  • 少なくとも1つの完全修飾ドメイン名とDNSレコードへのアクセス
  • Vultrアカウント

ステップ1-ローカルマシンにAnsibleをインストールする

ローカルマシンまたは別のサーバーにAnsibleをインストールします。

mkdir ansible
cd ansible
virtualenv env
source env/bin/activate
pip install ansible

ステップ2-SSHキーを生成してサーバーをデプロイする

Ansibleは、SSH経由でサーバーにログインすることで機能します。SSHアクセスは、パスワードではなくキーを使用する場合に最も安全です。まず、公開鍵と秘密鍵のペアを生成しましょう。

mkdir ssh_keys
ssh-keygen -t rsa -b 2048 -f ./ssh_keys

ではssh_keys、ディレクトリ今は二つのファイルも、だろうssh_keysssh_keys.pubssh_keysは秘密鍵ファイルであり、安全に保管する必要があります。ssh_keys.pubこれで、公開鍵を含むを開くことができます。

Vultr Webダッシュボードにログインし、をクリックしますDeploy New Server

地域、サーバーの種類(Ubuntu 16.04)、サーバーのサイズを選択し、パート6(SSH keys)でをクリックしますAdd New。次のページで、公開鍵を貼り付けて名前を付け、[]をクリックしますAdd SSH key。最後に、キーが選択されていることを確認して、をクリックしますDeploy now
サーバーのデプロイが完了すると、そのIPアドレスが表示されます。ドメイン名のDNSサーバーにログインして、このアドレスを指定する必要があります。

ステップ3-基本的なAnsible構成を作成する

Ansibleのオートメーションファイルはと呼ばれrolesます。最初に、ディレクトリ構造(ansible手順1で作成したディレクトリ内)と基本ファイルをセットアップします。

mkdir -p group_vars roles/common/tasks/ roles/common/handlers
touch hosts group_vars/all deploy.yml roles/common/handlers/main.yml

hostsファイルを編集して次の内容を含め、ip address作成したサーバーの代わりにを使用します。Ansibleでは、Ubuntu 16.04にデフォルトでインストールされていないpython 2を使用しています。hostsファイルでは、Python 3を使用するようにAnsibleに指示しています。

[common]  
192.0.2.1 ansible_python_interpreter=/usr/bin/python3

deploy.ymlファイルを編集して、以下を含めます。rootユーザーを使用します。

- name: apply common configuration to server
  hosts: all
  user: root
  roles:
    - common

/group_vars/allファイルを編集して、以下を含めます。これらの変数は、SSHキーの場所、スワップファイルのパラメーター、完全修飾ドメイン名、ルートパスワードをAnsibleに通知します。ファイルにはパスワードがクリアテキストで含まれているため、ファイルをソース管理に含めないでください。

ssh_dir: ./ssh_keys
swap_file_path: /swapfile
swap_file_size: 1G
swappiness: 1
hostname: example.com
new_password: YOUR_PASSWORD_HERE

common/handlers/main.ymlファイルを編集して、以下を含めます。

- name: restart sshd
  service: name=ssh state=restarted

ステップ4-基本的なサーバー設定のためのAnsibleタスクを作成する

Ansible自動化をタスクに分解すると、理解が容易になります。プロセスの各タスクのファイルを作成しましょう。

cd roles/common/tasks
touch hosts main.yml setup.yml users.yml ufw.yml swap.yml virtualmin.yml

main.yml は、Ansibleコマンドを含む各ファイルを指す必要があるため、以下を含むように編集します。

- include: setup.yml
- include: users.yml
- include: ufw.yml
- include: swap.yml
- include: virtualmin.yml

新しいサーバーを設定する最初のステップは、リポジトリキャッシュを更新してタイムゾーンを設定することです。common/handlers/setup.ymlファイルを編集して、以下を含めます。

- apt: update_cache=yes
  sudo: yes

- name: set timezone to Europe/London
  timezone:
    name: Europe/London

ここで、rootユーザーにパスワード(virtualmin Webインターフェースにアクセスする必要があります)を指定しますが、SSHを介したパスワードログインを無効にします(より安全なキー認証方式を使用しているため)。users.yml以下を含むように編集します。

- name: Change passwd
  user: name=root password={{ new_password | password_hash('sha512') }} update_password=always

- name: Disable SSH password login
  lineinfile: dest=/etc/ssh/sshd_config regexp="^#?PasswordAuthentication" line="PasswordAuthentication no"
  notify: restart sshd

セキュリティのために、ファイアウォールが必要です。複雑でないファイアウォールを使用して、ポート22でのSSHアクセス、ポートでのWebアクセス、ポート80での安全なWebアクセスを許可します443ufw.ymlファイルを編集して、以下を含めます。

- name: Set default firewall policy to deny all
  become: True
  ufw: state=enabled direction=incoming policy=deny
  tags: firewall

- name: enable SSH in firewall
  ufw: rule=allow port=22
  sudo: yes

- name: enable HTTP connections for web server
  ufw: rule=allow port=80
  sudo: yes

- name: enable HTTPS connections for web server
  ufw: rule=allow port=443
  sudo: yes

- name: enable firewall
  ufw: state=enabled
  sudo: yes

オプションで、スワップファイルを含めることができます。これは、メモリ不足によるクラッシュを回避するために、サーバーのRAMが2GB未満の場合に不可欠です。swap.yml以下を含むように編集します。

- name: Set swap_file variable
  set_fact:
    swap_file: "{{swap_file_path}}"
  tags:
    - swap.set.file.path

- name: Check if swap file exists
  stat:
    path: "{{swap_file}}"
  register: swap_file_check
  tags:
    - swap.file.check

- name: Create swap file
  command: fallocate -l {{swap_file_size}} {{swap_file}}
  when: not swap_file_check.stat.exists
  tags:
    - swap.file.create

- name: Change swap file permissions
  file: path="{{swap_file}}"
        owner=root
        group=root
        mode=0600
  tags:
    - swap.file.permissions

- name: Format swap file
  sudo: yes
  command: "mkswap {{swap_file}}"
  when: not swap_file_check.stat.exists
  tags:
    - swap.file.mkswap

- name: Write swap entry in fstab
  mount: name=none
         src={{swap_file}}
         fstype=swap
         opts=sw
         passno=0
         dump=0
         state=present
  tags:
    - swap.fstab

- name: Turn on swap
  sudo: yes
  command: swapon -a
  when: not swap_file_check.stat.exists
  tags:
    - swap.turn.on

- name: Set swappiness
  sudo: yes
  sysctl:
    name: vm.swappiness
    value: "{{swappiness}}"
  tags:
    - swap.set.swappiness

ステップ5-virtualminセットアップにAnsibleタスクを追加する

Virtualminには、Ansibleでダウンロードして実行できる独自のインストーラーファイルがあります。ここでは、最小インストール(LINK)を使用しています。追加の項目は、Virtualminによるインストール時に設定されないMySQLサーバーのパスワードを設定することです。パスワードを変更する前に、MySQLを一時的に停止して認証ディレクトリを追加する必要があります。virtualmin.yml以下を含むように編集します。

- name: download virtualmin install script
  get_url: >
    url=http://software.virtualmin.com/gpl/scripts/install.sh
    dest=/root/install.sh
    mode=0755

- name: virtualmin install (takes around 10 mins) you can see progress using $ sudo tail -f /root/virtualmin-install.log
  tags: non-idem
  shell: ~/install.sh --force --hostname {{ hostname }} --minimal --yes
  args:
    chdir: /root

- name: temp stop mysql
  service:
    name: mysql
    state: stopped

- name: change owner (and group) of mysqld dir
  file:
    path: "/var/run/mysqld"
    state: directory
    owner: mysql
    group: mysql

- name: virtualmin set mysql password
  shell: virtualmin set-mysql-pass --user root --pass {{ new_password }}

- name: restart mysql
  service:
    name: mysql
    state: started

Ansibleロールが完了し、デプロイする準備が整いました。

手順6-Ansibleでインストールを実行する

ansibleフォルダーから、次のコマンドを実行するだけで、Ansibleが自動的に作成したすべてのタスクを実行します。初めて接続すると、SSHキーの警告が表示さyesれます。プロンプトに「」と入力するだけです。

ansible-playbook deploy.yml --private-key=ssh_keys/ssh_keys -i hosts

別のサーバーを使用したい場合は、hostsファイルのIPアドレスを変更し、そのコマンドを再度実行して、まったく同じ設定を完了することができます。

手順7-Virtualminのインストール後のウィザード

インストールが完了し、https://192.0.2.1:10000(サーバーのIPアドレスを使用して)移動できるようになりました。証明書は自己署名されているため、ブラウザーはセキュリティ警告を発行するので、をクリックadvancedして例外を追加します。ログインページが表示されます。ユーザー名はrootで、パスワードはgroup_vars/all手順3でファイルに入力したものです。Virtualminを初めて入力すると、インストール後のウィザードが表示されます。これらの設定を手動で実行するか、クリックcancelしてデフォルトを受け入れることができます。

ステップ8-サーバーを作成してWordPressをインストールする

最初のWordpressサーバーを起動して実行するには、Virtualminダッシュ��ードでをクリックしますCreate Virtual Server。ドメイン名、説明、管理者パスワードを入力する必要があります。ドメイン名はVirtualminの完全修飾ドメイン名とは異なる必要があり、DNSレコードがサーバーのIPアドレスを指すようにする必要があります。

をクリックしCreate Serverます。Virtualminがサーバーの作成を完了したらInstall Scripts、左側のメニューをクリックします。を選択してWordpressをクリックShow install optionsし、次のページでWordpressのインストール場所を選択します。を選択してAt top levelをクリックするだけInstall Nowです。

それがあなたがする必要があるすべてです-あなたはhttp://example.net/wp-admin/install.phpexample.netこの仮想サーバーのドメイン名はどこですか)にアクセスすることでWordpressのインストールを完了することができます。DNSレコードがまだServices > Preview Website反映されていない場合は、Virtualminメニューから移動できます。

この手順を複数回繰り返して、すべて同じVultrサーバー上に複数のWordpressサイトを作成できます。



OpenBSD 6.2にWordPressをインストールする

OpenBSD 6.2にWordPressをインストールする

はじめにWordPressは、インターネット上の主要なコンテンツ管理システムです。ブログから動的コンテンツを備えた複雑なWebサイトまで、あらゆるものを強化します

Fedora 28へのFork CMSのインストール

Fedora 28へのFork CMSのインストール

別のシステムを使用していますか?Forkは、PHPで記述されたオープンソースのCMSです。フォークのソースコードはGitHubでホストされています。このガイドでは、Fork CMのインストール方法を説明します

CentOS 6でWooCommerceを使用してWordPressを設定する

CentOS 6でWooCommerceを使用してWordPressを設定する

VultrインスタンスはWordPressブログを実行するための優れた方法ですが、WordPressの注目すべき拡張機能はWooCommerceです。これは、

Ubuntu 16.04にGhost v1.0.0ブログをインストールして設定する

Ubuntu 16.04にGhost v1.0.0ブログをインストールして設定する

Ghostは、Ember.js管理クライアント、JSON API、およびHandlebars.jsを利用したテーマAPIを備えたNode.js上に構築された最新のオープンソースの公開プラットフォームです。ゴース

Ubuntu 16.04にGhost v0.11 LTSをデプロイする方法

Ubuntu 16.04にGhost v0.11 LTSをデプロイする方法

別のシステムを使用していますか?Ghostは、201年以降、開発者や一般ユーザーの間で人気を博しているオープンソースのブログプラットフォームです。

Debian 9 LAMP VPSにMODX Revolutionをインストールする方法

Debian 9 LAMP VPSにMODX Revolutionをインストールする方法

別のシステムを使用していますか?MODX Revolutionは、高速、柔軟、スケーラブル、無料、オープンソースのエンタープライズグレードのコンテンツ管理システム(CMS)であり、i

CentOS 7にFork CMSをインストールする

CentOS 7にFork CMSをインストールする

別のシステムを使用していますか?Forkは、PHPで記述されたオープンソースのCMSです。フォークのソースコードはGitHubでホストされています。このガイドでは、Fork CMのインストール方法を説明します

Ubuntu 16.04 LAMP VPSにMODX Revolutionをインストールする方法

Ubuntu 16.04 LAMP VPSにMODX Revolutionをインストールする方法

別のシステムを使用していますか?MODX Revolutionは、高速、柔軟、スケーラブル、無料、オープンソースのエンタープライズグレードのコンテンツ管理システム(CMS)であり、i

Fedora 25にGhost v0.11 LTSを配備する方法

Fedora 25にGhost v0.11 LTSを配備する方法

別のシステムを使用していますか?Ghostは、201年以降、開発者や一般ユーザーの間で人気を博しているオープンソースのブログプラットフォームです。

FreeBSD 11 FAMP VPSにMODX Revolutionをインストールする方法

FreeBSD 11 FAMP VPSにMODX Revolutionをインストールする方法

別のシステムを使用していますか?MODX Revolutionは、PHPで記述された、高速、柔軟、スケーラブル、オープンソースのエンタープライズグレードのコンテンツ管理システム(CMS)です。それは

Debian 9へのFork CMSのインストール

Debian 9へのFork CMSのインストール

別のシステムを使用していますか?Forkは、PHPで記述されたオープンソースのCMSです。フォークのソースコードはGitHubでホストされています。このガイドでは、Fork CMのインストール方法を説明します

Debian 8.7にGhostを展開する方法

Debian 8.7にGhostを展開する方法

別のシステムを使用していますか?Ghostはオープンソースのブログプラットフォームで、2013年のリリース以降、開発者や一般ユーザーの間で人気を博しています。私

Debian 9(ストレッチ)にDotclearをインストールする方法

Debian 9(ストレッチ)にDotclearをインストールする方法

別のシステムを使用していますか?Dotclearは非常にシンプルなブログエンジンです。オープンソースで使いやすいです。このチュートリアルでは、インストールを実行します

OpenBSD 6でのGhost Professional Publishing Platformのセットアップ

OpenBSD 6でのGhost Professional Publishing Platformのセットアップ

Ghostは、WordPressに匹敵する最新かつ最高の新興企業です。ゴースト開発者が両方を使用することを決定したため、テーマの開発はすばやく簡単に学ぶことができます

OpenBSDs HTTPDを備えたOpenBSD 6.5でWordPressを実行する

OpenBSDs HTTPDを備えたOpenBSD 6.5でWordPressを実行する

はじめにOpenBSDのインストールをデフォルトに近づけ、パッケージを追加しないほど、安全性が高まります。もっとコモながら

CentOS 7.3にGhost v0.11 LTSを導入する方法

CentOS 7.3にGhost v0.11 LTSを導入する方法

別のシステムを使用していますか?Ghostは、201年以降、開発者や一般ユーザーの間で人気を博しているオープンソースのブログプラットフォームです。

Ghost v0.11 LTSをDebian 8に展開する方法

Ghost v0.11 LTSをDebian 8に展開する方法

別のシステムを使用していますか?Ghostは、201年以降、開発者や一般ユーザーの間で人気を博しているオープンソースのブログプラットフォームです。

Ubuntu 16.04にDotclearをインストールする方法

Ubuntu 16.04にDotclearをインストールする方法

別のシステムを使用していますか?Dotclearは、PHPの上に構築された非常にシンプルなブログエンジンです。このチュートリアルでは、UbuntにDotclearをインストールします

CentOS 7にNeos CMSをインストールする方法

CentOS 7にNeos CMSをインストールする方法

Neosは革新的なオープンソースのコンテンツ管理システムであり、オンラインコンテンツの作成と編集に最適です。著者と編集者を念頭に置いて、Neo

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、