HTTP 응답 코드 종류

 응답 코드 설명 
100   Continue (클라이언트로 부터 일부 요청을 받았으며 나머지 정보를 계속 요청함)
 101  Switching protocols
 200  OK(요청이 성공적으로 수행되었음)
 201  Created (PUT 메소드에 의해 원격지 서버에 파일 생성됨)
 202  Accepted(웹 서버가 명령 수신함)
 203  Non-authoritative information (서버가 클라이언트 요구 중 일부만 전송)
 204  No content, (사용자 요구 처리하였으나 전송할 데이터가 없음)
 301  Moved permanently (요구한 데이터를 변경된 타 URL에 요청함)
 302  Not temporarily
 304  Not modified (컴퓨터 로컬의 캐시 정보를 이용함, 대개 gif 등은 웹 서버에 요청하지 않음)
 400  Bad request (사용자의 잘못된 요청을 처리할 수 없음)
 401  Unauthorized (인증이 필요한 페이지를 요청한 경우)
 402  Payment required(예약됨)
 403  Forbidden (접근 금지, 디렉터리 리스팅 요청 및 관리자 페이지 접근 등을 차단)
 404  Not found, (요청한 페이지 없음)
 405  Method not allowed (혀용되지 않는 http method 사용함)
 407  Proxy authentication required (프락시 인증 요구됨)
 408  Request timeout (요청 시간 초과)
 410  Gone (영구적으로 사용 금지)
 412  Precondition failed (전체 조건 실패)
 414  Request-URI too long (요청 URL 길이가 긴 경우임)
 500  Internal server error (내부 서버 오류)
 501  Not implemented (웹 서버가 처리할 수 없음)
 503  Service unnailable (서비스 제공 불가)
 504  Gateway timeout (게이트웨이 시간 초과)
 505  HTTP version not supported (해당 http 버전 지원되지 않음)

 

 

HTTP 메소드 종류

 HTTP Method 전송 형태  설명 
 GET GET [request-uri]?query_string
HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP] \r\n 
 GET 요청 방식은 URI(URL)가 가진 정보를
 검색하기 위해 서버 측에 요청하는형태이다

 

 HTTP Method 전송 형태  설명 
 POST POST [request-uri]?query_string
HTTP/1.1\r\n
HOST:[Hostname] 혹은 [IP] \r\n
Content-Lenght:[Lenght in Bytes] \r\n 
\r\n
[query-string] 혹은 [데이터]
POST 요청 방식은 요청 URI(URL)에
폼 입력을 처리하기 위해 구성한 서버 측 스크립트
(ASP, PHP, JSP 등) 혹은 CGI 프로그램으로
구성되고 Form Action과 함께 전송되는데,
이때 헤더 정보에 포함되지 않고 데이터 부분에 요청 정보가 들어가게 된다.

 

 HTTP Method 전송 형태  설명 
 HEAD HEAD [request-uri] HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP] \r\n 
HEAD 요청 방식은 GET과 유사한 방식이나 웹 서버에서 헤더 정보 이외에는 어떤 데이터도 보내지 않는다.
웹 서버의 다운 여부 점검(Health Check)이나 웹 서버 정보(버전 등)등을 얻기 위해 사용될 수 있다. 

 

 HTTP Method 전송 형태  설명 
 OPTIONS OPTIONS [request-ri]
HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP] \r\n 
해당 메소드를 통해 시스템에서 지원되는 메소드 종류를 확인할 수 있다. 

 

 HTTP Method 전송 형태  설명 
 PUT PUT [request-uri] HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP] \r\n
Content-Lenght:[Length in Bytes] \r\n
Content-Type:[Content Type] \r\n
\r\n
[데이터] 
 POST와 유사한 전송 구조를 가지기 때문에 헤더 이외에 메시지(데이터)가 함께 전송된다.
원격지 서버에 지정한 콘텐츠를 저장하기 위해 사용되며 홈페이지 변조에 많이 악용되고 있다.

 

 HTTP Method 전송 형태  설명 
 DELETE DELETE [request-uri] HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP] \r\n
\r\n 
 원격지 웹 서버에 파일을 삭제하기 위해 사용되며 PUT과는 반대 개념의 메소드이다.

 

 HTTP Method 전송 형태  설명 
 TRACE TRACE [request-uri] HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP] \r\n
\r\n 
원격지 서버에 Loopback(루프백) 메시지를 호출하기 위해 사용된다. 

 

 HTTP Method 전송 형태  설명 
 CONNECT CONNECT [request-uri] HTTP/1.1\r\n
Host:[Hostname] 혹은 [IP] \r\n
\r\n 
 웹 서버에 프락시 기능을 요청할 때 사용된다.


출처 : https://gyrfalcon.tistory.com/m/entry/HTTP-%EC%9D%91%EB%8B%B5-%EC%BD%94%EB%93%9C-%EC%A2%85%EB%A5%98-HTTP-%EB%A9%94%EC%86%8C%EB%93%9C-%EC%A2%85%EB%A5%98

Apache 2.4.x 서버에서 mod_cband  (트래픽 사용량 제어 모듈) 설치시 다음과 같은 오류 메세지가 출력됩니다.

[ SUN(11.123) , /usr/local/src/mod-cband-0.9.7.5 ] > make

/usr/local/apache/bin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -c src/mod_cband.c
/usr/local/apr/build-1/libtool –silent –mode=compile gcc -std=gnu99 -prefer-pic -DLINUX -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache/include -I/usr/local/apr/include/apr-1 -I/usr/local/apr-util/include/apr-1 -Wall -DDST_CLASS=3 -c -o src/mod_cband.lo src/mod_cband.c && touch src/mod_cband.slo
src/mod_cband.c: In function ‘mod_cband_create_traffic_size’:
src/mod_cband.c:1054: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c:1054: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c:1058: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c:1058: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c: In function ‘mod_cband_get_dst’:
src/mod_cband.c:1333: error: ‘conn_rec’ has no member named ‘remote_ip’
src/mod_cband.c: In function ‘mod_cband_get_remote_host’:
src/mod_cband.c:1362: error: ‘struct conn_rec’ has no member named ‘remote_ip’
src/mod_cband.c:1363: error: ‘struct conn_rec’ has no member named ‘remote_ip’
src/mod_cband.c:1365: error: ‘struct conn_rec’ has no member named ‘remote_addr’
apxs:Error: Command failed with rc=65536
.
make: *** [src/.libs/mod_cband.so] 오류 1

mod_cband.c 파일을 편집합니다.

vi /usr/local/src/mod-cband-0.9.7.5/src/mod_cband.c

이때, src/.libs/mod_cband.c 라는 파일이 존재 않은 상태에서 작업해야 합니다.

빨간색은 수정 이전 라인, 파란색은 수정 이후 라인입니다.

1333번 라인
p.add.sin.s_addr = inet_addr(r->connection->remote_ip);
p.add.sin.s_addr = inet_addr(r->connection->client_ip);

1342번 라인
   fprintf(stderr,”%s leaf %s\n”,r->connection->remote_ip,leaf);
   fprintf(stderr,”%s leaf %s\n”,r->connection->client_ip,leaf);

1362~1365번 라인
if (c->remote_ip != NULL)
addr = inet_addr(c->client_ip);
else
addr = c->remote_addr->sa.sin.sin_addr.s_addr;

if (c->client_ip != NULL)
addr = inet_addr(c->client_ip);
else
addr = c->client_addr->sa.sin.sin_addr.s_addr;

위와 같이 수정한 다음 make 명령을 내리면 정상적으로 컴파일이 진행됩니다.

/usr/local/apache/bin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -c src/mod_cband.c
/usr/local/apr/build-1/libtool –silent –mode=compile gcc -std=gnu99 -prefer-pic -DLINUX -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache/include -I/usr/local/apr/include/apr-1 -I/usr/local/apr-util/include/apr-1 -Wall -DDST_CLASS=3 -c -o src/mod_cband.lo src/mod_cband.c && touch src/mod_cband.slo
src/mod_cband.c: In function ‘mod_cband_create_traffic_size’:
src/mod_cband.c:1054: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c:1054: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c:1058: warning: comparison with string literal results in unspecified behavior
src/mod_cband.c:1058: warning: comparison with string literal results in unspecified behavior
/usr/local/apr/build-1/libtool –silent –mode=link gcc -std=gnu99 -o src/mod_cband.la -rpath /usr/local/apache/modules -module -avoid-version src/mod_cband.lo

write “make install” to install module

 

make install

/usr/local/apache/bin/apxs -Wc,-Wall -Wc,-DDST_CLASS=3 -i -a -n cband src/mod_cband.la
/usr/local/apache/build/instdso.sh SH_LIBTOOL=’/usr/local/apr/build-1/libtool’ src/mod_cband.la /usr/local/apache/modules
/usr/local/apr/build-1/libtool –mode=install install src/mod_cband.la /usr/local/apache/modules/
libtool: install: install src/.libs/mod_cband.so /usr/local/apache/modules/mod_cband.so
libtool: install: install src/.libs/mod_cband.lai /usr/local/apache/modules/mod_cband.la
libtool: install: install src/.libs/mod_cband.a /usr/local/apache/modules/mod_cband.a
libtool: install: chmod 644 /usr/local/apache/modules/mod_cband.a
libtool: install: ranlib /usr/local/apache/modules/mod_cband.a
libtool: finish: PATH=”/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/java/bin:/root/bin:/sbin” ldconfig -n /usr/local/apache/modules
———————————————————————-
Libraries have been installed in:
/usr/local/apache/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR’
flag during linking and do at least one of the following:
– add LIBDIR to the `LD_LIBRARY_PATH’ environment variable
during execution
– add LIBDIR to the `LD_RUN_PATH’ environment variable
during linking
– use the `-Wl,-rpath -Wl,LIBDIR’ linker flag
– have your system administrator add LIBDIR to `/etc/ld.so.conf’

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
———————————————————————-
chmod 755 /usr/local/apache/modules/mod_cband.so
[activating module `cband’ in /usr/local/apache/conf/httpd.conf]

출처 : http://idchowto.com/tip-apache-2-4-x-%EC%84%9C%EB%B2%84%EC%97%90%EC%84%9C-mod_cband-%EC%84%A4%EC%B9%98%EC%8B%9C-%EC%98%A4%EB%A5%98-%EB%A9%94%EC%84%B8%EC%A7%80-%EC%B2%98%EB%A6%AC%EB%B0%A9%EB%B2%95/

 

텍스트편집기나 Sublime Text, Xcode 등의 문서편집기를 사용할 때, 커서의 이동이나 텍스트의 선택은 어떻게 하시나요?
보통은 마우스를 사용해서 원하는 위치를 클릭하거나 원하는 블럭를 선택합니다.
하지만 키보드로 작업을 하고 있다가 마우스에 손을 갖다 대는 작업은 매우 번거러운 작업이 아닐 수 없습니다.
특히, 프로그램을 하는 등의 고도의 집중을 하고 있을 때는 더욱 더 불편하게 느껴집니다.

이렇게 커서를 이동하거나 블럭을 선택하는 작업을 단축키로 간단히 해결할 수 있습니다.

커서 이동 단축키


  • 라인의 맨 앞으로 가기: Cmd + ←
  • 라인의 맨 뒤로 가기: cmd + →
  • 현재 단어의 시작으로 가기: option + ←
  • 현재 단어의 끝으로 가기: option + →
  • 모든 텍스트의 맨 앞으로 가기: command + ↑
  • 모든 텍스트의 맨 뒤로 가기: command + ↓

 

블럭 선택 단축키


이제 커서를 이동하기 전에 shift 키를 누른 후 이동하면 이동 한 부분의 텍스트를 선택할 수 있습니다.

  • 현재 위치부터 라인의 맨 앞까지의 텍스트 선택: shift + comand + ←
  • 현재 위치부터 라인의 맨 뒤까지의 텍스트 선택: shift + command + →
  • 현재 위치부터 현재 단어의 시작 까지의 텍스트 선택: shift + option + ←
  • 현재 위치부터 현재 단어의 끝 까지의 텍스트 선택: shift + option + →
  • 현재 위치부터 모든 텍스트의 맨 앞까지 선택: shift + command + ↑
  • 현재 위치부터 모든 텍스트의 맨 뛰까지 선택: shift + command + ↓
  • 현재 위치부터 위쪽의 원하는 라인까지 선택하기: shift + ↑
  • 현재 위치부터 아래쪽의 원하는 라인까지 선택하기: shift + ↓

 

 

 

또한, 이러한 커서 이동및 블럭 선택 단축키는 문서편집기 뿐만 아니라
Safari의 주소창 등과같이 텍스트를 입력할 수 있는 입력창을 갖고 있는 대부분의 OS X용 앱에서 동일하게 사용됩니다.

이제부터는 문서 편집용 단축기를 자주 사용해 보세요…
맥이 더욱 쉽게 느껴집니다. ^^

출처: https://macworld.hjsong.net/103 [맥의 세상에 빠지다™:티스토리]

 

dpkg 명령어

기본 설명

dpkg는 데비안 패키지 관리 시스템의 기초가 되는 소프트웨어로서, .deb 패키지의 설치, 삭제, 정보 제공을 위해 사용되는 명령어입니다.

dpkg 자체는 APT 등과 같은 고급 도구에 비해 낮은 레벨의 도구이며 복잡한 패키지 관계와 패키지를 원격에서 받아오는 등의 일을 합니다. APT도 Ubuntu의 소프트웨어를 관리하기 위해 내부적으로 이 dpkg를 사용합니다.

 

사용 방법

dpkg -l

: 설치된 패키지 목록 확인 (레드햇 계열 : rpm -qa 와 동일)

 

dpkg -L <패키지명>

: 해당 패키지로부터 설치된 모든 파일목록 확인 (레드햇 계열 : rpm -ql 과 동일)

 

dpkg -C <.deb 파일>

: 해당 .deb 파일이 설치한 파일의 목록 확인

 

dpkg -s <패키지명>

: 해당 패키지에 대한 정보 확인

 

dpkg -I <.deb 파일>

: 해당 .deb 파일에 대한 정보 확인

 

dpkg -S <파일명>

: 해당 파일명 또는 경로가 포함된 패키지들을 검색 (레드햇 계열 : rpm -qf 와 동일)

 

sudo dpkg -i <.deb 파일>

: 해당 파일 설치 또는 최신 버전으로 업그레이드

 

sudo dpkg -r <패키지명>

: 해당 패키지 삭제 (삭제시 설정파일들은 남겨둡니다.)

 

sudo dpkg -P <패키지명>

: 해당 패키지와 해당 패키지의 설정파일을 모두 삭제 (레드햇 계열 : rpm -e 와 동일)

 

sudo dpkg -x <.deb 파일> <디렉토리>

: 파일에 포함되어있는 파일들을 지정된 디렉토리에 압축 해제 (※ 이 명령을 실행할 경우, 해당 디렉토리를 초기화 시켜버리므로 주의해야 합니다!!!!!!!!)

 

 

참고 사이트

http://www.songtory.com/post/001003/1/245

 

http://snowdeer.github.io/linux/2018/02/03/ubuntu-16p04-manage-packages/

 

출처 : https://miiingo.tistory.com/183

'Works > Ubuntu' 카테고리의 다른 글

[명령어] apt remove vs purge 차이  (0) 2022.08.29

 

운영체제 : Ubuntu 18.04

DESCRIPTION

apt-get is the command-line tool for handling packages, and may be considered the user's "back-end" to other tools using the APT library. Several "front-end" interfaces exist, such as aptitude(8)synaptic(8) and wajig(1).

 

Unless the -h, or --help option is given, one of the commands below must be present.

remove

remove is identical to install except that packages are removed instead of installed. Note that removing a package leaves its configuration files on the system. If a plus sign is appended to the package name (with no intervening space), the identified package will be installed instead of removed.

purge

purge is identical to remove except that packages are removed and purged (any configuration files are deleted too).

 

OPTIONS

--purge

Use purge instead of remove for anything that would be removed. An asterisk ("*") will be displayed next to packages which are scheduled to be purged. remove --purge is equivalent to the purge command. Configuration Item: APT::Get::Purge.
 
--auto-remove--autoremove
If the command is either install or remove, then this option acts like running the autoremove command, removing unused dependency packages. Configuration Item: APT::Get::AutomaticRemove.
 

apt 패키지 매니저에서 패키지 삭제 명령어 정리

 

패키지 삭제가 제대로 되지 않아 새롭게 설치하는 패키지에 문제가 생겨 명령어와 옵션에 대해 정리 해보도록 하겠습니다.

 

$ apt remove <패키지명>

패키지를 삭제한다. 하지만 설정파일은 남겨둔다.

$ apt purge <패키지명>

패키지를 삭제한다. 설정파일도 함께 삭제한다.

 

옵션

$ apt [any command] --purge <패키지명>

remove 대신 --purge 명령을 수행한다. remove --purge 는 purge 명령어와 같다,

$ apt remove --auto-remove <패키지명>

사용하지않는 관련된 패키지를 모두 삭제한다.


위는 공식 명령어 가이드와 간략한 해석입니다.

차이는 설정파일을 삭제하느냐 남겨 두느냐의 차이입니다.

 

하지만 purge명령어를 쓰더라도 모든 설정파일을 삭제하는 것은 아닙니다.

user'home 파일은 삭제하지 않습니다.

 

예를들면, /home 폴더 하위에 설정파일을 가지고 있는 어느 어플리케이션 (예를 들면, 크롬 , 파이어폭스 등등..)을 삭제할 때는 /home 디렉터리 내부의 설정파일들은 그대로 남아 있습니다.

 

 

처음에 remove와 remove --auto-remove <패키지명>를 이용해서 패키지를 삭제했는데, 새롭게 설치하는 패키지가 삭제한 패키지와 중첩이 되어 제대로 설치가 되지 않은 문제가 있었습니다.

 

VMware-Tools를 설치하는데 vm-open-tools가 기본적으로 Ubuntu18.04에 설치되어 있어서 먼저 vm-open-tools를 삭제하고 설치를 진행했습니다.

 

remove, --auto-remove 를 사용해 패키지를 지우고

VMware-Tools를 설치하려고하니 이미 open-vm-tools가 설치되어 있어 설치가 정상적으로 되지 않을 수 있다. --purge 옵션을 이용해서 삭제하라는 가이드가 있었습니다.

 

# apt purge open-vm-tools를 이용해 삭제하고 VMware-Tools를 삭제하니 정상적으로 설치, 동작하는 것을 확인하였습니다.

출처: https://gintrie.tistory.com/23 [gintire:티스토리]

'Works > Ubuntu' 카테고리의 다른 글

[Ubuntu] dpkg 명령어 사용법  (0) 2022.08.29