DB에 영향을 미치는 쿼리문을 찾아낼 수 있는 좋은 방법.

① mysql> show processlist;
show processlist -i5 여기서 숫자는 리프래쉬할 시간(초)입니다.
]# mysqladmin -uroot -p proc stat -i5 (밑에것 보다 조금더 상세)
]# mysqladmin -uroot -p processlist -i5

② mysql> show status;

기타)

]# top

팁!) ①의 경우 mysql에 접속을 한상태에서 내리는 명령어이지만 아래와 같이 접속하자 마자 바로 보여주는 예도 있다.
]# mysqladmin -uroot -p processlist

------------------------- sleep 죽이는 법 두가지 -------------------------
① mysql>kill id;
② mysqladmin kill id -u root -p

 

MySQL db 일반유저 (root 게정 변경가능) 패스워드 변경하고 싶을 때 방법이다.

# mysql -u root -p
Enter password : (패스워드를 입력하고 들어가서)

mysql>use mysql

mysql> update user set password=password('패스워드') where user='데이터베이스_id';

mysql> flush privileges;


테이블 내의 모든 내용을 삭제하므로 테이블 이름만 남음.
다른 방법으로 delete from tbl_name 과 같음

차이점은 

DELETE의 경우에는 일단 테이블의 내용을 하나의 레코드씩 삭제하는 반면, 

TRUNCATE TABLE은 먼저 테이블을 drop한 후에 테이블의 포맷 파일인 .frm 파일을 보고 테이블을 새로 만들게 된다.

그러므로 TRUNCATE와 DELETE는 동일한 결과를 보이지만 내부적으로 작동하는 방식이 다르다. 
TRUNCATE TABLE의 경우 레코드를 삭제할 필요 없이 테이블을 삭제하므로 레코드의 수가 많을 경우 매우 빠르게 삭제할 수 있다.

[형식]

truncate table tbl_name;

 

mysql.sock 라는 것은 Unix Domain Socket 입니다.
Unix Domain Socket 이라는 것은 TCP/IP와 같은 식으로 다룰 수 있는 통신 소켓입니다.
(소켓 프로그래밍에서도 socket을 생성할 때 TCP/IP와 인수만 다르게 주어서
생성시키죠. 그 뒤는 같은 방식으로 다룹니다.)
단 Unix Domain Socket은 다른 컴퓨터에 있는 프로세스와는 통신할 수 없고,
같은 컴퓨터에 있는 프로세스끼리 통신만 가능합니다. 일종의 IPC 죠.

왜 이런 게 필요하냐면,
Mysql 서버 프로그램(데몬이라고 하죠. mysqld)과 클라이언트 프로그램(mysql, 또는
php의 mysql 접속 루틴)은 서로 다른 프로세스입니다. 당연히 둘 사이에 통신이 이루어져야
어떤 일을 할 수 있는 거죠. 이 통신의 용도로 Unix Domain Socket을 쓰는 겁니다.

mysql은 TCP/IP 소켓과 Unix Domain Socket 둘 다 사용할 수 있습니다.
앞의 것은 mysql 서버와 클라이언트가 다른 컴퓨터에 있을 때 사용하며(이때 포트는 보통
3306이죠), 뒤의 것은 서버와 클라이언트가 같은 컴퓨터에 있을 때 사용합니다. 같은 컴퓨터에
있을 때에도 TCP/IP 소켓을 쓸 수도 있으나 Unix Domain Socket이 더 빠르죠.

TCP/IP 소켓이 아이피 주소와 포트를 이용해서 접속을 하듯이 Unix Domain Socket은
파일을 이용합니다. 질문에서 나왔던 mysql.sock 이라는 것이 바로 이 용도로 사용되는
파일입니다. 따라서 mysqld 를 실행시켰을 때는 mysql.sock 파일이 있지만, 중지시키면
저 파일은 사라집니다.

그래서 통신을 하기 위해서는 mysql.sock 라는 파일은 서버와 클라이언트 모두 접근
가능해야 합니다. mysql.sock 파일이 생성되는 위치에 서버가 파일을 쓰거나 읽을 수 없으면
서버는 에러를 발생시키고 중지되며, 클라이언트가 그 파일에 접근할 수 없으면 접속이
이루어지지 않습니다. mysql.sock 파일에 관한 문제는 이 접근 권한이 잘못되어서
발생하는 것이 대부분입니다.

rpm으로 설치하면 보통 mysql.sock 파일의 위치는 /var/lib/mysql/mysql.sock 입니다.
이것은 mysql 을 컴파일할 때 --with-unix-socket-path=.... 에서 설정할 수 있습니다.
이럿게 되면 mysqld, mysql, 그리고 libmysqlclient.a(so) 도 모두 이 설정을 이용해서
통신을 하게 됩니다. 이 도메인 소켓의 위치는 컴파일 후라도 명령행 인수를 이용해서
바꿔 줄 수 있습니다. 또는 /etc/my.cnf 파일에서 지정할 수도 있습니다.

unix domain socket 에 대해 더 자세히 알고 싶으시면
W. Richard Stevens, Unix Network Programming I 을 참조하시면 됩니다.  

사용중인 DB를 덤프할 때 특정 테이블을 제외하고 싶을 때는 아래 옵션을 이용하면 된다.

(전체 테이블 중 특정 1개 테이블만을 제외하는 덤프)

mysqldump -u root -p DBname --ignore-table=DBname.tbname > 저장파일명.sql

(제외할 테이블이 n개 일 경우 아래처럼 --ignore-table=dbname.tbname 을 추가한다)

mysqldump -u root -p DBname --ignore-table=DBname.tbname1 --ignore-table=DBname.tbname2 > 저장파일명.sql 

 

a.php 파일이 실행 되지 않을 경우

vi로 파일을 열어서 도스에서 만든 파일인지 확인 후, 

쉘에 dos2unix a.php 실행 하면 된다

​[참고] 시스템에 dos2unix 가 없을 경우  yum -y install dos2unix  (Redhat 계열)​


출처 : http://seobangnim.digimoon.net/zbxe/?mid=PHP&page=1&document_srl=586978

 

<?
$mobileKeyWords = array ('iPhone','iPod','BlackBerry','Android','Windows CE','Windows CE;','LG','MOT','SAMSUNG','SonyEricsson','Mobile','Symbian','Opera Mobi','Opera Mini','IEmobile');

for($i = 0 ; $i < count($mobileKeyWords) ; $i++) {

if(strpos($_SERVER['HTTP_USER_AGENT'],$mobileKeyWords[$i]) == true) {

header("Location: http://모바일페이지경로");

exit;

}
}

if(strpos($HTTP_HOST, '접속도메인') == strlen($HTTP_HOST)-strlen('접속도메인)) {
    header("location:http://연결할URL".$REQUEST_URI);
    exit;
}
else
header('Location: 예외처리경로<http형식의 절대주소로기입>');


?>

 

1. JDK(java) 설치

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>

[phpMyAdmin 설치]


 

1. 압축을 푼다.
# tar xfvz phpMyAdmin-3.2.3-all-languages.tar.gz
// phpmyadmin 버전에 따라 압축파일명이 다를수도 있음 (필자는 개인적으로 2.x대 버전을 추천한다.)


libraries 폴더로 들어간다.
# cd phpMyAdmin-3.2.3-all-languages/libraries


설정파일을 복사한다.
# cp config.default.php config.inc.php


파일을 수정
# vi config.inc.php
$cfg['PmaAbsoluteUri'] = 'http://domain.com/phpmyadmin';
$cfg['blowfish_secret'] = 'cookie'; // cookie 값 입력 (아무거나 입력해도 됨)  // 관습상 cookie로 입력을 한다.
$cfg['Servers'][$i]['host']          = 'localhost';
$cfg['Servers'][$i]['auth_type']     = 'cookie'; (작동 안되면 http 입력)
$cfg['Servers'][$i]['user']          = 'root';
$cfg['Servers'][$i]['password']      = 'mysql 비밀번호';


수정한 파일 이동
# mv config.inc.php ../


phpMyAdmin 접속할 수 있도록 웹폴더로 이동
# cd ../
# mv phpMyAdmin-3.2.3-all-languages /home/account/public_html/phpmyadmin // account는 서버의 계정임 (각각 다를수 있음)


* 웹에 접속해서 확인
http://domain.com/phpmyadmin


[트러블슈팅]

mcrypt 확장모듈을 불러올 수 없습니다.<br />PHP 환경설정을 검사하십시오.
(접속시 이런 메시지가 하단에 나타난다면)


여러가지 방법이 있겠지만 yum을 이용한 방법이 가장 간편하므로

# yum -y install libmcrypt libmcrypt-devel


php 재컴파일을 해야한다. 기존 컴파일 옵션을 그대로 사용하되

옵션에 --with-mcrypt 옵션을 넣고 컴파일 할것.

make && make install 과정 진행 중에

make: *** [libphp5.la] Error 1 (이와 같은 에러가 나면서 중단될 경우)

# yum install libtool-ltdl-devel -y

해주면 해결된다.

성공적으로 php 재컴파일이 끝나면

phpinfo(); 함수를 이용해서 정상적으로 mcrypt 옵션이 붙었는지 확인해보고 붙었다면

phpmyadmin 페이지에 접속해서 mcrypt 확장모듈을 불러올 수 없습니다.<br />PHP 환경설정을 검사하십시오.

메시지가 사라졌는지 확인해볼것. 



1. 소스파일 다운로드   
roundcubemail-0.8.6.tar.gz

CentOS 가 설치된 서버에 오픈소스 웹 메일인 RoundCube 를 설치해 봅시다.

사실 설치해서 사용중인데, 문제가 있어서 최신 버전으로 다시 설치하려니, 방법이 기억이 잘 안나서...

나중에 다시 써 먹을 요량으로 기록합니다.

http://roundcube.net 에 가서 포스팅 현재 최신 버전인 0.8.5 를 다운받습니다.

다운받은 파일을 서버에 업로드를 합니다.

아파치 디폴트 디렉토리인 /var/www/html/ 에다가 업로드합니다.

서버로 로그인 한 후, /var/www/html/ 로 가서 업로드한 파일을 압축해제 합니다.

tar zxvf roundcubemail-0.8.5.tar.gz

roundcubemail-0.8.5 디렉토리가 생깁니다.


들어가서 좀 살펴보고...난 후, 저 긴 디렉토리 이름을 짧은 걸로 바꿉니다.

webmail 이런걸로다...  (mv roundcubemail-0.8.5 webmail)


cd webmail

chmod 707 temp/ logs/

2. DB 계정 및 DB 생성

mysql 에 사용자와 DB를 만듭니다. 전 webmail 라고 만들었습니다.

mysql> create database webmail;
mysql> grant all privileges on webmail.* to webmail@localhost identified by 'DB패스워드';
mysql> flush privileges;


cd SQL/
mysql -u webmail -p webmail < mysql.initial.sql
Enter password:  패스워드입력

3. Apache 에 접속도메인 추가

<VirtualHost *>
ServerAdmin root@totohouse.co.kr
DocumentRoot /home/webmail/
ServerName webmail.YOURDOMAIN
ServerAlias www.webmail.YOURDOMAIN
</VirtualHost>


php.ini 파일에 date.timezone = ASIA/SEOUL  지시자 추가

Apache 재시작 후 해당 주소로 접속시 500 (Internal Server Error) 에러 발생시 http.conf 의 Directory 지시자 중

/home 디렉토리에 대한 접근권한 중 AllowOverride 항목 뒤에 Indexes 를 추가 후 Apache 재시작.

또는 .htaccess 파일 내용중 ExpiresActive On 와 ExpiresDefault "access plus 1 month" 를 주석처리한다.

4. dovecot.conf 에 아래와 같이 imap 프로토콜 사용 정의

 protocols = pop3 imap 

 /etc/init.d/dovecot restart

 netstat -nlp 의 결과 중 143포트가 아래처럼 나오면 된다.

tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN      20333/dovecot

5. roundcube 설치

http://webmail.YOURDOMAIN/installer​ 에 접속하여 설치시작


[환경설정 입력항목 정리] -> 전체 입력아닌 필수적인것만을 기록함.


product_name : Roundcube Webmail (다른이름으로 변경 가능)


[Database setup]
라운드큐브 설치 시 제작된 DB 정보를 올바르게 입력한다.


[IMAP Settings]
The IMAP host(s) chosen to perform the log-in -> 127.0.0.1
호스트필드를 127.0.0.1 로 하는이유는 서버에 도메인이 여러개일 경우
단일 도메인만 존재한다면 도메인값을 입력해도 무방함.
default_port -> 143


[Display settings & user prefs]
language -> ko_KR 


6. 마무리


모든 설치가 끝나면 webmail 디렉토리내의 installer 디렉토리를 삭제하고 메일 발송 및 수신 테스트를 진행해 본다.


*. 추가내용

라운드큐브메일 0.8 대는 php 5.2.x 에서 설치가 가능하지만

라운드큐브메일 0.9 이상의 버전에서는 php 5.3.x 이상 의 버전이 필요합니다.

 

'Works > 설치매뉴얼' 카테고리의 다른 글

Apache에 mod_cband 설치  (0) 2016.06.24
PHP 속도 향상을 위한 eAccelerator 설치  (0) 2016.03.18
JDK(java) & tomcat 설치 총정리  (0) 2016.01.11
php pdo-mysql 확장 모듈 설치  (0) 2015.10.28
Apache 에 GeoIP 모듈설치  (0) 2015.10.28