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サイトを作成できます。



Leave a Comment

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

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

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

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

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

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