본문으로 건너뛰기

사용자 스크립트 관리

가상서버 생성 시 사용자 스크립트를 적용할 경우 최초 부팅 시 해당 스크립트가 자동으로 실행되어 필요한 서비스나 프로세스를 설치, 설정하거나 서버 환경을 설정하는 데 사용됩니다.

이번 메뉴얼에서는 사용자 스크립트 관리하는 과정을 소개합니다.

  • 리눅스, 윈도우 운영체제에서 모두 사용하실 수 있습니다.
주의사항
  • 스크립트로 인한 오류는 기술지원을 제공하지 않습니다.
  • 스크립트는 영문으로만 작성해야 하며 계정당 10개까지 신청이 가능합니다.

다음 내용은 각 운영체제 환경에서 사용자 스크립트를 설정하여 서버 생성하는 방법에 대해 제공합니다. 알맞은 환경에 따라 사용자 스크립트를 구성하여야 합니다.

사용자 스크립트 등록 및 적용

  1. 관리 콘솔 페이지를 접근 후 상단 메뉴 중 서버 버튼을 클릭합니다. 콘솔 대시보드 페이지

  2. 페이지 왼쪽 가상서버 > 사용자 스크립트 관리를 클릭합니다. 콘솔 대시보드 페이지

  3. 신규 스크립트 등록하기 버튼을 클릭합니다. 콘솔 대시보드 페이지

  4. 클릭 시 스크립트를 등록할 수 있는 창이 나오며 스크립트 이름, 설명, 스크립트 내용을 작성합니다. 콘솔 대시보드 페이지

서버 생성 시 사용자 스크립트 적용

  1. 서버 생성 시 SSH Key & Script 단계에서 스크립트 부분에 생성한 스크립트를 선택 후 서버 생성을 진행합니다. 콘솔 대시보드 페이지

사용자 스크립트 수정

  1. 수정할 스크립트에 수정 버튼을 클릭합니다. 콘솔 대시보드 페이지

  2. 동일하게 스크립트 수정 창이 나오며 내용 변경 후 수정 버튼을 클릭합니다. 콘솔 대시보드 페이지

사용자 스크립트 예시

RockyLinux httpd 설치

RockyLinux에서 dnf update , upgrade 후 httpd 설치 합니다.

#!/bin/bash

#log 기록
exec > >(sudo tee /var/log/user-data.log|sudo sh -c "logger -t user-data -s 2>/dev/console") 2>&1

# 설치 전 dnf 업데이트
sudo dnf update -y

# Apache(httpd) 설치
sudo dnf install httpd -y

# Apache(httpd) 시작 및 부팅 시 자동 실행 설정
sudo systemctl enable --now httpd

콘솔 대시보드 페이지

해당 스크립트를 선택 후 설치하여 확인 시 httpd가 실행되고 있는 것을 확인할 수 있습니다.

Linux Hostname 설정

 #!/bin/bash
sudo hostnamectl set-hostname [hostname입력]
ex) sudo hostnamectl set-hostname iwinv-test

exec bash

콘솔 대시보드 페이지 hostname을 변경하여 hostname 명령어로 확인 시 정상적으로 변경된 것을 확인할 수 있습니다.

Redhat계열 OS MySQL설치 및 Root 패스워드 변경

mySQL 설치 후 root 패스워드를 변경합니다.

#!/bin/bash

# MySQL 설치
yum install -y mysql-server

# MySQL 서비스 시작
systemctl start mysqld

# MySQL 초기화 후 root 비밀번호 변경
TEMP_PASSWORD=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
mysql --connect-expired-password -u root -p"$TEMP_PASSWORD" -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '[PASSWORD입력]';"
ex) mysql --connect-expired-password -u root -p"$TEMP_PASSWORD" -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql123!';"



# MySQL 서비스 활성화
systemctl enable mysqld

콘솔 대시보드 페이지

서버 부팅 후 mysqld 설치 및 실행, mysql root 패스워드도 변경된 것을 확인할 수 있습니다.

Linux SSH Port 변경

#!/bin/bash

# SSH 설정 파일 백업
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_ori

# SSH 포트 변경
sed -i 's/#Port 22/Port [PORT입력]/' /etc/ssh/sshd_config

ex) sed -i 's/#Port 22/Port 6879/' /etc/ssh/sshd_config

# SSH 서비스 재시작
systemctl restart sshd

# 방화벽에서 새로운 포트 허용
firewall-cmd --permanent --add-port=[PORT입력]/tcp
ex) firewall-cmd --permanent --add-port=6879/tcp

firewall-cmd --reload

netstat -nltp 명령어로 실행된 sshd 포트가 정상적으로 변경되었고 sshd_config파일에도 적용된 것을 확인할 수 있습니다.

콘솔 대시보드 페이지

Windows Chrome 브라우저 설치

$LocalTempDir = $env:TEMP
$ChromeInstaller = "ChromeInstaller.exe"
$ChromeInstallerUrl = "http://dl.google.com/chrome/install/latest/chrome_installer.exe"

# Chrome 설치 파일 다운로드
Write-Host "Downloading Google Chrome installer..."
(new-object System.Net.WebClient).DownloadFile($ChromeInstallerUrl, "$LocalTempDir\$ChromeInstaller")

# Chrome 설치
Write-Host "Installing Google Chrome..."
Start-Process -FilePath "$LocalTempDir\$ChromeInstaller" -ArgumentList "/silent", "/install" -Wait

# 설치 중 모니터링
$Process2Monitor = "chrome"
Do {
$ProcessesFound = Get-Process | Where-Object { $Process2Monitor -contains $_.Name } | Select-Object -ExpandProperty Name
if ($ProcessesFound) {
Write-Host "Still running: $($ProcessesFound -join ', ')"
Start-Sleep -Seconds 2
} else {
# 다운로드한 설치 파일 삭제
Remove-Item "$LocalTempDir\$ChromeInstaller" -ErrorAction SilentlyContinue -Verbose
}
} Until (!$ProcessesFound)

Write-Host "Google Chrome installation complete."

서버 생성 후 확인 시 GoogleChrome 브라우저가 정상적으로 설치된 것을 확인할 수 있습니다.

콘솔 대시보드 페이지

Windows 셧다운 스케쥴링 설정

윈도우 매주 금요일 20시 서버 셧다운 스케줄 설정합니다.

$action = New-ScheduledTaskAction -Execute "shutdown.exe" -Argument "/s /t 0"
$trigger = New-ScheduledTaskTrigger -Weekly -At "20:00" -DaysOfWeek Friday
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount

Register-ScheduledTask -Action $action -Trigger $trigger -Settings $settings -Principal $principal -TaskName "ShutdownServerFriday" -Description "Shuts down the server every Friday at 20:00"

콘솔 대시보드 페이지

서버 생성 후 Task Scheduler 확인 시 정상적으로 설정된 것을 확인할 수 있습니다.

이외 다양한 방법으로 사용자 스크립트를 활용하실 수 있으며 서버를 편리하게 구축하실 수 있습니다. .