[질문]
UTF-8 버전인데요,
설치 과정은 이상없이 진행이 되었습니다.
설치완료후 보드 생성도 정상이구요.
그런데 게시판에서 글을 저장하고 본문 열어 보면 영문으로 작성한 내용은
정상으로 보이는데 한글로 작성한 부분은 ????? ??? ?? ?????? 처럼 깨져서 나옵니다.

[답변]
lib.php 소스에서
$db_selected = @mysql_select_db($DB_access[4],$connect);
위 코드를 찾으십시오. 원본에선 120 번 줄 정도 입니다.
위 줄의 바로 아래에
@mysql_query("set names utf8");
이걸 새로 넣어 주십시오.


1. JDK(java) 설치

JDK 7 다운로드 URL

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
 

rpm -ivh jdk-7u40-linux-x64.rpm

설치 확인 : rpm -qa | grep jdk
whereis java (jdk 가 설치된 경로 확인)

cd /usr/java
mv jdk1.7.0_40 /usr/local/java
vi /etc/profile 해서 아래의 내용을 최하단에 추가할 것!
#JAVA JDK7
export JAVA_HOME=/usr/local/java
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:/usr/local/bin:$JAVA_HOME/bin:$CATALINA_HOME/bin


source /etc/profile (/etc/profile의 내용을 적용시킴)
javac --version   (java가 연동되었는지 버전을 확인하는 것으로 검증) 

2. Apache Tomcat 설치

다운로드 사이트 http://tomcat.apache.org

tar zxxf apache-tomcat-7.0.37.tar.gz
cd apache-tomcat-7.0.37
mv apache-tomcat-7.0.37 /usr/local/
cd /usr/local
ln -s apache-tomcat-7.0.37/ tomcat
vi /usr/local/tomcat/conf/server.xml  해서 아래의 내용을 기존에 등록된 </Host> 하단에 추가!

        <Host name="hasudo24.com" appBase="/home/hasudo24/public_html"
              unpackWARs="true" autoDeploy="true">
         <context path="" docBase="/home/hasudo24/public_html"></context>
        </Host>

만일 다수의 계정을 Port 별로 추가하고 싶다면 아래의 <Service> 항목을 최하단에 추가

<Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8012" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <Host name="sudo04.com"  appBase="/home/sudo04/public_html"
            unpackWARs="true" autoDeploy="true">
            <context path="" docBase="/home/sudo04/public_html"></context>
      </Host>
    </Engine>
  </Service>
/usr/local/tomcat/bin/startup.sh
ll /usr/local/tomcat/conf/Catalina/ 하위에 적용을 원하는 도메인명 폴더가 있는지 확인하고 없으면
mkdir 호스트네임명폴더 해서 만든다.  (대부분 자동으로 만들어질 것이다.
cd 호스트네임명폴더
vi ROOT.xml 해서 아래의 내용을 추가한다.!
<?xml version="1.0" encoding="utf-8"?>
<Context crossContext="true" docBase="/home/계정명/public_html" path="/" reloadable="true">
</Context>
netstat -nlp 해서 8080 포트가 java 로 사용되는지 확인


3. Tomcat-Connector 설치
tar zxvf tomcat-connectors-1.2.37-src.tar.gz
cd tomcat-connectors-1.2.37-src/native/
./configure --with-apxs=/usr/local/apache/bin/apxs
make && make install
cd apache-2.0/ (주의 : 자신의 apache 버전에 맞는 것으로 이동) mod_jk 가 설치된 것을 확인
* 정상적으로 설치가 되면 apache 모듈디렉토리에도 동일한 모듈이 만들어져있다.
 
(호스트먼트의 경우 first_setup/home/httpd/build 디렉토리를 /home/httpd/ 에 복사하면 에러 안남)
컴파일 에러가 발생하는 서버를 위해 완성된 모듈을 첨부한다. (첨부파일 참조)

vi /etc/httpd/conf/httpd.conf 해서 아래의 항목 추가
apache 1.3.x 의 경우 LoadModule jk_module     libexec/mod_jk.so
apache 2.x.x 의 경우 LoadModule jk_module          modules/mod_jk.so
 
그리고 아래의 Tomcat connector 설정 파일을 적절한 위치에 추가
 
# JSP TOMCAT
JkWorkersFile "/etc/httpd/conf/workers.properties"
JkLogFile "/var/log/httpd/mod_jk.log"
JkLogLevel emerg
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
JkMount /*.do ajp13
JkMount /*.pts ajp13
JkMount /*.app ajp13
JkMount /*.bbs ajp13
 
vi /etc/httpd/conf/workers.properties 해서 아래의 내용을 추가할 것!
 
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
#worker.ajp13.lbfactor=1
 
vi /etc/httpd/conf/virtualhosts.conf 해서 적용을 원하는 계정의 </Virtualhost> 상단에 아래내용 추가!
 
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
JkMount /*.do ajp13
 
해당 계정 public_html 하단에 test.jsp 파일을 만들어 아래내용 추가
 
<%@ page contentType="text/html; charset=euc-kr" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
 </HEAD>
 <BODY>
<% out.print("이 페이지가 보이신다면 JSP 환경이 정상적으로 구성된 것입니다.");%>
 </BODY>
</HTML>

또다른 내용의 test.jsp (현재 시스템 시각을 호출함)

<%@ page language="java" contentType="text/html; charset=EUC-KR"
     pageEncoding="EUC-KR"%>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <%@ page import="java.util.Date" %>

<head>
 <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
 <title>Insert title here</title>
 </head>
 <body>
안녕하세요!<br>
아래의 현재시각이 보인다면 정상적으로 jsp 가 구동된 것입니다.<br>

<%
  Date d = new Date();
 
  //out객체는 클라이언트 웹브라우져에 출력할 수 있는 jsp 내장객체
 out.println(d);//클라이언트 웹브라우져로 출력됨
%>
 </body>
 </html>


1. 설치

# cd /usr/local/src/php-5.2.9/ext/soap    // php 소스 폴더의 ext/soap 디렉토리로 이동 

# /usr/local/php/bin/phpize

# ./configure --enable-soap --with-php-config=/usr/local/php/bin/php-config

# make

# cp -arp modules/soap.so /usr/local/php/lib

2. 연동

php.ini 파일을 열어서 [soap] 항목에 아래와 같이 soap.so 파일을 추가해줍니다.

# vi /usr/local/apache/conf/php.ini

extension_dir=/usr/local/php/lib
extension=soap.so

그리고 아파치를 재시작 해주면 적용이 완료됩니다.

# /usr/local/apache/bin/apachectl restart

[작성] 차동훈 (http://system.neulwon.com)


[php에서 UTF-8, EUC-KR 인코딩 변경]

UTF-8을 EUC-KR로 변경
$str = iconv("UTF-8", "EUC-KR", $str);

EUC-KR을 UTF-8로 변경
$str = iconv("EUC-KR", "UTF-8", $str);


다른 서버에서 글 내용을 가져와 파싱하는 경우에 특히 많이 사용하게 된다.

상식적으로 알아둘 점: EUC-KR에서 한글은 2byte, UTF-8에서 한글은 3byte이다.

글자수 기준으로 substr() 함수를 이용하여 자를 때 참고해두자.


1. 필요 패키지 설치

yum install ImageMagick ImageMagick-devel

ImageMagick => ImageMagick – is a free software suite for the creation, modification and display of bitmap images.

ImageMagick-devel=> ImageMagick의 라이브러리 링크와 필요한 헤더파일이 포함되어있습니다.

2. 파일 다운로드 및 설치

최신 버전 다운로드 사이트 : http://pecl.php.net/package-stats.php 

다운로드 및 설치

cd /usr/local/src/

tar zxvf imagick-3.0.1.tgz

cd imagick-3.0.1

PHP설치경로/bin/phpize => 

./configure –with-php-config=PHP설치 경로/bin/php-config

php-config 실행시 아래와 같이 에러가 나오면

configure: error: Cannot locate header file MagickWand.h

이는 MagickWand.h 파일이 들어있는 디렉토리의 이름이 ImageMagick 가 아닐 경우 나온다.

 ln -s /usr/local/include/ImageMagick-6 /usr/local/include/ImageMagick (심볼릭 링크 처리)

make && make install

설치가 완료 되면 아래와 같이 파일의 위치가 표시가 됩니다.

PHP설치경로/lib/php/extensions/no-debug-zts-20090626/imagick.so

 

3. PHP.ini 수정 하여 모듈 적재

extension_dir=PHP설치경로/lib/php/extensions/no-debug-zts-20090626/

extension=imagick.so

 

4. 아파치 재시작 및 모듈 적재 확인

아파치를 재시작 후 

PHP설치경로/bin/php -m

Imagick가 목록에 있을 경우 정상 로드 되었습니다.

보다 자세한 내용 확인을 위해

PHP설치경로/bin/php -i | grep -i imagick 을 입력하여 자세한 모듈 정보를 불러 옵니다.

imagick

imagick module => enabled
imagick module version => 3.0.1
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0

Imagick 모듈이 정상적으로 로드가 확인 되었습니다.


iconv -f utf-8 -t euc-kr convert.dat (저장안되고 화면만출력)
iconv -f utf-8 -t euc-kr convert.dat > convert2.dat



[iconv 사용법]

iconv -f <소스 포맷> -t <목적 포맷> <파일명>

예)
- cp949 으로 되어 있는 파일을 utf8 로 변환
iconv -f cp949 -t utf-8 source.txt > target.txt

지원하는 인코딩 목록을 보려면 -l 옵션을 넣는다.
iconv -l


dovecot은 POP3, IMAP등 메일을 전송받기 위한 서비스 데몬입니다.

해당 데몬을 세팅중에 다음과 같은 에러를 만나며 메일을 받을 수 없는 문제를 만났습니다.
[code]Feb  8 19:26:56 Tomeii dovecot: Dovecot v1.0.7 starting up
Feb  8 19:27:01 Tomeii dovecot: chdir(/home/users/eye) failed with uid 123: Permission denied
Feb  8 19:27:01 Tomeii dovecot: child 4170 (pop3) returned error 89[/code]
보안상 디렉토리 퍼미션을 많이 바꾸던것이 문제가 된것 같습니다.

* 위 로그가 발생하면 아웃룩등 메일클라이언트 프로그램에서 로그인이 안되는 문제가 발생합니다.

사용자 디렉토리의 모든 상위 디렉토리가 최소 711이상의 퍼미션을 가지고 있어야 합니다.
[code]# chmod 711 /home
# chmod 711 /home/users[/code]
와 같이 group과 other에 최소한 1(execute) 권한을 주면 해당 오류가 사라집니다.


리눅스 시스템을 운영하다 보면 어느순간 시스템의 시간이 한국 표준시와 맞지 않은 경우를 발견하게 된다.

이럴 때의 조치방법을 요약한다.

보통  rdate -s time.bora.net && hwclock -w 명령어를 실행하게 되면 시스템 시간과 CMOS 의 시간을

동기화 시키는 것인데 일단 위 명령어는 틀림이 없으나 위 방법을 실행해도 시간이 한국 표준시로 설정이

안되는 경우가 있다. 이런 경우는 시스템의 타임존이 아시아/서울 (한국 표준시) 로 지정되지 않았기 때문이다.

이를 해결하기 위해선 # cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime  명령어로 아시아/서울의

타임존을 시스템의 로컬타임으로 설정한다음에

# rdate -s time.bora.net && hwclock -w  명령을 수행해야 정상적으로 적용된다.

덮어씌울거냐고 물어볼땐 무조건 yes 하면 되며

작업 후에는 반드시 date 명령어로 정상적으로 시간이 설정되었는지를 확인해본다.


(참고)
# date (휴대폰을 꺼내 현재 시간과 날짜가 맞는지 확인)
# hwclock -w (현 시스템 시간을 BIOS 시간과 동기화 시킴.)
# hwclock -r (하드웨어 시간을 표시한다.)
# reboot (재부팅 이후 정상적으로 시간이 맞는지 필히 확인한다.)


파일만 따로 퍼미션 주기.

find ./ -name '*.php'  -exec chmod 604 {} \;
find ./ -name '*.html'  -exec chmod 604 {} \;
find ./ -name '*.css'  -exec chmod 604 {} \;
find ./ -name '*.jpg'  -exec chmod 604 {} \;
find ./ -name '*.gif'  -exec chmod 604 {} \;
find ./ -name '*.png'  -exec chmod 604 {} \;

디렉토리에는 x 권한이 필요하므로

find ./ -type d -exec chmod 755 "{}" \;

디렉토리만 빼고 모든 파일 퍼미션 바꾸기

find ./ -type f -exec chmod 644 "{}" \;

{} 에 따옴표를 한 이유는 파일명에 공백이 있을경우도 처리하기 위함입니다.

 

'Works > CentOS & RockyLinux' 카테고리의 다른 글

리눅스 디렉토리만 삭제  (0) 2016.02.22
iconv 명령어 사용법  (0) 2015.12.04
쉘에서 원격 연결 끊기  (0) 2015.11.24
hdparm 명령 사용법  (0) 2015.11.24
idn 명령어 사용법  (0) 2015.11.24


특정 "로그인 사용자이름"의 접속자를 끊을 때

# skill -KILL [로그인 사용자 이름]

특정 터미널만 접속 해제 할 때

# skill -KILL -v pts/0

: pts/0에 연결된 접속이 끊어지게 됨.

위의 명령어로도 해결이 안되는 경우는 해당 프로세스를 찾아서 강제 종료하거나 재부팅. 

[추가] 위방법은 CentOS 기준 6버전까지는 동작하나 버전 7 이상부터는 작동하지 않는다.

그런경우 
ps -ef | grep ssh 명령어를 통해 연결을 끊고자 하는 TTY (pts/0~x) 에 대응되는 pid 를 확인하고
kill -9 "PID" 를 실행하면 정상적으로 해당 접속자만 연결이 끊어진다.