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 사이트를 만들 수 있습니다.



Leave a Comment

NTLite를 사용하여 업데이트로 Windows 사용자 지정 ISO를 만드는 방법

NTLite를 사용하여 업데이트로 Windows 사용자 지정 ISO를 만드는 방법

NTLite를 사용하여 Vultr 시스템과 호환되는 Windows 사용자 지정 ISO를 만드는 방법을 단계별로 설명합니다. 최신 드라이버와 업데이트 통합을 포함한 완벽 가이드.

Vultr에서 BGP 구성

Vultr에서 BGP 구성

Vultr BGP 설정을 위한 단계별 튜토리얼. ASN 할당부터 IP 라우팅 구성, BIRD 데몬 설정, FreeBSD 특이사항 및 실전 문제 해결 팁 7가지 포함한 최종 가이드

WsgiDAV를 사용하여 Debian 10에 WebDAV 배포

WsgiDAV를 사용하여 Debian 10에 WebDAV 배포

WebDAV (Web Distributed Authoring and Versioning)를 이용한 원격 파일 작성을 위한 프레임워크로, WsgiDAV 설치 및 구성 방법을 안내합니다.

데비안 7에 Mailcow 설치

데비안 7에 Mailcow 설치

Mailcow는 DoveCot, Postfix 및 기타 여러 오픈 소스 패키지를 기반으로 하는 경량 메일 서버입니다. 데비안에서 Mailcow 설치 방법을 안내합니다.

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가지 상용 데이터 추출 도구