SDJ( 수돈재 아님 ㅎ )

Ubuntu 16.04에 hustoj 설치하기 ( feat. nginx 502 bad gateway ) 본문

메모메모

Ubuntu 16.04에 hustoj 설치하기 ( feat. nginx 502 bad gateway )

ShinDongJun 2020. 2. 27. 03:11

이번에 동아리의 신입들의 C언어 테스트를 위해 hustoj를 설치할 계획을 세웠다.

 

이전에 노트북으로 oj 서버를 돌려본 이력이 있긴 하지만 24시간동안 노트북을 켜놓진 않을거라.. 이 서버를 GCP에 옮겨서 꿀잠 자면서도 서버를 돌아가게 만들고 싶어서 GCP에 빠르게 VM을 생성했다.

 

이전에 노트북에서 구축을 할 때는 쉽게쉽게 해서 GCP도 금방 할 줄 알았는데..

서버의 작동 원리(?)라 해야하나.. 약간 이런부분이 처음이라 502 bad gateway 떴을 때 엄청 당황했다.

 

그래서 나중에 나같이 당황하는 사람이 있으면 도움이 되기를 바라면서.. 글을 끄적인다.

 

일단 hustoj 구축 방법에 대해 설명을 해둔 글들을 구글에 쳐보면 나온다. 

hustoj github인 https://github.com/zhblue/hustoj에 들어가보면 운영체제에 맞게 어떻게 설치를 하는지 설명되어있다.

 

zhblue/hustoj

Popular Open Source Online Judge based on PHP/C++/MySQL/Linux for ACM/ICPC and NOIP training, with easy installation. 开源OJ系统 - zhblue/hustoj

github.com

 

명령어를 가져오자면

wget https://raw.githubusercontent.com/zhblue/hustoj/master/trunk/install/install-ubuntu16+.sh
sudo bash install-ubuntu16+.sh

일단 이렇게 하면 설치가 된다고 한다.



그래서 저걸 따라하면

mysql 설치가 안되어 있을 경우에는 새로 mysql 계정을 만들라고 창이 뜰것이고, 설치가 되어있다면 그냥 넘어가게 될 것이다.

 

설치가 다 끝나면 로컬일 경우 127.0.0.1, 외부 서버일 경우 서버 외부 IP에 접속하여 hustoj 창이 뜨는지 봐야한다.

 

필자는 여기서 절망에 빠졌는데

nginx 502 bad gateway가 떠서 잠시 패닉에 빠졌다. ( 로컬에서 했을 때는 잘 됐었다 )

 

그래서 구글링을 하던 도중.. 

502 bad gateway의 원인이 다양하다는 말이 너무 많아서 일단은 log를 봤다.

결론은 내 경우에 서버문제였다.

sudo cat /var/log/nginx/error.log

 

여러번 접속을 시도했던 탓에 다음과 같이 log가 적혀있었다.

 

저기서

*1 connect() to unix:/run/php/php7.2-fpm.sock failed

이 부분을 보면 php7.2-fpm.sock failed라 되어있길래 저 VM의 php버전이 7.2가 아닌것 같아서 

php -v

를 통해 버전을 보니 php가 7.0이더라..

 

그래서 저걸 7.2로 바꾸면 고칠 수 있지 않을까 해서 바로 7.2로 업그레이드 시켰다.

( 이게 정답이었다. )

 

7.2로 업그레이드 시킬 때 참고한 사이트이다.

https://swiftcoding.org/installing-php7-2-fpm

 

LEMP스택 설치: NGINX 웹서버에 PHP 7 설치하기 및 설정 (PHP7.2-FPM) | 스위프트코딩

서버 설치 세팅 및 데이터관리 서버세팅, 리눅스, 서버관리, nginx, 웹서버, LEMP, PHP, apt 시리즈 연재작의 일환으로 이번글에서는 리눅스 우분투서버에 PHP 7을 설치하면서 아래와 같은 내용을 알아볼 것입니다. 설치가능한 PHP 버전 정보 보기 PHP설치준비를 위해 apt 리스트 업데이트 하기 apt로 php 7.2 fpm과 주요모듈 설치하기 PHP해석을 위한 서버 설치와 관리, 프로그래밍, 워드프레스 홈페이지 제작 SEO와 마케팅 연구

swiftcoding.org

페이지에 있는 순서를 대략적으로 옮겼다.

 

1. php의 버전을 확인

sudo apt-cache policy php

먼저 자신의 php의 버전이 무엇인지 확인해야 한다.

 

 

2. apt에 7.2 저장소를 추가한다.

sudo add-apt-repository ppa:ondrej/php

여기서 [ENTER]를 누르면 설치가 진행된다.

 

설치가 완료되면 apt의 패키지를 업데이트 한다.

sudo apt-get update

apt 리스트에서 php 정보를 확인해서 7.2가 추가됐는지 확인

sudo apt-cache policy php

여기서 php7.2가 아닐 수도 있음!

(필자는 여기서 php7.4( 최신버전 )으로 뛰어있었는데 무시하고 계속 진행하니까 최종적으로는 7.2가 됨.)

 

 

3. php 7.2 fpm과 주요 모듈 설치

sudo apt-get install php7.2-fpm

Do you want to continue? 질문이 나오면 Y를 입력하여 설치를 진행한다.

 

 

설치가 완료되면 php에 중요한 모듈을 설치한다.

sudo apt-get install php7.2-cli php7.2-curl php7.2-gd php7.2-mysql php7.2-mbstring zip unzip

 

4. 버전 확인

php -v

php의 버전을 확인하고 7.2가 되었다면 사이트에 다시 접속해서 hustoj가 뜨는지 확인하면 된다.

 

마지막으로 php-fpm을 재시작 시켜주면 된다.

sudo service php7.2-fpm start

 

 

 

어쩌면 운이 좋게 해결한 걸지도 모르겠으나,, 같은 오류를 해결하고싶어하는 사람이 있을지도 모르니.. 짧게나마 포스팅을 썼다.

'메모메모' 카테고리의 다른 글

One_gadget 설치  (0) 2020.07.03
Ubuntu 19.04 [ 404 Not Found ] 뜰 때  (0) 2020.06.10
책상 조립 완료,,  (0) 2020.02.24
[R].. 노마드 끄적거림  (0) 2019.12.20
CTF 서버 설정 과정(GCP)  (0) 2019.09.19
Comments