안녕하세요 깍돌이 입니다 .아파치를 재시작하거나 시작 할때 해당 오류를 만나는 부분들이 꽤있는데요 

아주 단순한 케이스이지만 기록 해놓으려고 작성하게 되었습니다.

 

NCP(NaverCloudPlatform) & Init Script

NCP 클라우드 에서는 VM 을 생성시 Init Script 를 사용하여서 서버가 "운영중"으로 들어오기전에 하고싶은 작업들을 실행할수가 있습니다.  제가 하려고 했던 작업 중 일부분 입니다.

# 아파치 설치 
sudo -s yum -y install httpd
# 아파치 시작 
sudo -s systemctl start httpd
# 아파치 Root 디렉토리 변경
sudo -s sed -i 's/var\/www\/html/home1\/ncloud\/index.html/g' /etc/httpd/conf/httpd.conf
# 아파치 재시작  
sudo -s systemctl restart httpd

작성해놓았지만 동작이 되지않았기에 직접 VM에 들어가서 확인해보니

 

"Job for httpd.service failed because the control process exited with error code"

에러가 발생 중이였습니다. 뒤에 에러 코드에 보면 systemctl status httpd.service 를 보라는 문구가 있죠

 

Systemctl status httpd.service

원래 가장 친절한 에러 문구부터 파악을 해야겠죠

보시면 딱히 어떤 에러가 있는지는 확인이 쉽게 되지는 않게 나타나고 있습니다. 저희는 재시작 혹은 실행 에서 오류가 났기 때문에 해당 status에서 눈여겨 볼 점은 ExecStart 인데요

 

/usr/sbin/httpd 를 통해서 직접 실행을 해봅시다

 

ExecStart - /usr/sbin/httpd

결과 : '/home1/ncloud/index.html' is not a directory , or is not readable 

-> 제가 위에서 변경 하였던 오류였네요 루트 경로를 /var/www/html -> /home1/ncloud 로 했어야 하는데 index.html 까지 써버려서 폴더가 아니기 때문에 아파치의 welcome-list 필터링에서 오류가 발생하였습니다.

 

sudo -s sed -i 's/var\/www\/html/home1\/ncloud/g' /etc/httpd/conf/httpd.conf

 

/home1/ncloud로 변경 후 다시 시도시 (welcome-list에 의해서 index.html 을 찾을 겁니다)

 

정상적으로 나타났네요

 

* 별첨으로 Ubuntu와 Centos에서의 Apache (아파치) 설치 및 루트 디렉토리 변경이 조금씩 다르기 때문에

해당 관련 shell 을 첨부합니다.

 

Ubuntu 16.04-64 Server

#!/bin/bash

sudo -s apt-get update
sudo -s apt-get -y install apache2
# Create Apache New Index Folder
mkdir /home1/ncloud/www

# Change Apache Root Directory
sudo -s sed -i 's/var\/www\/html/home1\/ncloud\/www/g' /etc/apache2/sites-available/000-default.conf

# Change Apache Root Direceotry Access Authority
sudo -s sed -i 's/denied/granted/g' /etc/apache2/apache2.conf

# authority change 
sudo -s chmod -R 775 /home1
sudo -s chmod -R 775 /home1/ncloud
sudo -s chmod -R 775 /home1/ncloud/www
sudo -s chmod -R 775 /home1/ncloud/www/index.html

# Restart Apache
sudo -s /etc/init.d/apache2 restart

 

Centos 7.3-64

#!/bin/bash

# Apache Install
sudo -s yum -y install httpd
# Apache start
sudo -s systemctl start httpd

# Create Apache New Index Folder
mkdir /home1/ncloud/www

# Change Apache Root Directory
sudo -s sed -i 's/var\/www\/html/home1\/ncloud\/www/g' /etc/httpd/conf/httpd.conf

# authority change 
sudo -s chmod -R 775 /home1
sudo -s chmod -R 775 /home1/ncloud
sudo -s chmod -R 775 /home1/ncloud/www
sudo -s chmod -R 775 /home1/ncloud/www/index.html

# Restart Apache
sudo -s systemctl restart httpd

 

감사합니다.

꾸벅 @.@



// 가상 터미널 체인지 총 6개 가능


Ctrl + Alt + F1 

Ctrl + Alt + F2 

Ctrl + Alt + ... 


// 열린 포트 확인


netstat -tnlp | grep -v 127.0.0.1 | sed 's/:::/0 /g' | sed 's/[:\/]/ /g' | awk '{print $5"\t"$10}' | sort -ug

setterm -blank 0



TextMode인 TUI 모드에서 한글이 출력이 잘되지 않는 현상이 발견되어서


확인해 본결과


Install 시에 TextMode는 한글을 지원해주지 않는다고 나타나며


확인은 Putty 를 통해서 하는것이 맞는것같... 습니다.



안되는거네요; ㅜ 2시간 날렸당



라이센스 발급을 위해서 호스트 네임을 변경하여야 하는 경우가 생겼습니다.


localhost 뭔가 좀  서버를 여러개 쓰기 위해서는 필요하다고 생각 되었으며 


hostnamectl set-hostname changehostname





hostnamectl set-hostname changehostname

간단 사용이네요 ㅎ

'GNU > LINUX' 카테고리의 다른 글

[Centos 7] TUI (TextMode) 에서 터미널 꺼짐 막기  (0) 2018.08.07
[CentOS7] TextMode 에서 한글 깨짐 현상  (0) 2018.08.06
Segmentation Fault  (0) 2016.07.15
COMMAND - alias, unalias  (0) 2016.06.24
COMMAND - SCP(Secure Copy)  (0) 2016.06.23

세그멘테이션 결함(Segmentation Fault)


세그멘테이션 결함 은 소프트웨어의 실행 중에 나타날 수 있는 오류 이며 세그폴트(SegFault)로 줄여서 쓰기도 한다.



이 오류에 핵심은 프로그램이 


(1) 허용되지 않은 메모리 영역에 접근을 시도하거나


(2) 허용되지 않은 방법으로 메모리 영역에 접근을 시도할 경우 발생한다.


세그멘테이션은 OS에서 사용하는 메모리 관리 및 보호의 한 기법이다.


이것은 페이징으로 대부분 대체 되었지만 세그폴트의 용어는 여전히 사용된다. 


주로 사용 되는 메모리 관리 정책은 페이징 이지만 몇몇 OS에서는 여전히 일부 논리 레벨에서 세그멘테이션을 사용한다.


UNIX 계열 운영 체제들에서는 잘못된 메모리에 접근하는 프로세스는 SIGSEGV 신호를 받는다.


(signal 에 대해서는 각 운영체제 별로 따로 조사)


MS 윈도우에서는 STATUS_ACCESS_VIOLATION 예외 처리를 받는다.



ex) : 세그폴트의 예제 코드 (ANI C)

const char *s = "hello world";

*s  = 'H';



// 이 경우의 const char *s 는 읽기 전용으로 프로그램이 되지만  프로그램이 로드 되었을때 이 OS는 문자열과 상수 데이터를 메모리의 읽기 전용 세그먼트에 배치하며 프로그램 실행시 변수 s는 문자열의 위치를 가리키게 되고 'H'라는 문자열을 변수 s를 통해 메모리에 기록하려는 시도는 곧 세그멘테이션 결함을 일으킨다.








vim-lite 를 설치 하여서 사용하다 보면 워낙 vi에 적응이 되어있어서 vim 이라고 치지 않고


vi tab(자동완성)을 하다보면 아쒸! 하면서 다시 :q! 하고 vim으로 들어오는 경우가 있다.


그럴때 alias로 별칭을 지정해서 사용한다. 뭔가 C에서 #define 느낌이랄까 ;


alias 단축명 = "커맨드" 를 지정하여서 사용 한다.


저같은 경우는 vim 대신 vi가 너무 손에 익어서 


alias vi vim 으로 하여서 vi가 습관적으로 나오지만 vim이 실행되게 한다. 


alias a vim 으로 하게되면 a가 vim을 대신하여서 사용할수 있다.


현재 별칭을 확인하기 위해서는


alias 만 입력시에 현재 별칭이 나온다. 


test@test-Test:~/test % alias

a       vim

h       (history 25)

j       (jobs -l)

la      (ls -aF)

lf      (ls -FA)

ll      (ls -lAF)

vi      vim


이런식으로 나오게 된다. 


어느날 사용도중 엄청난 실수를 하게 된다. alias vi vim 이라고 할것을


alias vim vi 라고 한것이다. 


그래서 '에 뭐야 다시 해야지 '


하고 alias vi vim 을 했다.


그리고 다시 평소처럼 사용시 Alias loop. 라는 메시지가 나타난다. 


vim vi 이고 vi 가 vim이기 때문에 뭔지 모르겠다는 그런 메시진가 보다


이 경우에 대해서 unalias 라는 커맨드가 존재한다.


alias 로 별칭을 확인후에 지울 별칭을 지정하면 된다. 


unalias vim 입력시 alias vim vi 가 사라진다.


해당 명령어는 현재 세션에만 유효하기 때문에 재부팅시 사라지게된다.


해당 alias 명령어는 alias를 지정하는 스크립트에 지정해 놓으면 재부팅해도 사라지지 않는다.


~/User/.bashrc ( or .cshrc) 계정세션


/root/.bashrc(or .cshrc) 




scp 서버간 파일 복사 에 사용되는 명령어 이며 보안성이 (ftp, sftp 등에 비해 뛰어나다) - 이에 대해서는 따로 정리


기본 사용법에 대해서만 설명한다


첫번째는 내가 갖고 있는 파일을 보낼때 


scp [option][file_location] [send_account]@IPAddress:/location


현재 서버인 192.168.0.0.1 /home/User/ 에 있는    


temp.txt 파일을 111.123.5.12(계정은 test) 에 /home/user/ports 에 보낸다고 하면


scp /home/user/temp.txt test@111.123.5.12:/home/user/ports 


반대로 서버에서 가져오는 방법도 있다.


192.168.1.11 서버에 있는 /home/Test/temp/memo.txt 파일을 가져온다고 할시에는


scp [account]@IPAddress:[download_location] [current_location]


scp test@192.168.1.11:/home/Test/temp/memo.txt .


마지막 memo.txt 띠고 . 의 의미는 현재 위치(pwd)로 라는 뜻이 된다. 절대 경로로 /home/test라고 주어도 된다.


*** 만약에 ssh 기본 포트인 22번 포트가 아닐 경우에는


scp -P 하고 포트번호를 써 주어야 한다.


scp -P 8080 test@192.168.1.11:~/temp


*** 가져오거나 보내는 파일이 폴더일 경우에는 -r 옵션을 추가한다. (mv나 cp에서 사용하는 -r의 옵션과 동일하다 하위 폴더 모두 복사 이동)


scp - r test@192.168.1.11:~/Test/temp /home/Test/temp








+ Recent posts