MySQL의 한글 설정을 위한 추가 부분입니다.

# vi /etc/my.cnf


주황색 부분은 Slow 쿼리를 로그로 출력해주는 부분입니다.

Bold 처리된 부분이 추가된 부분입니다.


[mysql]

default-character-set = utf8


[mysqld]

log-slow-queries = /var/log/mysql/slow.log

long_query_time = 3


character-set-client-handshake=FALSE

init_connect="SET collation_connection = utf8_general_ci"

init_connect="SET NAMES utf8"

default-character-set = utf8

character-set-server = utf8

collation-server = utf8_general_ci


datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0


[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid


[client]

default-character-set = utf8


[mysqldump]

default-character-set = utf8




이번 글은 기존 서버를 신규 서버로 옮기면서 작성되어 지극히 주관적인 셋팅이 될 수도 있습니다. 이 점 참고하시기 바랍니다. ^^



아파치 기본설정


아파치의 기본 환경을 셋팅을 위해 아래 명령을 수행하여 환경 설정파일을 엽니다.


# vi /etc/http/conf/httpd.conf


#ServerName www.example.com:80 이라고 되어있는 부분을 자신의 도메인에 맞게 수정하고 앞에 #은 삭제합니다.


DirectoryIndex index.html index.html.var 뒤에 index 파일을 추가해줍니다. 예) index.jsp


가상호스트를 사용한다면 아래 부분에서 #을 삭제합니다.

#NameVirtualHost *:80


그리고 마지막에 mod jk 연동관련된 내용을 적어줍니다.

이 부분은 기존 서버에서 가져온 셋팅이라 조금 다를 수 있으니 참고용으로만 보시길 바랍니다.


LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties

JkShmFile logs/mod_jk.shm

JkLogFile logs/mod_jk.log

JkLogLevel info

JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

JkMount /*.jsp ajp13

JKMount /servlet/* ajp13



아파치 가상호스트 설정


가상호스트를 사용하는 설정입니다. 기본적으로는 가상호스트 설정파일이 없기 때문에 새로 만들어서 작성해줍니다.


# vi /etc/httpd/conf.d/vhost.conf


<VirtualHost *:80>

    ServerAdmin 관리자 이메일

    DocumentRoot /web/project/projectName

    ServerName sub.domain.com

    ServerAlias sub.otherdomain.com

    ErrorLog "|usr/sbin/rotatelogs /var/log/httpd/sub.domain.com-error_log.%Y.%m.%d 86400"

    CustomLog "|usr/sbin/rotatelogs /var/log/httpd/sub.domain.com-access_log.%Y.%m.%d 86400" common


    JkMount /*.jsp ajp13

</VirtualHost>


위 내용도 기존 서버의 셋팅을 가져온 것이라 일반적이지 않을 수 있습니다.


볼드 처리된 부분을 셋팅에 따라 설정해주시고 log 부분은 1일 단위로 로그파일을 새로 만들어주게 해주는 옵션입니다.



톰캣 환경 설정


# vi /etc/tomcat6/server.xml



한글 처리를 위해 포트 8080, 8009 포트에 URIEncoding="UTF-8" 항목을 추가해줍니다.

8080은 톰캣 포트에 직접 접속되는 경우, 8009는 아파치를 통해 톰캣으로 연결되는 경우에 해당됩니다.


<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"

URIEncoding="UTF-8" />


<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />


하단에 새 호스트 정보를 추가합니다.


        ... sample host 정보

      </Host>


# 기존 샘플 Host 정보 아래쪽에 넣어줍니다.


         <!-- Pinkdiary -->

         <Host name="sub.domain.com" appBase="webapps"

                 unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

                 <Alias>sub.otherdomain.com</Alias>

                 <Context path="" reloadable="true" docBase="/web/project/projectName" debug="1"/>

         </Host>


    </Engine>

  </Service>

</Server>


톰캣 DB Pool 설정


# vi /etc/tomcat6/context.xml



설정 파일의 </Context> 바로 위에 아래 내용으로 넣어줍니다.


<Resource name="jdbc/DB_CONNECTION_NAME" auth="Container" type="javax.sql.DataSource"

                maxActive="150" maxIdle="20" maxWait="10000"

                username="DB_USER_NAME" password="DB_USER_PASS" driverClassName="com.mysql.jdbc.Driver"

                url="jdbc:mysql://DB_SERVER_IP:3306/DBNAME?characterEncoding=UTF-8"

                validationQuery="SELECT 1"

                testWhileIdle="true"

                testOnReturn="true"

        />


기본적으로 DB 연결 명, Connection Pool 의 최대 연결수, 유휴시 풀 관리수, DB 연결 정보 등을 설정합니다. 추가적인 부분도 있으니 자세한 사용법은 Tomcat 홈페이지를 참고해주시기 바랍니다.
















'Linux' 카테고리의 다른 글

MySQL 환경설정 추가  (0) 2014.12.17
MySQL Incorrect key file for table 에러 발생 시 대처법.  (0) 2014.11.19
서버 셋팅 2 ( mod_jk.so )  (0) 2014.08.21
Find 명령  (0) 2014.07.22
최근 변경된 파일을 찾아서 tar로 묶기  (0) 2014.05.14

운영서버에서 로그를 남기는 테이블의 조회 쿼리가 너무 느려서 인덱스를 확인해보고자

데이터파일을 그냥 압축해서 가져왔더니 인덱스파일이 깨진것 같습니다.


문제가 생긴 테이블이 MyISam 인 경우 mysql 데이터 파일의 위치로 이동해서

아래 명령을 수행해주면 인덱스를 복구할 수 있습니다.


%TABLE_NAME%은 실제 파일명과 일치합니다


# cd /var/lib/mysql/%DATABASE_NAME%

# myisamchk -r %TABLE_NAME%


인덱스파일 복구는 데이터의 양에 따라 시간이 달라집니다. ^^

'Linux' 카테고리의 다른 글

MySQL 환경설정 추가  (0) 2014.12.17
서버 셋팅 3 - Apache, Tomcat 환경설정  (1) 2014.12.17
서버 셋팅 2 ( mod_jk.so )  (0) 2014.08.21
Find 명령  (0) 2014.07.22
최근 변경된 파일을 찾아서 tar로 묶기  (0) 2014.05.14

서버 셋팅 1 글에서 이어지는 내용입니다.


서버 셋팅 중 Apache - Tomcat 을 연동할 때 사용하는 mod_jk 셋팅 방법에 대해 알아보겠습니다.


우선 Tomcat Connectors (mod_jk)를 다운받습니다.


http://tomcat.apache.org/download-connectors.cgi 에서 받을 수 있으며 링크가 바뀐 경우 


톰캣 홈페이지 (http://tomcat.apache.org/) 에 들어가서 Download 메뉴 아래에 있는 Tomcat Connectors 메뉴로 들어가시면 받을 수 있습니다.


아래쪽에 다운로드 링크가 있는데요 Linux기준으로 파일 링크를 복사하셔서


쉘 명령어로 직접 다운로드 받을 수 있습니다.

# wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.40-src.tar.gz


다운로드가 완료되면 압축을 풀어야 합니다.

# tar zxvf tomcat-connectors-1.2.40-src.tar.gz


압축을 푼 폴더 아래 native 폴더로 이동해서 ./buildconf.sh 를 실행해줍니다.

여기서부터 아래쪽에 있는 make install을 진행하는 동안 패키지가 없다는 메세지가 나온다면..

이 부분은 yum install <Package Name> 을 통해 설치 할 수 있습니다.

yum의 자세한 사용법은 구글느님께... ^^;


# cd <Tomcat Connectors Source Path>/native/

# ./buildconf.sh


일단 패키지들이 모두 존재해서 모두 처리가 다 된것으로 알고 다음으로 진행하겠습니다~


빌드를 위한 환경 설정이 필요한 시기인데 아래 명령어의 apxs 위치를 알아야 합니다.

# ./configure --with-apxs=/usr/sbin/apxs


/usr/sbin/apxs 이 경로가 없다면.. 찾아야 합니다.

# which apxs

위 명령어를 치면 어디에 있는지 알려줍니다.


하지만 apxs 가 아예 없는 경우도 있는데 이 경우는 apache가 devel 패키지가 아닌 경우라고 합니다.


아래의 명령어를 통해 devel 버전으로 업데이트를 합니다.

# yum install httpd-devel

설치가 끝났으면 which apxs 명령어로 위치 확인 후 ./configure 다시 시도해주세요~


configure가 정상적으로 끝나면.. make 를 통해 빌드를 해줍니다.

# make


빌드까지 정상적으로 끝나면 이제 설치를 해야 합니다.

# make install


설치가 완료되면 mod_jk.so 가 설치가 된것이지만.. 어디에 있을까요..?

설치 메세지에 보시면..

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/lib64/httpd/modules/mod_jk.so

위와 같은 메세지가 출력되어있는 것을 볼 수 있습니다.. 바로 저기에 설치된것입니다!



'Linux' 카테고리의 다른 글

서버 셋팅 3 - Apache, Tomcat 환경설정  (1) 2014.12.17
MySQL Incorrect key file for table 에러 발생 시 대처법.  (0) 2014.11.19
Find 명령  (0) 2014.07.22
최근 변경된 파일을 찾아서 tar로 묶기  (0) 2014.05.14
서버 셋팅 1  (0) 2014.05.12

find 명령을 자주 쓰다보니 몇가지 확장자 내에서만 검색해야 하는 경우가 많은데 이럴 때 쓸 수 있는 옵션으로 정규표현식이 있습니다.


find ./ -iregex ".*\(jsp\|java\)" -exec grep -i -n 'FindString' /dev/null {} \;


이렇게 하면 jsp, java 파일 안에서만 찾아주기 때문에 편리함~!


기존 사용하던 소스를 다른곳으로 옮겼더니 한글 처리가 문제가 생겼다면..?


기존 서버와 똑같이 맞춰주면 좋겠지만 그게 힘든 경우 소스를 바꿔야겠죠..;;


기존 아래와 같이 사용하던 부분을


$.getJSON("/api/search.jsp", $("#frm").serialize(), function(data){

...

});


이렇게 바꿔줍니다.

$.getJSON("/api/search.jsp", $("#frm").serialize().replace(/%/g,'%25'), function(data){

...

});


그리고 서버에서 한글 파라메터를 받을 때에는 URLDecoder.decode(string, "utf-8"); 과 같이 처리해 줍니다.


개발서버에서 운영서버로 수정된 소스들을 옮기는 방법이야 여러가지가 있겠지만.


파일을 직접 옮겨줘야 하는 경우에는 하나씩 옮기다가 빼먹거나 엉뚱한 파일, 엉뚱한 위치에 옮기는 실수를 할 가능성이 높습니다.


아래 예제를 통해 최근 바뀐 파일들을 찾아서 묶는 방법을 찾아봤습니다.

(사실 제가 사용하려고 찾아보고, 까먹지 않기 위해 기록하는 글.. ^^)


예) find ./ -ctime -1 -type f -not -path "./WEB-INF/*" -not -path "./temp/*" | xargs tar cfv update.tar


- ctime 1 : 1일전을 기준으로 그 이후에 변경된 파일을 찾는다. 만약 분 단위로 찾을 경우는 -cmin 10 (10분전)

-not -path "./WEB-INF/*" : 특정 디렉토리의 모든 파일을 제외한다. 여러개인 경우 여러번 사용 가능.


| xargs tar cfv update.tar : find 로 찾은 결과를 tar의 매개변수로 지정해서 압축.


옮기는건 ftp 를 통해 보내고 운영서버에서 풀어주기만 하면 끝.

'Linux' 카테고리의 다른 글

MySQL Incorrect key file for table 에러 발생 시 대처법.  (0) 2014.11.19
서버 셋팅 2 ( mod_jk.so )  (0) 2014.08.21
Find 명령  (0) 2014.07.22
서버 셋팅 1  (0) 2014.05.12
라즈베리 파이 파티션 용량 늘리기.  (8) 2013.01.28

회사에서 서버를 2대를 저에게 맏기면서 하나는 서비스용, 하나는 개발용으로 사용해보라고 하셔서 그동안 미뤄뒀던 서버 셋팅을 해보려고 합니다.


기존에 IDC 안에서 사용중인 서버인데 공부도 할 겸 새로 싹 밀고 셋팅해보라고.. ^^;


그동안 미뤄뒀던 셋팅 작업을 슬슬 해보려고 합니다.


참고로 랙에 들어가는 서버를 다루는건 생에 처음입니다. 험난한 도전이 될 수도 있겠네요 ㅎㅎㅎ


우선 추천받은 리눅스 CentOS 를 설치하기로 정했습니다.


예전 버전DVD도 찾아보면 있겠지만 공부하는 셈 치고 하나부터 끝까지 최대한 스스로 해결해보도록 할껍니다.


우선 http://www.centos.org/ 로 가서 다운로드를 받습니다. 저는 토렌트를 이용해서 받았습니다.


6.5버전 기준. DVD 2장 분량의 파일을 받았습니다. (2번째 파일은 1.1기가입니다.)



ISO 파일 두개 Nero Burning Rom 과 같은 프로그램을 사용하시면 됩니다.


레코더를 너무 오래 안써서 그런지 DVD 굽다가 3장이나 날려먹었네요..;;




외장형 ODD를 통해 DVD로 부팅, CentOS설치를 진행하던 중에 설치 항목을 정하는 부분이 나오면서 사용자 선택을 기다리네요.


저는 이 서버를 웹서버로 사용할꺼라서 Web Server를 선택했습니다.

그리고 아래쪽에 추가적인 설치를 원하는 경우 체크하는 부분도 있는데 기본적으로 FTP, MySQL, ant(java 빌드용) 등등을 추가적으로 선택했습니다.



# 네트워크 설정


설치가 완료된 후 가장먼서 해야 할 일은 네트워크 설정이죠!


검색해보니 setup 명령을 통해 UI의 도움을 얻어 셋팅하는 방법이 나오네요. (셋팅 후 외부 접속이 가능한 경우네는 원격으로도 사용이 가능합니다만, 초기 설치 후에는 당연하게도, local 에서만 사용 가능합니다)


setup을 눌러 네트워크 설정에 들어가서 네트웍 어뎁터를 골라서 각종 정보들을 기입하고 저장합니다.


#service network restart

위 명령을 통해 재부팅하지 않고 네트웍 설정을 갱신 할 수 있습니다.


그러나............


재설정을 하고 나서도 네트웍이 잡히질 않아서 또 검색...


# vi /etc/sysconfig/network-scripts/ifcfg-eth0 


위 명령어를 통해 셋팅도 가능하다고 해서 확인해보았습니다.


셋팅 내용은 아래와 같습니다.


DEVICE=eth0

HWADDR=00:00:00:00:00:00

TYPE=Ethernet

UUID=abcdefgh-1234-abcd-1234-abcd-2089fgn2789d

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPADDR=123.123.123.123

NETMASK=255.255.255.255

DNS2=123.123.123.1

GATEWAY=123.123.123.1

DNS1=123.123.123.1

IPV6INIT=no

USERCTL=no


이중에 onboot=no 라고 되어있는데 뭔가 확 느낌이 오더군요.. 저 부분을 yes로 바꿔주고 저장한 후에 다시 네트웍 재설정 명령을 실행하고 ifconfig 명령을 통해 확인해보면


기존에 lo 라는 항목만 나왔던게 eth0 항목이 추가되어 기존 셋팅했던 정보가 보여집니다.


#ping 명령을 사용해보니 제대로 체크가 됩니다. 오예~~




#FTP 설정


FTP에 접속 할 때 cannot change directory %디렉토리명% 과 같은 메세지를 받은 경우

http://matthewchang.tistory.com/847 여기에 설명된 대로 설정을 해도 되나 서버를 재부팅 하니 설정값이 리셋되어버리는 문제가 있네요. 설정값을 고정하는 방법을 찾아보려 했으나 잘 모르겠고..


다른 글들을 확인하다 우연히 발견한 방법인데. selinux 기능을 완전 꺼버리는 방법을 많이 쓰시는 것 같더군요.

selinux가 뭔지 궁금하시다면... http://psman2.tistory.com/68 링크 참조~


# vi /etc/sysconfig/selinux

파일을 열어서 아래 내용을 바꿔줍니다.

#SELINUX=enforcing

SELINUX=disabled


그리고 서버 재부팅~

# reboot


FTP Passive mode 포트 설정 및 방화벽 셋팅

# vi /etc/vsftpd/vsftpd.conf

내용중에 아래 항목들이 있는지 확인해보고 없으면 추가해줍니다.

pasv_enable=YES

pasv_min_port=50000

pasv_max_port=60000


저장 후 ftp 데몬 재시작

# service vsftpd restart


방화벽을 사용중인 경우는 위에 설정해둔 포트 50000 ~ 60000 을 허용해줘야 합니다.

# vi /etc/sysconfig/iptables

내용 중간에 

-A INPUT -p tcp --dport 50000:60000 -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT

위 라인을 추가해주고 저장합니다. 그리고 재시작.

# service iptables restart


#JAVA 설치

JAVA는 필요에 따라 설치하는 버전이 다르기 때문에 원하는 JAVA Version을 알아보기 위해 일단 설치 가능한 패키지를 찾아봅니다.


# yum list java*

위의 명령어에 다양한 패키지가 나오는데 그중엔 문서, 소스, 데모 등 다양하게 있습니다.

저는 1.7 버전을 선택해서 설치하겠습니다.


# yum install java-1.7.0-openjdk-devel.x86_64


설치 확인

# java -version

java version "1.7.0_55"

Java(TM) SE Runtime Environment (build 1.7.0_55-b13)

Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)



# MySQL, Apache, Tomcat 설치


이 부분은 설치 하면서 글을 작성했어야 했는데 시간이 많이 지나 추가하느라 자세한 설명이 조금 부족합니다.

아마 별 무리 없이 설치가 완료가 되었기 때문에.. ^^;


# yum install mysql-server.x86_64

# yum install httpd-devel.x86_64

# yum install tomcat6.noarch


* 참고로 apache - tomcat을 mod_jk 빌드를 통해 연결하시려면 apache를 devel 버전으로 설치하셔야 합니다

(다음번 포스팅에서 헤매었기 때문에 미리 알려드립니다 ㅋ)


기본적인 설치는 끝났으니 이제 Apache - Tomcat을 연동하는 mod_jk를 셋팅해보도록 하겠습니다.


다음 포스팅으로 가기












지금껏 데스크탑을 풀 셋트로 구매한건 486, 펜티엄3, Core2Duo, 3세대 i5 시스템을 맞출때. 이렇게 4번밖에 없었습니다.

그러다보니 몇가지 부품들은 꽤 오래 사용하는게 있는데요.


첫번째로, 500GB 하드는 어제 윈도우에서 오류 경고가 계속 뜨고있습니다. 가장 중요한 사진들을 다른 하드로 급히 이동시켜서 당장 수명을 다 해도 괜찮은 상황.


두번째는 중소기업 제품 모니터입니다. 구매한지 4년쯤 된 것 같은데 1년 보증기간 끝난 직 후, 컨트롤 버튼들이 모여있는 부품이 고장나서 DVI - Analog - Component 모드로 계속 바뀌는 증상으로 수리했었죠.


얼마 전 부터는 가끔 전원버튼을 눌러도 100% 켜지지 않고 카메라 플래시 충전되는 소리같이 삐이~~ 하는 소리만 나오는 증상이 생겼네요. 이때는 전원 버튼을 눌러도 다시 꺼지지도 않고 플러그를 뽑았다가 다시 켜야 제대로 켜지더군요. 아마 전원부에 붙어있는 캐패시터가 빵빵하게 불어있는것 같아서 오늘 좀 전에 뜯어봤더니 캐패시터 3개가 조금씩 불어있더군요. 부품 사다가 자가 수리 해야겠습니다.


지금 모니터 이전에는 LG 17인치 모델을 사용중이었는데 15년도 지난 지금, 조카에게 넘어가서 아직도 현역으로 사용중인데 단 한번도 고장이 없었습니다. (역시 가전은 엘지인가? ㅋㅋ)

다음에 다시 모니터를 사게 된다면 LG 제품으로 다시 넘어갈 듯 합니다.


마지막은 10년된 사운드 블라스터 Live 24bit 모델과 디지털TV 수신카드인데 이건 고장날 확률이 매우 적은 부품이라 그런지 OS지원이 되는 한 계속 사용하게 되겠네요. 안타깝게도 TV카드는 Windows 8 을 겨우 지원하고 나서 더이상 지원이 없을꺼라는 공식 발표가 ㅜ_ㅜ





참고 https://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29


이전에 만들어둔 앱에서 자바스크립트가 동작하지 않는 현상이 발생되어 확인해보니


 class JsObject {
   
@JavascriptInterface
   
public String toString() { return "injectedObject"; }
 
}


이런식으로 메소드 앞에 @JavascriptInterface 를 명시해줘야만 자바스크립트 -> 앱 호출이 제대로 처리가 되더군요.


애꿎은 서버 소스만 쳐다보고있었네요.. ^^

+ Recent posts