[Microsoft Data School] 3일차 - 가상머신 & MariaDB 실습

RudinP·2026년 1월 5일
post-thumbnail

IaaS 기반 WordPress 설치

WordPress

  • 오픈소스
  • 블로그, 쇼핑몰 등 테마 지원
  • 전세계에서 웹사이트를 만드는데 많이 쓰는 플랫폼
  • 플러그인을 만들어 판매도 가능

1. 리소스그룹 만들기

2. 마켓플레이스 가상머신 선택

3. 가상머신 기본 사항 구성

가상 머신 이름

지역

  • Korea Central 권장

가용성 옵션

  • 인프라 중복

보안 유형

  • 신뢰할 수 있는 시작 가상 머신

이미지

  • Ubuntu Server 24.04 LTS x64 Gen2

VM 아키텍쳐

  • x64

크기

  • Standard_DS1_v2 (비용: $60/월)

인증 형식

  • SSH 공개 키 vs 암호 → SSH 선택

사용자 이름

  • 기본은 azureuser 이나, 보안상 변경해주는 것이 권고됨

SSH 공개 키 원본

  • 새 키 쌍 생성

SSH 키 유형

  • RSA SSH 형식

키 쌍 이름

  • 생성할 공개 키 이름 지정

인바운드 포트 규칙

공통 인바운드 포트

  • 선택한 포트 허용

인바운드 포트 선택

  • 80, 443,22 포트 선택
    • 22번 포트 선택X시 SSH로 가상머신 접근 불가
    • 80 및 443 포트는 실습으로 생성한 웹페이지를 외부에서 접근하기 위함
    • 웹사이트 구축 후 SSH 접속 불필요시 22포트는 OFF 해도 무방(VM 설정)

이후 검토+만들기 후 Private Key 다운로드

참고: VM 생성 중 오류 발생 시

  • VM 생성 중 오류가 발생할 경우 해당 부분을 제거 후 VM 재생성

CLI로 VM 만들기

az vm create --resource-group super001-azure-group --name vmwordpresskr001 --image Canonical:ubuntu-24_04-lts:server:24.04.202408210 --admin-username azureuser --generate-ssh-keys

공용 IP 주소 복사

  • 기본 정보 탭 → 기본 정보: SSH 접속 시 사용

연결 테스트

  • 연결 선택

  • 액세스 확인
    • 오류날경우 22 포트가 닫혀있거나 설정 잘못한 것

터미널에서 가상머신 접속

원시 SSH 설정 편집

  • 연결 → 설정 편집

  • 가상머신을 생성하며 받은 private key 경로를 SSH명령에 붙여넣기
  • 주의: 파일 자체 경로지, pem 파일이 위치한 파일경로가 아님.
ssh -i .\[프라이빗 키 이름]azureuser@[IP주소]

ex) ssh -i .\supers2000vm001_key.pem azureuser@4.217.248.48

Private key permission 관련 에러 처리

  • sddemolab.pem 대신 앞에서 생성한 프라이빗 키 이름 지정
icacls sddemolab.pem /reset
icacls sddemolab.pem /grant:r %username%:(R)
icacls sddemolab.pem /inheritance:r

mac의 경우

  • chmod 사용
    chmod 400 [vm이름].pem

SSH 기본 사용법

ssh username@hostname

  • ssh user@192.168.1.5

-p port번호

  • ssh user@192.168.1.5 -p 5001

-i identyfile

  • ssh -i c:\users\private_key user@192.168.1.5

scp localfile user@hostname:/remote/path

  • scp readme.md user@192.168.1.5:/users/azure

scp user@hostname:/remote/path/file localpath

  • scp user@192.168.1.5:/users/azure/readme.md .

시스템 업그레이드 및 필요 소프트웨어 설치 후 MariaDB 설정

  • 서버 설정 시 보통 업그레이드부터 한 뒤에 이후 일을 처리한다.
sudo apt update -y //최신 목록 업데이트
sudo apt upgrade -y //해당 목록으로 업그레이드

//필요한 라이브러리 설치
sudo apt install apache2 mariadb-server php php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap libapache2-mod-php php-mysql -y
sudo systemctl start apache2
sudo systemctl enable apache2
sudo mysql_secure_installation


80 포트 등 제대로 설정됐을 시 public ip 입력시 해당 화면이 뜬다.

MariaDB 보안 설정 화면

  • 실제 WordPress 구축 시 반드시 Y로 진행하여 복잡한 패스워드 지정

  • unix socket: 보안용 소켓 설정

MariaDB에 wordpress 데이터베이스 생성 및 설정

sudo mysql -u root
sudo mysql -u root -p(패스워드지정했다면)

CREATE DATABASE wordpress;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
FLUSH PRIVILEGES;
EXIT;

  • @localhost를 통해 해당 컴퓨터에서만 접근 가능

워드프레스 다운로드 및 구성

cd /var/www
sudo rm -rf *
sudo wget https://ko.wordpress.org/latest-ko_KR.tar.gz
sudo tar -xvzf latest-ko_KR.tar.gz
sudo rm latest-ko_KR.tar.gz
sudo mv wordpress html

영어버전은

sudo wget http://wordpress.org/latest.tar.gz

wp-config 설정

[참고] wp-config.php 수동 설정

  • 해당 파일로 수동 설정하면 후에 비밀번호 변경 등 수정이 힘들며, 업데이트 후 변경사항도 적용되지 않기 때문에 권장되지 않는다.
cd html
sudo mv wp-config-sample.php wp-config.php
sudo vi wp-config.php 
define( 'DB_NAME', 'wordpress' );
/** Database username */
define( 'DB_USER', 'wordpress' );
/** Database password */
define( 'DB_PASSWORD', '비밀번호' ); //앞에서 지정한 비밀번호 사용
/** Database hostname */
define( 'DB_HOST', 'localhost' )

Apache2 설정

  • 기본적으로 브라우저에 ip를 통해 연결을 해도 워드프레스 설정을 할 수 없다.
  • 쓰기 권한이 없기 때문
  • 다운로드 받은 파일의 권한이 현재 로그인한 사용자에게 귀속
  • /var/www/html 웹서버의 root 디렉토리의 권한을 www-data로 변경
  • 권한 설정 완료 후, 접근 권한 775 설정
    • rwx
    • user, group, other 순
  • 워드프레스를 위한 apache 설정 파일 생성
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 775 /var/www/html
sudo vi /etc/apache2/sites-available/wordpress.conf

DNS에 도메인 명 추가

  • DuckDNS에서 무료 도메인 발급 가능
    • {USER_DOMAIN}.duckdns.org 형태
  • azure 자체에서도 발급 가능

https://www.duckdns.org/domains

  • current ip에 가상머신의 ip 입력

가상머신 DNS 설정 메뉴

  • 네트워킹 - DNS 이름 - 구성
  • 사이트 이름 지정(DNS 이름 레이블(옵션))
  • 저장
  • 설정된 이름이 가상머신 개요 페이지에서 표시되는지 확인

wordpress.conf 설정

<VirtualHost *:80>

	ServerAdmin '관리자 이메일 주소'
	DocumentRoot /var/www/html
	ServerName '서버 도메인 주소'
    
	<Directory /var/www/html/>
		Options FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>
    
	ErrorLog ${APACHE_LOG_DIR}/yourdomain_error.log
	CustomLog ${APACHE_LOG_DIR}/yourdomain_access.log combined

</VirtualHost>
  • virtual host 설정하는 것
  • 어떤 도메인에서 요청이 들어왔을 때 파일에 대한 설정이 먼저 불러짐
  • 디렉토리 태그를 통해 옵션 지정
    • FollowSymLinks: 바로가기처럼 작동하는 파일을 따라가서 원본 파일이나 디렉토리에 접근하도록 허용
    • AllowOverride All: 아파치 웹서버 설정에서 특정 디렉토리에 대해 사용자가 파일을 이용해 서버 설정을 변경하는 것을 허용
    • Require all granted: 해당 디렉토리의 모든 파일 접근을 허용

참고

home 의 bashrc가 가장 먼저 실행되는 파일인데, 여기에서 파일 등의 색처리를 지정 가능

Apache 서버 설정

  • apache 실행
sudo a2ensite worpress.conf
  • restart 로 아파치 서버 재시작
sudo systemctl restart apache2

https 설정

  • aws는 loadbalance 사용 제약
    • 월 구독료가 추가됨
  • certbot 사용시 Let's encrypt에서 인증서 발급
    • 비용 0

Certbot 구성

  • certbot은 apache 에 ssl을 적용하는 단계를 줄여주는 라이브러리다.
sudo apt install python3-certbot-apache -y
sudo certbot --apache -d '서버명' //http 제외한 도메인 주소만 입력
  • -d: destination

  • 이메일 입력 (아무거나 써도 됨)
  • Y
  • Y 또는 N (등록과는 무관)

제대로 적용되면 ssl 파일이 생성된다.
참고: IP주소에는 ssl이 적용되지 않고, 도메인에만 적용됨을 유의(IPv6라면 상관 x)

두 개 이상 DNS에 ssl 적용하기

sudo cp wordpress.conf [추가파일이름].conf
sudo a2ensite [추가파일이름].conf //안할시 인식 안됨
sudo systemctl reload apache2
sudo certbot --apache -d '추가도메인주소'

브라우저에서 열기

https://서버이름.koreacentral.cloudapp.azure.com

워드프레스 설정

  • 설정에서 사용자명과 비밀번호 입력
    • 사이트 내용 편집 화면 접속 위해 필요

리소스 그룹 삭제

  • 개요 → 리소스 그룹 삭제 → 선택한 가상 머신 및 가상 머신 확장 집합에 강제 삭제 적용

PaaS 기반 WordPress 설치

1. Marketplace 에서 wordpress 선택

2. Wordpress 기본 구성

  • 생성한 리소스 그룹 지정
  • 지역 Korea Central
  • 사이트 이름 지정
  • 플랜 변경에서 기본
  • 관리자 이메일 지정
  • 관리 사용자 ID 및 비번 지정

3.배포

  • 필요 없는 구성도 배포가 됨 → 오래걸림
profile
iOS 개발자가 되기 위한 스터디룸/스터디의 레퍼런스는 모두 kxcoding

0개의 댓글