확인된 환경 : MySQL 5.0x, MariaDB 10.1.x,

전체 DB 언어셋 및 collation 확인

SELECT SCHEMA_NAME AS 'database', DEFAULT_CHARACTER_SET_NAME AS 'character_set', DEFAULT_COLLATION_NAME AS 'collation' FROM information_schema.SCHEMATA;

특정 db 언어셋 확인

show create database DB명; (Collation확인은) use DB명 → SHOW VARIABLES LIKE 'character_set_database';

특정 테이블 언어셋 확인

show create table 테이블명;  (Collation확인은) SHOW TABLE STATUS WHERE NAME LIKE '테이블명';

특정 테이블 칼럼별 collation 확인

SHOW FULL COLUMNS FROM 테이블명;

특정 데이터베이스의 default character set 수정방법

alter database 디비명 default character set = utf8;

특정 테이블의 default character set 수정방법

alter table 테이블명 default character set = utf8;

[출처] http://www.legendry.net/board_YNNJ65/783


scp 를 이용하면서 아주 가끔씩은 속도 제한을 걸

고 전송 해야하는 경우가 있다.

-l 옵션을 이용하면 속도제한을 걸수 있다.

scp -l 1000 blah.tgz .....

이렇게 쓴경우라면 초당 1000 kbit 전송이니깐 125Kbyte/sec 속도로 전송하게된다

[출처] http://blog.kfmes.com/entry/scp-이용시-속도-제한걸기

 

 

 

 

conf/server.xml 파일에서 아래 항목을 수정한다.

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
 
 port="8080" 을 port="80"으로 변경

만약 위 방법으로 진행했는데 80으로 접속이 안된다면 아래를 시도할 것. 

톰켓은 기본적으로 8080 포트를 이용하여 통신을 수행하게 됩니다.
즉 http://192.168.0.1:8080 과 같은 형식으로 접근해야 합니다.

하지만 접근의 편의성을 위해서는 80포트를 사용하는 것이 더욱 편리할 것입니다.
80 포트를 이용하면 http://192.168.0.1 과 같은 형식으로 접근할 수 있게됩니다.

톰켓 환경설정( usr / local / tomcat / conf / server.xml ) 파일을 수정하여 80포트로 접근하게 설정할 수 있으나 아마 정상적으로 동작하지 않음에 당황하시는 분들도 꽤 될거라 생각됩니다.

리눅스나 유닉스는 1024 이하의 포트(well-known port)들은 일반 유저 권한에서 바인딩 할 수 없도록 되어 있습니다.

보안에 문제가 생길 가능성을 차단하기 위해서 입니다.

톰켓서버는 구동시 tomcat 유저 권한으로 구동되게 됩니다. 물론 root 권한으로 구동되게 한다면 80 포트에 별 문제없이 바인딩하여 통신이 가능합니다. 하지만 톰켓서버가 일반 유저 권한으로 구동되는데는 다 그만한 이유가 있겠지요?

웹을 이용한 해킹을 방지하기 위해서 입니다. tomcat 유저 권한으로 동작하는 톰캣 서버는 공격을 받는다 하더라고 tomcat 유저 권한에 해당하는 부분까지만 접근 가능하기 때문에 root 권한으로 구동되는 것보다는 안전하다고 할 수 있습니다.

이런 문제는 회피하는 가장 좋은 방법은 iptables 를 이용한 포트포워딩 방식을 이용할 수 있습니다.

# vim /etc/sysconfig/iptables
iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A OUTPUT -d 192.168.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8080

# /etc/rc.d/init.d/iptables restart

빨간색 부분을 웹 서버를 구동할 서버의 IP 주소를 적으시면 됩니다.
그럼 80으로 접근한 요청을 리눅스 커널단에서 8080으로 포워딩 시켜주게 됩니다.

관련자료
http://cafe.naver.com/egosproject/29

 

TOMCAT 80 포트 운용방법

톰켓은 기본적으로 8080 포트를 이용하여 통신을 수행하게 됩니다. 즉 http://192...

cafe.naver.com

[원문출처] https://www.happyjung.com:6001/lecture/1228

 

[Linux] Tomcat 80 포트로 바인딩하기 (80, 443 포트 권한 바인딩) > 기술자료 | 해피정닷컴

톰켓은 기본적으로 8080 포트를 이용하여 통신을 수행하게 됩니다. 즉 http://192.168.0.1:8080 과 같은 형식으로 접근해야 …, 해피정닷컴 - 홈페이지제작, 웹에이전시, 웹디자인, 웹사이트 개발 및 리뉴얼, 유지보수, 고급웹디자인, 웹기획, 웹개발

www.happyjung.com:6001

 


# getconf -a | grep glibc
GNU_LIBC_VERSION                   glibc 2.12


1. 라인의 맨앞에 특정 키워드를 추가한다.

:%s/^/aaa/g   (각 라인들 앞에 aaa 가 추가됨)

2. 라인의 맨 뒤에 특정 단어를 추가하고자 할 경우

:%s/$/aaa/g (각 라인들 뒤에 aaa 가 추가됨)

3. 줄 앞에 있는 공백을 제거하는 방법

:%s/\v^\s+//g
\v 는 vim 정규식 대신 표준 정규식을 사용하게 하는 옵션
\s스페이스바나 탭 등 모든 공백 한글자를 나타냄

4. 줄 끝에 있는 공백을 제거하는 방법

:%s/\s\+$//

5. 문서전체에 있는 공백을 제거하는 방법 (공백갯수 무관)

:s/ //g (스페이스로 구분된 공백의 갯수가 1또는 그이상이라도 공백은 1개만 입력)

6. 라인의 맨 뒤에 특정단어를 다른 단어로 치환

:%s/,$/;    (라인 맨 뒤의 , 를 ; 로 변경할 경우)

7.  특정 pattern이 들어가는 line 지우기

:g/pattern/d

8. 특정 pattern이 들어가 있는 line을 제외한 모든 line 지우기

: g!/pattern/d  또는 :v/pattern/d


/var/spool/clientmqueue는 sendmail이 메일 발송 목적지를 확정 하지 못할 경우 메일을 임시로 보관 하는 공간입니다.

목적지가 확정 되면 /var/spool/mqueue 디렉토리로 메일이 옮겨진 뒤 발송이 되며, 목적지가 확정 되지 않을 경우에는

관리자가 삭제 하기 전까지는 계속 해당 디렉토리에 메일이 남아 있게 됩니다.

또한 sendmail을 전혀 사용 하지 않는 시스템에서도 clientmqueue 디렉토리에 메일이 지속적으로 쌓이는 경우가 있습니다.

이는 logwatch가 시스템 상의 주요 로그를 간추린 보고서나 cron이 구동 되면서 발생 하는 각종 메세지를 root 계정으로

메일 발송 되게끔 설정 되어 있기 때문입니다.

 logwatch의 메일 발송을 중단 하려면 아래와 같이 /etc/crontab 내용을 수정해 주면 됩니다.

[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root   <---- 이 부분을

MAILTO=""   <---- 이렇게

[출처] http://faq.hostway.co.kr/Linux_Mail/3954


 

Apache에서 아래와 같이, Deny from all설정으로 모든 디렉토리가 막혀있다.

이는 다른 설정없이 호출시, Fobbiden 오류가 발생하게 된다.

==============================

<Directory />

    Options FollowSymLinks

    AllowOverride None

    Order deny,allow

    Deny from all

</Directory>

==============================

 

Options

: 지정한 디렉토리이하에 모든 파일과 디렉토리들에 적용할 접근제어를 설정함. 즉 디렉토리를 보여줄 것인가? CGI를 허용할 것인가? SSI를 허용할 것인가? 등의 설정을 여기서 하게 된다. 


None

모든 허용을 하지 않음. 즉, None설정으로 이외의 다른 설정들은 모두 무시


All

MultiViews 를 제외한 모든 옵션설정을 허용


Indexes

디렉토리 접근시에 DirectoryIndex에서 지정한 파일(index.html 또는 index.htm 등)이 존재할 경우에 디렉토리내의 파일목록리스트를 웹브라우저로 보여준다. 웹서버 보안을 위해 사용하지 않는 것이 좋다. 


Includes

SSI 사용을 허용하는 설정. 단, mod_include.c 모듈이 아파치웹서버에 로딩되어 있어야 함. 거의 대부분이 기본 설정으로 되어 있음. 확인법은 "httpd -l"


IncludesNOEXEC

SSI사용은 허용되지만 #exec 사용과 #include는 허용되지 않는다. 즉, SSI를 사용하면서 시스템에 위험한 SSI의 실행태그는 허용하지 않겠다는 설정


FollowSymlinks

심볼의 링크를 허용한다. 이 옵션을 지정하면 웹브라우저에서 링크파일의 경로까지도 확인할 수 있게 된다. 보안상 이 값은 설정하지 않는 것이 좋다.


ExecCGI

perl 등과 같은 CGI실행을 허용하기 위한 설정이다. 원래 아파치에서 CGI사용은 ScriptAlias로 지정된 위치에서 사용하는 것이 기본이다. 하지만 ScriptAlias가 지정되지 않은 디렉토리에 이 옵션이 지정되어 있다면 지정된 디렉토리내에서는 CGI 사용이 허용된다. 물론 이 경우에도 "AddHandler cgi-script" 지시자에서 정의한 확장자만 유효하다. 참고로 perl 등의 CGI실행이 안될 경우에는 ExecCGI값이 설정 되어 있나를 확인해 봐야 한다. 이 설정이 않되어 있다면 해당 디렉토리내에서는 CGI의 실행이 허용되지 않기 때문이다.


MultiViews

웹브라우저의 요청에 따라 적절한 페이지로 보여준다. 웹브라우저의 종류나 웹문서의 종류에 따라서 가장 적합한 페이지를 보여줄 수 있도록 하는 설정이다.

 


AllowOverride

: 어떻게 접근을 허락할 것인가에 대한 설정.


None

AccessFileName에 지정된 파일을 엑세스 인증파일로 인식하지 않는다. 즉, AccessFileName 의 값이 대부분 .htaccess 이므로 이를 무시하게 된다는 의미가 된다. 즉 이 파일을 무시하기 때문에 새로운 접근 인증박싱을 Override하지 않는다. 대부분ㅇ 보아이나 중요한 디렉토리에서 사용할 수 있는 것으로 아주 제한적인 접근만을 허용하고자 할 때에 사용하는 값이다.


All

이전의 인증방식에 대하여 새로운 접근인증방식을 우선적용하도록 Override를 허용한다.


AuthConfig

AccessFileName 지시자에 명시한 파일(거의 대부분은 .htaccess)에 대하여 AuthDBMgroupFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require 등과 같은 클라이언트 인증지시자의 사용을 허용한다. 즉 htpasswd 유틸리티를 이용하여 특정 디렉토리의 접근은 AccessFileName에 명시한 파일(대부분은 .htaceess)로 제어하고자 할 때에 (이를 "디렉토리 인증설정"이라고 함) 해당 디렉토리내에 이 값을 주로 사용한다.


FileInfo

AccessFileName지시자에 명시한 파일(거의 대부분은 .htaccess)에 대하여 AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority 등과 같은 문서유형을 제어하는 지시자 사용을 허용한다.


Indexes

AccessFileName 지시자에 명시한 파일(대부분 .htaccess파일)에 대하여 AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName 등과 같은 디렉토리 Indexing을 제어하는 지시자 사용을 허용한다.


Limit

AccessFileName 지시자에 명시한 파일(대부분 .htaccess파일)에 대하여 allow, deny, 그리고 order 등과 같은 호스트 접근을 제어하는 지시자 사용을 허용한다.


Options

AccessFileName 지시자에 명시한 파일(대부분 .htaccess파일)에 대하여 Options 그리고 XBitHack등과 같은 특정 디렉토리 옵션을 제어하는 지시자 사용을 허용한다.

 

 

 

 

     

     

쓰고자 하는 디렉토리는 아래와 같이,

설정을 해야 정상적으로 호출을 할 수 있다.

     

     

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">

    #

    # Possible values for the Options directive are "None", "All",

    # or any combination of:

    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

    #

    # Note that "MultiViews" must be named *explicitly* --- "Options All"

    # doesn't give it to you.

    #

    # The Options directive is both complicated and important.  Please see

# http://httpd.apache.org/docs/2.2/mod/core.html#options

# for more information.

#

Options Indexes FollowSymLinks

#

# AllowOverride controls what directives may be placed in .htaccess files.

# It can be "All", "None", or any combination of the keywords:

# Options FileInfo AuthConfig Limit

#

AllowOverride None

#

# Controls who can get stuff from this server.

#

Order allow,deny

Allow from all

</Directory>

 

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">

AllowOverride None

Options None

Order allow,deny

Allow from all

</Directory>

 

<Directory "C:/webapps/app1">

AllowOverride None

Options None

Order allow,deny

Allow from all

</Directory>

 

<Directory "C:/webapps/app2">

AllowOverride None

Options None

Order allow,deny

Allow from all

</Directory>



출처: http://mcpaint.tistory.com/133 [MC빼인트와 함께]


 

apache 를 재시작하는 방법으로는 크게  restart 와 graceful 이 있습니다.

재시작하는건 동일하지만 약간의 차이가 있습니다.

restart (kill -HUP)

restart 의 경우 apache 의 모든 프로세스를 종료 시키고 재시작합니다.  stop 한후 start와 동일합니다.

완전한 종료는 되지만 서비스 끊김이 발생합니다.

graceful (kill -USR1) 

graceful 의 경우 접속된 컨넥션은 유지하고 그외 apache  모든 프로세스를 종료하고 재시작합니다.

이때 세션의 종료 없이 설정파일을 불러서 재실행합니다.

운영중인 서버에 작업을 하고 재시작할때는 restart 보다는 graceful 옵션을 사용하는걸 추천합니다.

 

출처 : https://idchowto.com/?p=38239

 

대부분의 많은 사용자들이 apache 설정 변경 후 restart를 진행 합니다.

 

가상호스트가 추가 되어도 restart

apache의 ServerName이 변경되어도 restart

 

restart를 진행하면 프로세스가 모두 종료하고 재시작 되기때문에 세션이 끊어지는 문제가 있습니다.

 

 

apache의 재시작 방법은 restart/graceful 이렇게 두가지가 존재 합니다.

 

restart (kill -HUP)
- httpd 모든 프로세스를 찾아 종료시키고 재시작 시그널 주는것이다.

graceful (kill -USR1)
- 현재 접속된 컨넥션은 그대로 유지하고 그외 httpd 모든 프로세스를
찾아 종료시키고 재시작 시그널 주는것이다.

예1) /usr/local/apache2/bin/apachectl restart

이 경우 완벽한 재시작은 이루어지지만, 서비스가 끊김 발생

예2) /usr/local/apache2/bin/apachectl graceful

서비스의  세션 및 연결 종료 없이 conf 설정 파일 불러서 재실행

 

서비스 운영 중에 추가되는 작업들은 restart 보다는 graceful 옵션을 통해 재시작 해주시는 것이 좋습니다.

 

단, 모듈 추가 등의 apache 내에 삽입되어야 하는 작업들은 반드시 restart를 해주셔야 합니다.

 

출처 : http://faq.hostway.co.kr/Linux_WEB/3665


linux 에서 스크립트 실행할 때
/bin/sh^M: bad interpreter: No such file or directory
와 같은 에러 메시지가 나타날 때가 있다.

이것은 십중 팔구 윈도우에서 스크립트 파일을 만든 뒤, linux 에서 실행했기 때문에 나타나는 오류이다.
정확히는 줄 끝 (줄바꿈)을 의미하는 개행문자가 달라서 발생하는 문제인데 이것의 해결을 위해서는 다음의 방법 중 한 가지로 처리한다.

1. vi -b
vi 의 바이너리 모드로 들어가면 ^M 이라는 문자가 보인다. 이것을 지워주면 된다.

2. dos2unix
linux 콘솔에서 dos2unix filename.txt 와 같이 명령을 주어 파일을 변경한다.

3. subversion property 설정
형상관리 시스템으로 subversion을 쓰고 있을 경우, 해당 스크립트 파일의 property 에 svn:eol-style=native 를 추가해 준다.
(native 는 줄 끝 문자를 해당 OS에 맞게 변경해준다)


출처 : http://tod2.tistory.com/28


아래 명령어를 이용하면 확인이 가능함.

1. HDD의 경우

cat /sys/block/sda/queue/rotational 명령을 실행한 결과가 1

2. SSD의 경우

cat /sys/block/sda/queue/rotational 명령을 실행한 결과가 0

커널 2.6.29 이상부터 가능.