[apache] httpd yum 설치 후 일반계정 실행 By starseat 2022-06-17 11:26:57 server/oss Post Tags `linux` 에 `apache httpd` 를 설치하는 블로그들을 보면 대부분 `root` 로 설치하고 끝난다. 하지만 실제 운영하는 환경을 보면 `root` 계정이 아닌 일반계정으로 운영을 하게 되므로 그에대한 내용을 작성하려 한다. httpd 소스파일을 다운로드 받아 직접 make 하여 설치하는 방법도 있지만 yum 으로 설치하는 방법을 작성하겠다. # apache httpd 설치 일단은 httpd 서버를 설치해야 하므로 `yum` 으로 설치한다. (`yum` 설정은 [Redhat(CentOS) 설치 법 중 yum 설정 부분](https://starseat.net/blog/view/37)을 참조한다.) ``` [root@localhost]$ yum install -y httpd ``` 설치가 완료되면 정상설치 되었는지 확인해보자 ``` [root@localhost]$ httpd -v Server version: Apache/2.4.6 (CentOS) Server built: Mar 24 2022 14:57:57 ``` ## 추가 설치 yum 으로 설치하는 김에 `netstat` 라는 명령어를 사용할 수 있는 tool 도 같이 설치해주자. ``` [root@localhost]$ yum install -y net-tools ``` - 사용 예 ``` [root@localhost]$ netstat -an | grep LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp6 0 0 :::80 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN tcp6 0 0 :::443 :::* LISTEN ``` # apache httpd 실행 확인 실행/종료 하는 방법이 2가지 있는데 모두 다 확인해 보자 ## apache 명령어 ``` [root@localhost]$ apachectl start // 실행 [root@localhost]$ apachectl stop // 중지 [root@localhost]$ apachectl restart // 재시작 [root@localhost]$ apachectl status // 상태확인 ``` ## systemctl 명령어 ``` [root@localhost]$ systemctl start httpd // 실행 [root@localhost]$ systemctl stop httpd // 중지 [root@localhost]$ systemctl restart httpd // 재시작 [root@localhost]$ systemctl status httpd // 상태확인 - 실행 실패시 간단 오류도 확인 가능 ``` # 계정생성 및 권한 부여 ## 계정 생성 이제 일반 계정을 생성해 보자. 계정명은 `tester` 로 하였다. ``` [root@localhost]$ adduser tester [root@localhost]$ passwd tester tester 사용자의 비밀 번호 변경 중 새 암호: 새 암호 재입력: passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다. ``` ## 권한 부여 `root` 로 실행될 명령어들을 `sudo` 를 붙여 일반계정에서 사용할 수 있도록 변경이 필요하다. ### sudoers 파일 쓰기 권한 부여 ``` [root@localhost]$ chmod +w /etc/sudoers ``` ### 일반계정 추가 ``` [root@localhost]$ vi /etc/sudoers ``` ``` ## Next comes the main part: which users can run what software on ## which machines (the sudoers file can be shared between multiple ## systems). ## Syntax: ## ## user MACHINE=COMMANDS ## ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root ALL=(ALL) ALL tester ALL=(ALL) ALL ## <- 이부분 추가 ``` ### sudoers 파일 쓰기 권한 해제 ``` [root@localhost]$ chmod -w /etc/sudoers ``` # 일반계정 실행 여기까지 진행하였으면 `sudo` 를 사용하여 `httpd` 를 사용할 수 있다. ``` [root@localhost]$ su - tester [tester@localhost]$ sudo systemctl restart httpd [sudo] tester의 암호 : ``` # 추가 설정 새로운 `port` 번호로 다른 app을 사용할시 다음 설정을 추가해야 된다. 예시로 8900 port 번호로 호출하는 것을 추가해보고자 한다. ## 샘플 페이지 추가 간단 예제로 다른 `port` 번호로 띄워볼 간단한 페이지를 작성한다. ``` [tester@localhost] cd ~ [tester@localhost] mkdir sample [tester@localhost] vi sample/index.html ``` ```html sample page ``` ## httpd conf 추가 샘플 페이지를 작성하였으면 `root` 계정으로 접속하여 `tester.conf` 를 작성한다. ``` [tester@localhost] exit [root@localhost] cd /etc/httpd/conf.d [root@localhost] vi tester.conf ``` - tester.conf config 설정은 옵션에 따라 달라질 수 있다. ``` Listen 8900 ServerName localhost DocumentRoot "/home/tester/sample" RewriteEngine on RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^ index.html [L] Require all granted #RewriteEngine on #RewriteCond % -f [OR] #RewriteCond % -d #RewriteRule ^ - [L] #RewriteRule ^ index.html [L] #Require all granted AllowOverride All Order allow,deny Allow from all Options MultiViews FollowSymLinks ##### SSL Setting #SSLEngine On #SSLProxyEngine On #SSLCertificateFile "[인증서 설치 경로]/[crt 파일 이름].crt" #SSLCertificateKeyFile "[인증서 설치 경로}]/[key 파일 이름].key" ``` ## httpd 재실행 설정이 완료되었으면 `httpd` 를 재실행 하여 샘플페이지가 불려와 지는지 확인한다. ``` http://localhost:8900 ``` Previous Post [k8s] ingress 설정 Next Post [k8s] 명령어 Tip