ExperionCrawler First Commit
This commit is contained in:
98
deploy.sh
Normal file
98
deploy.sh
Normal file
@@ -0,0 +1,98 @@
|
||||
#!/bin/bash
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# ExperionCrawler — Ubuntu 서버 배포 스크립트
|
||||
# 사용법: sudo bash deploy.sh
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
|
||||
set -e
|
||||
|
||||
APP_NAME="experioncrawler"
|
||||
APP_DIR="/opt/ExperionCrawler"
|
||||
SERVICE_USER="www-data"
|
||||
DOTNET_MIN="8.0"
|
||||
|
||||
echo ""
|
||||
echo "╔══════════════════════════════════════╗"
|
||||
echo "║ ExperionCrawler 배포 스크립트 ║"
|
||||
echo "╚══════════════════════════════════════╝"
|
||||
echo ""
|
||||
|
||||
# ── 1. .NET 8 설치 확인 ─────────────────────────────────────────
|
||||
echo "▶ .NET SDK 확인..."
|
||||
if ! command -v dotnet &> /dev/null; then
|
||||
echo " .NET이 설치되어 있지 않습니다. 설치를 시작합니다..."
|
||||
wget -q https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb \
|
||||
-O packages-microsoft-prod.deb
|
||||
dpkg -i packages-microsoft-prod.deb
|
||||
rm packages-microsoft-prod.deb
|
||||
apt-get update -q
|
||||
apt-get install -y dotnet-sdk-8.0
|
||||
else
|
||||
echo " .NET $(dotnet --version) 확인됨"
|
||||
fi
|
||||
|
||||
# ── 2. 빌드 ─────────────────────────────────────────────────────
|
||||
echo "▶ 빌드 중..."
|
||||
cd "$(dirname "$0")/src/Web"
|
||||
dotnet publish -c Release -o "$APP_DIR" --nologo -q
|
||||
echo " 빌드 완료 → $APP_DIR"
|
||||
|
||||
# ── 3. 필수 디렉토리 및 권한 ─────────────────────────────────────
|
||||
echo "▶ 디렉토리 설정..."
|
||||
mkdir -p "$APP_DIR/pki/own/certs"
|
||||
mkdir -p "$APP_DIR/pki/trusted/certs"
|
||||
mkdir -p "$APP_DIR/pki/issuers/certs"
|
||||
mkdir -p "$APP_DIR/pki/rejected/certs"
|
||||
mkdir -p "$APP_DIR/data/csv"
|
||||
|
||||
chown -R "$SERVICE_USER":"$SERVICE_USER" "$APP_DIR"
|
||||
chmod -R 750 "$APP_DIR"
|
||||
echo " 권한 설정 완료 (소유자: $SERVICE_USER)"
|
||||
|
||||
# ── 4. systemd 서비스 등록 ───────────────────────────────────────
|
||||
echo "▶ systemd 서비스 등록..."
|
||||
cat > /etc/systemd/system/${APP_NAME}.service <<EOF
|
||||
[Unit]
|
||||
Description=ExperionCrawler OPC UA Web Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=${SERVICE_USER}
|
||||
WorkingDirectory=${APP_DIR}
|
||||
ExecStart=/usr/bin/dotnet ${APP_DIR}/ExperionCrawler.dll
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
KillSignal=SIGINT
|
||||
SyslogIdentifier=${APP_NAME}
|
||||
Environment=ASPNETCORE_ENVIRONMENT=Production
|
||||
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
|
||||
|
||||
# 리소스 제한
|
||||
LimitNOFILE=65536
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable ${APP_NAME}
|
||||
systemctl restart ${APP_NAME}
|
||||
echo " 서비스 등록 및 시작 완료"
|
||||
|
||||
# ── 5. 방화벽 설정 (ufw 사용 시) ────────────────────────────────
|
||||
if command -v ufw &> /dev/null; then
|
||||
echo "▶ 방화벽 포트 5000 개방..."
|
||||
ufw allow 5000/tcp comment 'ExperionCrawler'
|
||||
fi
|
||||
|
||||
# ── 6. 상태 확인 ─────────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "▶ 서비스 상태:"
|
||||
systemctl status ${APP_NAME} --no-pager -l | head -20
|
||||
|
||||
echo ""
|
||||
echo "╔══════════════════════════════════════════════════════════╗"
|
||||
echo "║ 배포 완료! ║"
|
||||
echo "║ 접속 주소: http://$(hostname -I | awk '{print $1}'):5000 ║"
|
||||
echo "╚══════════════════════════════════════════════════════════╝"
|
||||
Reference in New Issue
Block a user