트러블슈팅🌠

제곧내

🛠️ 다인위키 트러블슈팅 로그



🛠️ 트러블슈팅 로그 (2025.04.20)


⚠️ 모바일 화면에서 로고 깨지는 문제 (2024.04.19 해결완료)

모바일 화면에서 헤더 로고 이미지 깨짐 현상 발생


✅ 조치 사항

- 이미지 포맷을 PNG로 변경해서 정상 출력되도록 수정함


⚠️ 모바일 화면에서 본문 이미지 깨짐 문제

본문에 이미지 첨부 시 모바일 화면에서 깨짐


🔍 원인 : ?

✅ 진행상황: 점검중


⚠️ PDF 다운로드 시 글씨 깨짐 (인코딩 문제)

본문을 PDF로 다운로드할 때 글자가 깨지는 문제

🔍 원인 : ?

✅ 진행상황: 점검중


⚠️ phpMyAdmin 리디렉션 문제 (HTTPS 443 포트)

https://dainwiki.com/ 접속 시 자동으로 /dashboard로 이동하고 그 후 phpMyAdmin으로 연결됨

image.png

http://dainwiki.com 을 통해서 접속하면 정상접속 됨

image.png


🔍 원인 : ?

✅ 진행상황: 점검중

- 리디렉션 설정 및 서버 포트 설정 점검 중





[트러블슈팅 #1] HTTPS 접속 보안 경고 해결 방법


HTTPS 로 접속하면 보안경고 "연결이 비공개로 설정되어 있지 않습니다." 뜨는 문제

💡 보안경고 없애려면 SSL 인증이 필요하다.


XAMPP는 인증서 생성을 간편하게 돕는 일괄 스크립트를 제공한다.

기본 설치 폴더로 가면 C:\xampp\apache에 makecert.bat 이라는 패치파일이 있을것이다.

1. 에디터로 makecert.bat 열기

bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 1825 -extfile v3.ext

2. 소스 수정 후 배치파일과 같은 위치에 v3.ext파일 생성

authorityKeyIdentifier-keyid, issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, non Repudiation, keyEncipherment,
dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 localhost
DNS.2 = *.dainwiki.com 
DNS.3 = dainwiki.com 
DNS.4 = 127.0.0.1

3. makecert.bat를 실행해서 SSL인증서를 생성한다.

4. C:\xampp\apache\conf\ssl.crt 에서 server.srt 실행 후 인증서 설치

5. 서버 재기동 후 서비스 테스트

https://awesomepossum.tistory.com/846

[트러블슈팅 #2] HTTPS 로 접속시 /dashboard로 리디렉션 되는 문제


HTTPS 로 접속하면 url에 /dashboard 붙으면서 phpMyAdmin페이지로 리디렉션 되는 문제

https://dainwiki.com 으로 접속했을 때

원래는 Bookstack (8080포트에서 구동 중) 으로 프록시하려고 했는데

이상하게 /dashboard/가 붙으면서 phpMyAdmin 쪽으로 넘어간다

→ DainWiki가 가동중인 8080 포트로 프록시를 연결해주고 싶다.


한 마디로 /(루트) 요청을 받아야 하는데, 다른 기본 설정(/dashboard/나 phpMyAdmin)으로 빠지는 현상을 겪고 있다.

아마도 서버 루트 디렉토리(/var/www/html/)에 phpMyAdmin이 설치되어 있어서 기본 요청이 그쪽으로 가는 것 같다.



💡Apache 설정파일에서 8080으로 프록시 고정 시키기

C:\xampp\apache\conf\extra 에서 httpd-vhosts 파일에 아래 설정 주입

<VirtualHost *:443>
    ServerName dainwiki.com
    ServerAlias www.dainwiki.com

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/your_certificate.crt
    SSLCertificateKeyFile /etc/ssl/private/your_private.key
    SSLCertificateChainFile /etc/ssl/certs/your_chainfile.pem

    # 프록시 설정
    ProxyRequests Off
    ProxyPreserveHost On

    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
</VirtualHost>


현재 SSL 에서 오류가 나서 SSL 을 설정하면 Apache서버가 아예 돌아가지 않는 문제를 겪고 있다.

SSL 경로 문제로서 위 경로를 아래와 같이 수정해 줌

SSLEngine on

SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/server.crt"

SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/server.key"

(※ 윈도우니까 경로에 슬래시 / 방향 맞춰줘야 한다!! 역슬래시 \ 쓰지 말고 /)


🚨 주의사항

이 기본 인증서는 자체 서명(Self-signed) 된 거라서, 브라우저에서 "주의 요함" 이 뜰 수 있다.

진짜 상용 인증서를 쓰려면, 따로 구매하거나 Let's Encrypt 같은 걸로 발급받아야 한다. (현재는 test)


<VirtualHost *:443>
    ServerName dainwiki.com
    ServerAlias www.dainwiki.com

    SSLEngine on
    SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/server.key"
    SSLCertificateChainFile "C:/xampp/apache/conf/ssl.crt/server-ca.crt"   # (필요한 경우만 사용)

    ProxyRequests Off
    ProxyPreserveHost On

    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
</VirtualHost>

XAMPP 윈도우 기본 SSL 폴더 위치

C:\xampp\apache\conf\ssl.crt



[트러블슈팅 #3] 포트 충돌시 해결방법


포트 충돌시 해당 포트를 점유하는 프로세스의 PID 조회하고 강제 종료하기

XAMPP 에서 포트 충돌이 나서 Apache서버가 돌아가지 않는 문제가 발생해서 포트 충돌이 있는지 확인하고자 한다.




💡 cmd에서 포트 점유중인 프로세스 찾는 명령어

예) 443번 포트를 사용하는 프로세스 찾기

올바른 명령어는 아래와 같다

netstat -ano | findstr ":443"

netstat -ano: 네트워크 연결 정보를 보여주는 명령이다.

-a는 모든 연결과 리스닝 포트를, -n은 숫자 형식으로 IP 주소와 포트를 출력하며, -o는 해당 연결을 사용하는 프로세스의 PID(Process ID)를 표시한다.

findstr ":443": findstr 명령은 주어진 문자열을 찾는 명령으로, :443을 포함하는 줄을 찾아 표시한다.

만약 다른 포트도 확인하고 싶다면, 포트 번호만 변경해서 사용하면 된다.


🚨 주의사항

findstr ":443"

이렇게 " "문자열 안에 포트번호구분자인 컬럼이랑 포트번호를 명시해야 한다.

아래처럼 포트번호만 쓰면 결과값 조회되지 않음.

netstat -ano | findstr 443

image.png



💡 해당 포트를 점유중인 프로세스의 PID로 프로그램 조회하기

netstat -ano | findstr ":443" 명령어를 사용하면, 해당 포트를 점유하고 있는 **프로세스의 PID(프로세스 ID)**를 확인할 수 있다. 그러나 이 명령어만으로는 어떤 프로그램이 해당 포트를 사용하고 있는지는 알 수 없다. 다만, PID를 알아냈다면, 그 PID에 해당하는 프로그램을 확인할 수 있다.

Windows에서 1234 PID에 해당하는 프로세스 이름을 알려주는 명령어

tasklist /FI "PID eq 1234"




💡 해당 포트를 점유중인 프로세스 강제 종료하는 명령어

리눅스/유닉스에서는 kill -9로 프로세스를 강제 종료한다.

kill -9 1234

이 명령어는 해당 프로세스를 즉시 종료시키는데, -9 옵션은 "강제 종료(signal 9)" 옵션이다.

그래서 이 방법은 일반적인 종료 시그널(kill만 사용)로 종료되지 않는 프로세스를 강제로 종료할 때 유용하다.


반면 Windows 에서는 아래 명령어 사용한다.

taskkill /PID 1234 /F

/F: 강제 종료 (force kill)

/PID 1234: 종료할 프로세스의 PID