Ubuntu 16.04에서 Virtualmin 및 Ansible을 사용하여 여러 Wordpress 사이트를 배포하는 방법

Vultr 가상 서버의 일반적인 사용법은 Wordpress 웹 사이트를 호스팅하는 것입니다. 이 안내서는 가상 서버의 구성을 처음부터 자동화하고 (Ansible 사용) 여러 개의 독립적 인 Wordpress 웹 사이트 (Webmin / Virtualmin 사용)를 배포하는 방법을 보여줍니다. Virtualmin / Webmin은 동일한 시스템에서 여러 가상 서버 계정의 배포를 관리 할 수있는 그래픽 사용자 인터페이스입니다 (LAMP / LEMP 스택으로 완료). Virtualmin은 cPanel 및 Plesk와 매우 유사하며이 자습서에서는 무료 GPL 버전을 사용합니다. Vultr 서버를 처음 설치하고 Virtualmin을 설치 한 후 Virtualmin 인터페이스 내에서 여러 가상 서버를 매우 빠르게 설정하고 고유 한 도메인 이름으로 해당 가상 서버에 Wordpress를 직접 설치할 수 있습니다.

이 자습서에서는 긴 명령 목록을 수동으로 입력하는 대신 Ansible을 사용합니다. Ansible은 서버 작업을 안정적으로 반복적으로 자동화 할 수있는 Python 기반 자동화 도구입니다. 즉,이 자습서를 따르면 몇 가지 명령만으로 동일한 방식으로 다른 서버를 배포 할 수 있습니다.

전제 조건

  • 하나 이상의 정규화 된 도메인 이름 및 DNS 레코드에 대한 액세스
  • Vultr 계정

1 단계-로컬 머신에 Ansible 설치

로컬 컴퓨터 나 다른 서버에 Ansible을 설치하십시오.

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

2 단계-SSH 키 생성 및 서버 배포

SSH를 통해 서버에 로그인하면 Ansible이 작동합니다. 암호 대신 키를 사용하면 SSH 액세스가 가장 안전합니다. 먼저 공개 키와 개인 키 쌍을 생성 해 봅시다.

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

에서 ssh_keys디렉토리 지금이 두 개의 파일이있을 것입니다 ssh_keysssh_keys.pub. ssh_keys개인 키 파일이며 안전하게 보관해야합니다. 이제 ssh_keys.pub공개 키가 포함 된을 열 수 있습니다 .

Vultr 웹 대시 보드에 로그인하고을 클릭하십시오 Deploy New Server.

지역, 서버 유형 (Ubuntu 16.04), 서버 크기를 선택한 다음 6 부 ( SSH keys) 에서을 클릭하십시오 Add New. 다음 페이지에서 공개 키를 붙여 넣고 이름을 지정하고을 클릭하십시오 Add SSH key. 마지막으로 키가 선택되어 있는지 확인하고을 클릭하십시오 Deploy now.
서버 배포가 완료되면 IP 주소가 표시됩니다. 도메인 이름의 DNS 서버에 로그인하여이 주소를 가리켜 야합니다.

3 단계-기본 Ansible 구성 작성

Ansible의 자동화 파일을이라고 roles합니다. 먼저 디렉토리 구조 ( ansible1 단계에서 생성 한 디렉토리 내부 )와 기본 파일을 설정합니다.

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파일 우리는 파이썬 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 Task 작성

자동화를 작업으로 분류하면 이해하기 쉬운 자동화가 더 쉽습니다. 프로세스에서 각 작업에 대한 파일을 만들어 봅시다.

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

새 서버를 설정하는 첫 번째 단계는 repo 캐시를 업데이트하고 시간대를 설정하는 것입니다. common/handlers/setup.yml다음을 포함 하도록 파일을 편집하십시오 .

- apt: update_cache=yes
  sudo: yes

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

이제 루트 사용자에게 비밀번호 (virtualmin 웹 인터페이스에 액세스해야 함)를 제공하지만 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

보안을 위해서는 방화벽이 필요합니다. Uncomplicated Firewall을 사용하여 포트 22에서 SSH 액세스, 포트 에서 웹 액세스 및 포트 80에서 보안 웹 액세스를 허용합니다 443. ufw.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

선택적으로 스왑 파일을 포함 할 수 있습니다. 이것은 메모리 부족으로 인한 충돌을 피하기 위해 서버에 2GB 미만의 RAM이있는 경우 필수적입니다. 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/all3 단계에서 파일에 입력 한 것입니다. 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.php( example.net이 가상 서버 도메인 이름이 있는 곳 ) 을 방문하여 Wordpress 설치를 완료 할 수 있습니다 . DNS 레코드가 아직 전파되지 않은 Services > Preview Website경우 Virtualmin 메뉴에서 이동할 수 있습니다 .

이 단계를 여러 번 반복하여 동일한 Vultr 서버에 모두 여러 Wordpress 사이트를 만들 수 있습니다.



Fedora 25에서 Ghost v0.11 LTS를 배포하는 방법

Fedora 25에서 Ghost v0.11 LTS를 배포하는 방법

다른 시스템을 사용하십니까? Ghost는 201 년 이후 개발자와 일반 사용자 사이에서 인기를 얻고있는 오픈 소스 블로그 플랫폼입니다.

OpenBSD 6.2에 WordPress 설치

OpenBSD 6.2에 WordPress 설치

소개 WordPress는 인터넷에서 지배적 인 컨텐츠 관리 시스템입니다. 블로그에서 동적 컨텐츠가있는 복잡한 웹 사이트에 이르기까지 모든 것을 지원합니다.

Fedora 28에 Fork CMS 설치

Fedora 28에 Fork CMS 설치

다른 시스템을 사용하십니까? Fork는 PHP로 작성된 오픈 소스 CMS입니다. 포크 소스 코드는 GitHub에서 호스팅됩니다. 이 가이드는 Fork CM을 설치하는 방법을 보여줍니다.

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 년 이후 개발자와 일반 사용자 사이에서 인기를 얻고있는 오픈 소스 블로그 플랫폼입니다.

CentOS 6에서 WooCommerce로 WordPress 설정

CentOS 6에서 WooCommerce로 WordPress 설정

Vultr 인스턴스는 WordPress 블로그를 실행하는 좋은 방법이지만 WordPress의 확장 기능은 전자 상거래 플러그인 인 WooCommerce입니다.

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 (Content Management System)로 작성된 i

FreeBSD 11 FAMP VPS에 MODX Revolution을 설치하는 방법

FreeBSD 11 FAMP VPS에 MODX Revolution을 설치하는 방법

다른 시스템을 사용하십니까? MODX Revolution은 PHP로 작성된 빠르고 유연하며 확장 가능한 오픈 소스 엔터프라이즈 급 CMS (Content Management System)입니다. 내가

데비안 9에 포크 CMS 설치

데비안 9에 포크 CMS 설치

다른 시스템을 사용하십니까? Fork는 PHP로 작성된 오픈 소스 CMS입니다. 포크 소스 코드는 GitHub에서 호스팅됩니다. 이 가이드는 Fork CM을 설치하는 방법을 보여줍니다.

Debian 9 LAMP VPS에 MODX Revolution을 설치하는 방법

Debian 9 LAMP VPS에 MODX Revolution을 설치하는 방법

다른 시스템을 사용하십니까? MODX Revolution은 빠르고 유연하며 확장 가능하며 무료이며 오픈 소스 인 엔터프라이즈 급 CMS (Content Management System)로 작성된 i

Ubuntu 16.04에 Ghost를 배포하는 방법

Ubuntu 16.04에 Ghost를 배포하는 방법

다른 시스템을 사용하십니까? Ghost는 2013 릴리스 이후 개발자와 일반 사용자 사이에서 인기를 얻고있는 오픈 소스 블로그 플랫폼입니다. 나는

데비안 8.7에 Ghost를 배포하는 방법

데비안 8.7에 Ghost를 배포하는 방법

다른 시스템을 사용하십니까? Ghost는 2013 릴리스 이후 개발자와 일반 사용자 사이에서 인기를 얻고있는 오픈 소스 블로그 플랫폼입니다. 나는

데비안 9에 Dotclear를 설치하는 방법 (스트레치)

데비안 9에 Dotclear를 설치하는 방법 (스트레치)

다른 시스템을 사용하십니까? Dotclear는 매우 간단한 블로그 엔진입니다. 오픈 소스이며 사용하기 쉽습니다. 이 튜토리얼은 설치를 진행합니다.

Fedora 26 LAMP VPS에 MODX Revolution을 설치하는 방법

Fedora 26 LAMP VPS에 MODX Revolution을 설치하는 방법

다른 시스템을 사용하십니까? MODX Revolution은 빠르고 유연하며 확장 가능하며 무료이며 오픈 소스 인 엔터프라이즈 급 CMS (Content Management System)로 작성된 i

OpenBSD 6에서 Ghost Professional Publishing Platform 설정

OpenBSD 6에서 Ghost Professional Publishing Platform 설정

고스트는 워드 프레스와 경쟁 할 수있는 가장 최신의 신생 기업입니다. Ghost 개발자는 두 가지 모두를 사용하기로 결정했기 때문에 테마 개발이 쉽고 빠릅니다.

OpenBSDs HTTPD를 사용하여 OpenBSD 6.5에서 WordPress 실행

OpenBSDs HTTPD를 사용하여 OpenBSD 6.5에서 WordPress 실행

소개 OpenBSD 설치를 기본값에 가깝게 유지하고 추가 된 패키지가 많을수록 더 안전합니다. 더 많은 commo 동안

CentOS 7 LAMP VPS에 MODX Revolution을 설치하는 방법

CentOS 7 LAMP VPS에 MODX Revolution을 설치하는 방법

다른 시스템을 사용하십니까? MODX Revolution은 빠르고 유연하며 확장 가능하며 무료이며 오픈 소스 인 엔터프라이즈 급 CMS (Content Management System)로 작성된 i

데비안 8에 Ghost v0.11 LTS를 배포하는 방법

데비안 8에 Ghost v0.11 LTS를 배포하는 방법

다른 시스템을 사용하십니까? Ghost는 201 년 이후 개발자와 일반 사용자 사이에서 인기를 얻고있는 오픈 소스 블로그 플랫폼입니다.

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true

기술적 특이점: 인류 문명의 먼 미래?

기술적 특이점: 인류 문명의 먼 미래?

과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

2021년 의료 분야에서 인공 지능의 영향

2021년 의료 분야에서 인공 지능의 영향

의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.