해당 이슈를 해결하기 위해 또는 sudo 권한을 사용하기 위해서 Jenkins 에서 sudo 권한을 지정
이슈 : sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper Build step 'Execute shell' marked build as failure
■ CentOS
1. sudoers 파일 열기
$ sudo vi /etc/sudoers
2. [Defaults requiretty] 행을 찾아서 주석 처리
$ # Defaults requiretty
3. sudoers 파일 내용의 마지막 줄에 [jenkins ALL=(ALL) NOPASSWD: ALL] 추가
$ jenkins ALL=(ALL) NOPASSWD: ALL
■ Ubuntu
1. root 계정으로 sudoers.d 폴더로 이동
$ cd /etc/sudoers.d
2. jenkins 파일 생성
$ touch jenkins
3. jenkins 파일에 [jenkins ALL=(ALL) NOPASSWD: ALL] 를 입력
로컬 PC(내부망)에서 웹 서버를 기동하고 결과를 외부 인터넷망(외부망)에서 확인해야하는 경우에 사용을 권하며, 내부망에서 웹 서버에 포트 및 방화벽 설정으로 로컬 PC의 IP로도 외부망에서 접근가능하지만, http 가 아닌 https 프로토콜 통신으로 보다 가독성이 좋은 도메인을 설정하여 웹 서버를 외부망에 노출하는 방법을 작성.
실무에서 프로젝트를 진행하다 보면 Windows 가 아닌 Linux 에서 개발 환경을 구축하고 서버를 기동하는 사례를 많이 접하게 된다. Linux 에서 서버를 기동하는 이유는 다양하겠지만 가장 큰 이유는 터미널의 방대한 활용성과 불필요한 기능들을 기본적으로 제공하지 않는것이 아닐까라고 생각한다.
그럼 Linux에서 서버를 기동하기 위해 프로세스를 생성하는 방법에 대해 알아보자.
■ 작업 방법
1. 프로세스를 생성할 위치로 이동
$ cd /etc/systemd/system
2. 프로세스 파일 생성
* 필자의 경우 CC_BACK.service 라는 파일을 생성 했다.
$ touch [프로세스 파일명].service
3. 프로세스 파일 작성
* 빨간 박스로 체크한 부분과 Description 부분 정도만을 제외하고는 필자와 동일하게 작성해도 무관하다.
1) WorkingDirectory : 서버가 존재하는 디렉토리 경로
2) ExecStart : 서버 기동을 위한 실행파일 경로
$ vi [프로세스 파일명].service
4. 프로세스 리로드
* 프로세스 파일을 작성하거나 수정했을시 프로세스를 리로드 시킨다.
$ systemctl daemon-reload
5. 프로세스 상태 확인
$ systemctl status [프로세스 파일명]
* (성공) 프로세스 파일을 정상적으로 작성했을 경우 출력 화면
* (실패) 프로세스 파일을 잘못 작성했을 경우 출력 화면
해당 화면이 출력될 경우 서버 디렉토리 또는 서버 실행 파일을 다시 한번 확인 해보고 프로세스 파일을 작성해보길 바란다.
6. 프로세스 파일 실행 및 상태 확인
$ systemctl start [프로세스 파일명]
$ systemctl status [프로세스 파일명]