자료실

연구 포털 제작 방법

웹 공간에 파일을 올리고 새 페이지를 만드는 방법. SFTP 접속부터 데이터베이스 쓰기까지.

연구 포털 제작 방법

김우진 · Regaining Trust in AI 연구 포털 · 2026-08-23


내 공간

계정이 발급되어 웹 공간 하나가 생겼습니다.

구분 값
포털 주소 https://aiforalab.com/p/kimwj2990/
같은 내용 https://aiforalab.com/trust-recovery/
SFTP 호스트 aiforalab.com · 포트 10022
아이디 kimwj2990
비밀번호 연구실에서 따로 전달받은 것

⚠️ 두 주소는 같은 폴더입니다. 한쪽을 고치면 다른 쪽도 함께 바뀝니다. 자세한 구조는 관리방법 문서를 보세요.


1 · 파일 올리기

WinSCP나 FileZilla로 접속합니다.

VS Code로 작업하신다면 SFTP 확장을 쓰면 저장할 때마다 자동으로 올라갑니다. (Remote-SSH 확장은 이 서버에서 동작하지 않습니다.)

접속하면 폴더 두 개가 보입니다.

site/       ← 웹에 공개. 지금 논문 포털이 여기 들어 있습니다
private/    ← 웹에 노출되지 않음. 설정 파일과 오류 기록이 있습니다

site/에 올리면 즉시 반영됩니다. 별도의 배포 절차가 없습니다.

지금 site/ 안의 모습입니다.

site/
├── index.html                    논문 포털 본문
├── figures/                      그림 (web용 png · 논문용 png · pdf)
├── table1_final.R                표 1 생성 R 스크립트
├── trust_recovery_figures.R      그림 생성 R 스크립트
└── thumb.svg                     공유 썸네일

2 · 새 페이지 만들기

site/ 안에 폴더를 만들면 그 순간 주소가 생깁니다.

site/appendix/index.html   →   https://aiforalab.com/p/kimwj2990/appendix/
                               https://aiforalab.com/trust-recovery/appendix/

폴더 이름은 영문 소문자·숫자·하이픈을 권합니다 (appendix, study2, revision-2).

작업 순서는 이렇습니다.

  1. 고칠 파일을 PC로 내려받습니다
  2. PC에서 고칩니다
  3. SFTP로 덮어씁니다
  4. 브라우저에서 Ctrl + F5로 새로고침해 확인합니다

화면이 안 바뀌면 대부분 브라우저 캐시입니다.


3 · R 작업은 서버에서

논문의 표와 그림을 만드는 R 스크립트가 이미 site/에 들어 있습니다. 같은 작업을 연구 서버의 RStudio에서 바로 할 수 있습니다.

https://middleton.o-r.kr/rstudio/ · 아이디 kimwj2990

Python이 필요하면 Jupyter도 같은 계정으로 쓸 수 있습니다 (GPU 사용 가능).


데이터베이스 — 서버가 두 대입니다

헷갈리기 쉬운 부분입니다. 연구 데이터는 ① 하나만 쓰시면 됩니다.

① 루멘 (middleton) — 연구 데이터를 여기 쌓습니다

값
주소 https://middleton.o-r.kr/adminer/
서버 mysql-server — 이미 채워져 있습니다
사용자 kimwj2990
데이터베이스 kimwj2990 (전권 있음)

서버 칸은 이미 mysql-server 로 채워져 있습니다. 그대로 두세요. 혹시 비어 있거나 localhost 로 되어 있으면 mysql-server 로 고치셔야 합니다.

localhost 를 넣으면 Connection refused 가 납니다. Adminer 가 별도 컨테이너로 돌기 때문에 localhost 는 Adminer 자기 자신을 가리켜서 그렇습니다. 아이디·비밀번호 문제가 아닙니다.

주소에 미리 넣어 둘 수도 있습니다.

https://middleton.o-r.kr/adminer/?server=mysql-server&username=kimwj2990

실험 응답(N=120)과 재현 결과를 여기 넣어 두면 R·Python·웹에서 같은 자료를 함께 볼 수 있습니다. 개인 식별 정보가 있다면 포털 site/ 에는 올리지 마세요.

Jupyter·RStudio 에서도 같은 자료를 그대로 읽습니다.

import pymysql
db = pymysql.connect(host='mysql-server', user='kimwj2990',
                     password='<비밀번호>', database='kimwj2990', charset='utf8mb4')
library(DBI)
con <- dbConnect(RMariaDB::MariaDB(), host = "mysql-server",
                 user = "kimwj2990", password = "<비밀번호>", dbname = "kimwj2990")

② aiforalab — 포털 웹페이지가 DB를 읽어야 할 때만

보통은 쓰지 않습니다. 포털 페이지가 PHP 로 DB를 직접 읽는 기능을 만들 때만 필요합니다.

값
사용자 kimwj2990
만들 수 있는 DB 이름이 kimwj2990_ 로 시작하는 것
PHP 안에서 mysqli_connect('localhost', ...) — 여기서는 localhost 가 맞습니다
CREATE DATABASE kimwj2990_mydata CHARACTER SET utf8mb4;

PC의 DB 도구로 붙으려면 SSH 터널이 필요합니다.

ssh -N -p 10022 -L 13306:127.0.0.1:3306 kimwj2990@aiforalab.com

그 상태에서 HeidiSQL·DBeaver 에 호스트 127.0.0.1, 포트 13306 으로 접속합니다.

한 줄 정리 — 연구 데이터는 루멘(mysql-server), 웹페이지용은 aiforalab(localhost). 두 곳은 완전히 별개이고 자료가 오가지 않습니다.

5 · 알아두실 제약

이 서버는 오래된 구성이라 몇 가지 제한이 있습니다. 미리 알고 시작하면 헤맬 일이 없습니다.

항목 내용
PHP 버전 5.4.45 — ??(널 병합), 화살표 함수 등 최신 문법이 동작하지 않습니다
명령줄 셸 제공되지 않습니다. exec·shell_exec 계열은 막혀 있습니다
상주 서버 Node·Python 서버는 띄울 수 없습니다. 정적 HTML과 PHP+MySQL은 제한이 없습니다
파일 접근 범위 자기 폴더와 /tmp 밖은 PHP가 읽지 못합니다
업로드 용량 파일 64MB · 요청 80MB

R이나 Python 분석은 연구 서버(RStudio·Jupyter)에서 하고, 결과 파일만 포털에 올리는 방식을 권합니다.


6 · 문제가 생기면

증상 확인할 것
화면이 안 바뀜 브라우저 캐시 — Ctrl + F5
흰 화면 / 500 오류 private/php-error.log 마지막 줄에 원인이 있습니다
403 오류 파일 권한 문제일 수 있습니다. 연구실에 알려 주세요
한쪽 주소만 안 바뀜 있을 수 없는 일입니다. 두 주소는 같은 폴더입니다 — 캐시를 지워 보세요

7 · 함께 쓸 수 있는 것

도구 주소 아이디
💬 Chat https://middleton.o-r.kr/?app=chat kimwj2990@naver.com (이메일 전체)
📓 Jupyter https://middleton.o-r.kr/jupyter/ kimwj2990
📊 RStudio https://middleton.o-r.kr/rstudio/ kimwj2990
🗄️ MySQL https://middleton.o-r.kr/adminer/?server=mysql-server kimwj2990

비밀번호는 포털과 같습니다. Chat만 이메일 전체로 로그인합니다.


8 · 참고