'분류 전체보기'에 해당되는 글 87건

  1. 2015.04.09 sftp
  2. 2015.04.09 sendmail + dovecot
  3. 2015.04.08 톰캣 아파치 연동하기
  4. 2015.04.07 crontab
  5. 2015.04.07 crontab 이용한 백업 스크립트
  6. 2015.04.07 etc/host.conf
  7. 2015.04.06 mysql 테이블 복구
  8. 2015.04.06 mysql 기본 명령
  9. 2015.04.03 mysql 캐릭터셋
  10. 2015.04.03 nginx

sftp

리눅스 2015. 4. 9. 15:29

# cat /etc/ssh/sshd_config | grep sftp


Subsystem sftp /usr/libexec/openssh/sftp-server


sshd의 서브시스템으로 sftp 서버 기능이 들어가 있다. 

SFTP 서버 모듈은 openssh-server 패키지에 들어 있다.


통신 포트는 22번 기본적으로 ftp는 21번이다.


'리눅스' 카테고리의 다른 글

ftp user 폴더변경 접속제한 사용권한  (0) 2015.04.13
Apache : CSR 생성 및 SSL 인증서 적용  (0) 2015.04.13
sendmail + dovecot  (0) 2015.04.09
톰캣 아파치 연동하기  (0) 2015.04.08
crontab  (0) 2015.04.07
Posted by Narusika
,

sendmail + dovecot

리눅스 2015. 4. 9. 11:32





  sendmail 설치



# yum install sendmail sendmail-cf

 


sendmail.mc 파일수정


52,53 line 수정 (앞부분 dnl 제거)

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

 

 116  line 수정

127.0.0.1을 0.0.0.0으로 개방

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
(수정 후)
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl



m4 명령으로 sendmail.cf 생성

# m4 sendmail.mc > sendmail.cf


sendmail.cf 수정


95line 수정(도메인이 있을 경우 수정. 없다면 크게 신경 안써도 됨)
# my official domain name
# ... define this only if sendmail cannot automatically determine your domain
#DjYour domian name

 445 line 보안을 위해 일부 글자 다음과 같이 삭제
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
(수정 후)
O SmtpGreetingMessage=$j Sendmail; $b

 /etc/mail/local-host-names 도메인추가
*hostname과 local-host-names과 동일한 도메인 입력할것!


 sendmail 재시작


# service sendmail restart


sendmail 테스트


# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 linux.net ESMTP Sendmail 8.13.8/8.13.8; Tue, 11 Mar 2008 17:36:47 -0400



# yum install dovecot

 

 # vi  /etc/dovecot/dovecot.conf 수정



주석 제거


# Protocols we want to be serving.

protocols = imap pop3 lmtp


# A comma separated list of IPs or hosts where to listen in for connections. 

# "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces.

# If you want to specify non-default ports or anything more complex,

# edit conf.d/master.conf.

listen = *                                                                    


 #/etc/dovecot/conf.d/10-auth.conf  수정


# Disable LOGIN command and all other plaintext authentications unless

# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP

# matches the local IP (ie. you're connecting from the same computer), the

# connection is considered secure and plaintext authentication is allowed.

disable_plaintext_auth = no

정정




 

dovecot 서비스 재시작

 # service dovecot restart

 

 dovecot imap4 서비스 테스트


 # telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
* OK Dovecot ready.


 

 dovecot pop3 서비스 테스트


# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.



※ 만약 localhost를 제외한 외부에서 sendmail 혹은 dovecot(imap, pop3)에 텔넷 연결이 되지 않을 경우

    다음 세 가지 사항을 점검해 볼 필요가 있다.

    1. iptables            25번, 110번, 143번 포트가 방화벽에서 허용되고 있는지 유/무

    2. netstat -avp     LISTENINIG 포트 체크

    3. ps -ef | grep sendmail        혹은   ps -ef | grep dovecot

 



-----------------------------------------------------------------------------------------------------------------------------------------------------------------



/etc/dovecot/conf.d/10-mail.conf


# <doc/wiki/MailLocation.txt>


mail_location = mbox:/var/empty:INBOX=/var/spool/mail/%u:INDEX=MEMORY           추가


'리눅스' 카테고리의 다른 글

Apache : CSR 생성 및 SSL 인증서 적용  (0) 2015.04.13
sftp  (0) 2015.04.09
톰캣 아파치 연동하기  (0) 2015.04.08
crontab  (0) 2015.04.07
etc/host.conf  (0) 2015.04.07
Posted by Narusika
,

아파치 및 PHP 는 설치되어있다는 가정하에 설명합니다.

jdk 및 tomcat 은 작성일자 (2013. 10. 08) 최신버전입니다.

 

[설치 버전]

http 2.2.17

jdk 1.7.0_40

tomcat 7.0.42

 

 

1. jdk 다운로드 및 설치

http://java.sun.com 사이트의 'Java SE' 메뉴에서 최신버전의 JDK를 다운로드 받아 서버에 올려놓습니다.

올려놓은 파일을 rpm 명령어로 설치합니다.

 

# rpm -Uvh jdk-7u40-linux-x64.rpm

 

설치가 완료되었으면 환경변수 설정을 합니다.

 

# vi /etc/profile

JAVA_HOME=/usr/java/jdk1.7.0_40

CATALINA_HOME=/usr/local/tomcat

PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

 

저장후 적용을 위해 아래 명령을 실행합니다.

# source /etc/profile

 

java가 정상적으로 설치되었는지 버전을 확인해봅니다.

# java -version

 

java version "1.7.0_40"

Java(TM) SE Runtime Environment (build 1.7.0_40-b43)

Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

 

 

2. tomcat 다운로드 및 설치

# cd /usr/local/src

# wget http://apache.tt.co.kr/tomcat/tomcat-7/v7.0.42/bin/apache-tomcat-7.0.42.tar.gz

# tar xvzf apache-tomcat-7.0.42.tar.gz

# mv apache-tomcat-7.0.42 /usr/local/tomcat

 

tomcat 이 정상적으로 설치 되었는지 실행을 통해 확인해봅니다.

# startup.sh

 

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/java/jdk1.7.0_42

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

 

 

3. mod_jk 설치

연동에 필요한 커넥터를 다운로드 하고 mod_jk.so 파일을 생성합니다.

 

# wget http://apache.tt.co.kr//tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.37-src.tar.gz

# tar xvzf tomcat-connectors-1.2.37-src.tar.gz

cd tomcat-connectors-1.2.37-src/native

# ./buildconf.sh

# ./configure --with-apxs=/usr/local/apache/bin/apxs

# make

# cp -arp apache-2.0/mod_jk.so /usr/local/apache/modules

 

yum 으로 설치시 apxs가 안보인다.

yum install httpd-devel 설치하자



------ 또다른 방법 ----------

연동에 필요한 커넥터를 다운로드 합니다.

OS bit 수 나 아파치의 버전이 틀리다면 아래 URL 에서 파일명을 제외하고 접속한 뒤

사용하는 버전 디렉토리를 찾아가 다운로드를 하면 됩니다.


# wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/x86_64/mod_jk-1.2.31-httpd-2.2.x.so

# cp -arp mod_jk-1.2.31-httpd-2.2.x.so /usr/local/apache/modules/mod_jk.so

# chmod 755 /usr/local/apache/modules/mod_jk.so

----------------------------

 

 

4. http + tomcat 연동 설정

아파치 설정 파일을 열어 아파치 구동시 모듈이 불어와지도록 아래 내용을 추가해줍니다.

# vi /usr/local/apache/conf/httpd.conf

LoadModule jk_module modules/mod_jk.so 

 

DirectoryIndex index.html index.htm index.php index.jsp

 

AddType application/x-httpd-php .html .htm .php .inc .jsp

 

<IfModule jk_module>

JkWorkersFile conf/workers.properties

JkShmFile logs/mod_jk.shm

JkLogFile logs/mod_jk.log

JkLogLevel info

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

</ifModule>


# vi /usr/local/apache/conf/workers.properties

workers.tomcat_home=/usr/local/tomcat        // tomcat 설치 디렉토리

workers.java_home=/usr/java/jdk1.7.0_40       // java  설치 디렉토리

worker.list=ajp13

worker.ajp13.port=8009

worker.ajp13.host=localhost

worker.ajp13.type=ajp13 



5. 사이트 설정 (virtualhost)

아파치 설정파일에 사이트를 추가합니다.

# vi /usr/local/apache/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

    DocumentRoot "/home/neulwon/public_html"

    ServerName neulwon.com

    ServerAlias www.neulwon.com

    JkMount /*.jsp ajp13                 // 각 virtualhost 마다 추가

</VirtualHost> 



환경변수 

vi ~/.bash_profile

 CATALINA_HOME=/home1/tomcat                                                 설치 폴더

 JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.91.x86_64                jdk 

 export  JAVA_HOME CATALINA_HOME                                            







톰캣 설정 파일에 사이트를 추가합니다.

# vi /usr/local/tomcat/conf/server.xml

<Host name="neulwon.com" appBase="/home/neulwon/public_html" unpackWARs="true" autoDeploy="true">

    <Context path="" docBase="/home/neulwon/public_html" crossContext="true" debug="0" reloadable="true"/>

    <Alias>www.neulwon.com</Alias>

</Host>


아파치와 톰캣을 재시작하여 적용하도록 합니다.

jsp 가 잘 불러와지는지 확인을 위해 소스 기본 디렉토리에 index.jsp 라는 샘플 파일을 만들어 넣습니다.

 

# vi /home/neulwon/public_html/index.jsp

<html>

<body>

<%

String str = request.getParameter("name");

if(str == null)

{ str = "JSP"; }

%>

Hello, <%= str %>!!!

</body>

</html> 

 

저장한 뒤, 사이트 접속을 하여 정상 출력되는지 확인합니다.

 

접속 URL : http://neulwon.com/index.jsp

 

정상일 경우 출력 내용 : Hello, JSP!!!

잘못된 경우 출력 내용 : Hello, !!!  또는 소스 내용 출력

 


출처 : http://dbjara.com/board_Ljff80/252

'리눅스' 카테고리의 다른 글

sftp  (0) 2015.04.09
sendmail + dovecot  (0) 2015.04.09
crontab  (0) 2015.04.07
etc/host.conf  (0) 2015.04.07
nginx  (0) 2015.04.03
Posted by Narusika
,

crontab

리눅스 2015. 4. 7. 16:30

/etc/crontab


-e 설정된 파일 편집

-d 등록된 내용 삭제

-l 현재 등록된 내용 보기




  분           시          일         월         요일                명령어

0-59        0-23       0-31       1-12          0-7          실행할 명령 한줄로 적기.


* : 모든 시간

1,3,5   콤마로 구분하여 여러시간대 지정

1-10 시간범위 지정

2-10/3   2~10시까지 3시간 간격으로 (3,6,9를 의미)




ex)

원하는 시간형  식
  매주 토요일 새벽 2:20  20  2     *  *  6  명령어
  매일 오후 4,5,6시  0  4-6   *  *  *  명령어
  매일 2시간간격으로 5분대에  5  */2 *  *  * 명령어
  매월 1일 새벽 1:15  15  1   1  *  *  명령어
  1,7월 1일 새벽 0:30  30  0   1  1,7  *  명령어


'리눅스' 카테고리의 다른 글

sendmail + dovecot  (0) 2015.04.09
톰캣 아파치 연동하기  (0) 2015.04.08
etc/host.conf  (0) 2015.04.07
nginx  (0) 2015.04.03
host 접속 제한  (0) 2015.04.02
Posted by Narusika
,


#!/bin/bash

 

# Backup Variables

backupDate=$(date +%Y%m%d) || echo "Error : Not init variable(backupDate)"

backupDir=/backup/ || echo "Error : Not init variable(backupDir)"

 

# Make backup directory

mkdir "${backupDir}${backupDate}" || echo "Error : Not created sub directory"

 

# Start log

echo "System backup start - $(date +%Y-%m-%d) $(date +%H:%M:%S)"

 

# File system Backup

tar cvpzf "${backupDir}${backupDate}"/system_"${backupDate}".tar.gz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/media --exclude=/sys --exclude=/backup / || echo "Error : System backup failed."

echo "End system files backup - $(date +%Y-%m-%d) $(date +%H:%M:%S)"

 

# DB Backup

mysqldump -u[유저] -p[패스워드] [DB명] > "${backupDir}${backupDate}"/DB_"${backupDate}".sql || echo "Error : DB backup failed."

echo "End DB backup - $(date +%Y-%m-%d) $(date +%H:%M:%S)"

 

# End log

echo "End backup - ${backupDir}${backupDate}.tar.gz"




crontab


# 매월 30일 0시 1분에 정기 백업

1 0 30 * * /bin/sh /backup/backup.sh > /backup/backup.log


------------------------------------------------------------------------------------------------



Step 1. 백업 Shell Script 작성

백업 수행을 위해 아래와 같이 'backup.sh' 이란 이름의 간단한 백업 Script를 작성한다.

"date" 명령어를 사용하여 "[연월일_시분초]_cvs_backup.tar.gz"의 형식으로 백업한 시간을 prefix로 파일을 압축하여 백업하도록 하였다.
 

#!/bin/bash

# 백업을 수행 할 디렉터리
backup_source="/home/cvs"

# 백업을 할 압축 파일명
backup_filename=`date +"%Y%m%d_%H%M%S_cvs_backup.tar.gz"`
backup_filename="/backup/${backup_filename}"

# tar를 이용하여 백업을 수행
tar zcvf ${backup_filename} ${backup_source} 


작성한 Shell Script에 실행 권한을 부여한다.

# chmod +x backup.sh 

Step 2. crontab에 등록

위의 Step 1에서 작성한 Shell Script를 주기적으로 실행하기 위해서 Script를 crontab에 등록한다.

crontab에는 주기적으로 실행할 시간 정보, 실행 할 사용자 그리고 실행 할 명령어를 적어주면 된다.
시간 정보에 특정 숫자를 적어주면 해당되는 시간에 수행되고, "*"을 적어주면 해당 시간 항목의 모든 경우에 실행이 된다.
예를 들어 시간 정보 부분에 "30 * * * *" 라고 써주면 매 30분 마다 수행하게 된다.

crontab의 형식은 아래와 같다.

[minute] [hour] [day of month] [month] [day of week] [user] [command]

이번의 경우에는 오전 7시, 오후 12시, 오후 7시에 백업을 수행하도록 아래 내용을 "/etc/crontab"의 가장 아래 부분에 추가해 주었다.

# for cvs backup
0  7    * * *   root    /root/backup.sh
0  12   * * *   root    /root/backup.sh
0  19   * * *   root    /root/backup.sh 


'공부중' 카테고리의 다른 글

primary와 extended 파티션  (0) 2015.12.22
Posted by Narusika
,

etc/host.conf

리눅스 2015. 4. 7. 09:46


vi /etc/host.conf


multi on

이라고 적혀있다

multi 옵션은 /etc/hosts 파일에 여러개의 IP 주소를 가질 수 있도록 하는 설정 옵션이다.(복수개의 eth 인터페이스)

1개 이상의 IP주소를 가지고 있는 호스르틑 Multihomed라고 한다. 일반적으로 여러개의 IP주소가 있다는 것은 호스트가 

그만큼의 네트워크 인터페이스가 있다는 것을 의미.

'리눅스' 카테고리의 다른 글

톰캣 아파치 연동하기  (0) 2015.04.08
crontab  (0) 2015.04.07
nginx  (0) 2015.04.03
host 접속 제한  (0) 2015.04.02
ftp root 접근 제한  (0) 2015.04.02
Posted by Narusika
,


1. MySQL 특정 테이블 체크(check)

DB 콘솔 접속 후

# use [DB명];                   => 작업할 DB를 선택

# check table [테이블명];   => 확인할 테이블을 체크



2. MySQL 특정 테이블 복구(repair)

DB 콘솔 접속 후

# use [DB명];                   => 작업할 DB를 선택                 

# repair table [테이블명];    => 복구할 테이블을 복구




3. MySQL 특정 테이블 최적화(optimize)

DB 콘솔 접속 후

# use [DB명];                    => 작업할 DB를 선택

# optimize table [테이블명]; => 최적화할 테이블을 최적화



그리고 위와 같이 특정 테이블에 대해 체크, 복구, 최적화를 할 수 있으나, 서버 장애 등으로 인해 DB의 전체 상태를 점검하거나 전체를 최적화하고 싶을 때는 테이블 하나하나 확인을 하기 어렵다. 그럴 때 아래와 같이 특정 DB의 모든 테이블을 체크하고, 복구하고, 최적화 할 수 있다.



4. MySQL 특정 DB의 모든 테이블 체크 및 자동 복구

서버 콘솔에서

# cd [MySQL_HOME]/bin                                                                

=> MySQL 설치 홈의 bin 폴더로 이동

# ./mysqlcheck -u [DB계정] -p[패스워드] --auto-repair [DB명]           

=> 해당 DB의 모든 테이블을 체크 및 자동복구



5. MySQL 특정 DB의 모든 테이블 최적화

서버 콘솔에서

# cd [MySQL_HOME]/bin                                                                

=> MySQL 설치 홈의 bin 폴더로 이동

# ./mysqlcheck -u [DB계정] -p[패스워드] --optimize [DB명]               

=> 해당 DB의 모든 테이블을 최적화


출처:http://nota.tistory.com/74

'리눅스 > mysql' 카테고리의 다른 글

mysql 실행 에러  (0) 2015.06.08
mysql 실행 오류  (0) 2015.05.30
mysql ip 설정  (0) 2015.05.16
mysql 기본 명령  (0) 2015.04.06
mysql 캐릭터셋  (0) 2015.04.03
Posted by Narusika
,


데이터베이스 접속

$ mysql -u 사용자명 -p dbname


설치 직후에는 root 사용자에 비밀번호가 없으므로 다음과 같이 접속하여 MySQL을 관리할 수 있다.


$ mysql -u root mysql



비밀번호 변경

MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않다.

다음 세가지 방법으로 비밀번호를 변경 할 수 있다.


mysqladmin이용

$ mysqladmin -u root password 새비밀번호


update문 이용

$ mysql -u root mysql


mysql> UPDATE user SET password=password('새비밀번호') WHERE user='root';

mysql> FLUSH PRIVILEGES;



Set Password 이용

SET PASSWORD FOR root=password('새비밀번호');



일단 root 비밀번호가 설정된 상태에서는 mysql이나 mysqladmin 명령을 실행할 때 -p 옵션을 붙여주고 기존 비밀번호를 입력해야만 한다.




사용자 조회

mysql> select host, user, password from user;


사용자 추가/삭제

mysql> GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'password';


username 이라는 사용자를 password라는 비밀번호를 갖도록 하여 추가한다. username은 dbname이라는

데이타베이스에 대해 모든 권한을 가지고 있다.

username 사용자는 로칼 호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면

GRANT ALL PRIVILEGES ON dbname.* TO username@'%' IDENTIFIED BY 'password';


위를 또한 번 실행한다. '%'에서 홑따옴표를 주의한다.

추가 : '%'를 호스트네임으로 지정해도 모든 호스트에서 접속할 수 없었다. 각 호스트별로 다 지정해야 했다.

아래 댓글에서 rukikuki님이 알려주셨습니다.

GRANT ALL PRIVILEGES ON testdb.* TO 'username'@'%' IDENTIFIED BY 'password' ;

처럼 'username' 이런식으로 홑따옴표를 username 에도 붙여야 하더군요.. 


http://tech.zhenhua.info/2009/01/mysql-error-104528000-access-denied-for.html 에 따르면 '%'란 localhost 를 제외한 모든 호스트를 뜻한다고 한다. 즉, localhost에 대해서는 명시적으로 따로 권한을 지정해야 한다.


불필요한 사용자 삭제는

mysql> DLETE FROM user WHERE user='username';

mysql> FLUSH PRIVILEGES;





데이터베이스 생성/보기


데이터베이스를 생성하고,

mysql> CREATE DATABASE dbname;


현재 존재하는 데이터베이스 목록을 보여준다.

mysql> SHOW DATABASES;


특정 데이타베이스를 사용하겠다고 선언한다.

mysql> USE dbname;


쓸모 없으면 과감히 삭제한다.

mysql> DROP DATABASE [IF EXISTS] dbname;


IF EXISTS 옵션은 비록 데이타베이스가 없더라도 오류를 발생시키지 말라는 의미이다.




테이블 생성/보기


테이블을 생성하고,

mysql> CREATE TABLE tablename (

column_name1 INT,

column_name2 VARCHAR(15),

column_name3 INT );


현재 데이타베이스의 테이블 목록을 보고

mysql> SHOW TABLES;


테이블 구조를 살펴본다.

mysql> EXPLAIN tablesname;

혹은

mysql> DESCRIBE tablename;


이름을 잘못 지정했으면 이름을 변경할 수도 있다.

mysql> RENAME TABLE tablename1 TO tablename2[, tablename3 TO tablename4];


필요 없으면 삭제한다.

mysql> DROP TABLE [IF EXISTS] tablename;




현재 상태 보기


mysql> status


--------------

mysql Ver 11.18 Distrib 3.23.58, for pc-linux (i686)


Connection id: 26

Current database: study

Current user: study@localhost

Current pager: stdout

Using outfile: ''

Server version: 3.23.58

Protocol version: 10

Connection: Localhost via UNIX socket

Client characterset: latin1

Server characterset: euc_kr

UNIX socket: /var/lib/mysql/mysql.sock

Uptime: 2 hours 9 min 59 sec


Threads: 1 Questions: 160 Slow queries: 0 Opens: 28 Flush tables: 1

Open tables: 1 Queries per second avg: 0.021

--------------




INSERT

mysql> INSERT INTO tablename VALUES(값1, 값2, ...);


혹은


mysql> INSERT INTO tablename (col1, col2, ...) VALUES(값1, 값2, ...);



SELECT

mysql> SELECT col1, col2, ... FROM tablename;


컬럼명을 *로 하면 모든 컬럼 의미.


mysql> SELECT col1 AS '성명', col2 AS '국어점수' FROM grade;


컬럼의 이름을 바꿔서 출력.


mysql> SELECT * FROM tablename ORDER BY col1 DESC;

mysql> SELECT col1, korean + math english AS '총점' FROM tablename ORDER BY '총점' ASC;


DESC는 내림차순 ASC는 오름차순.


mysql> SELECT * FROM grade WHERE korean < 90;


조건줘서 SELECT.


mysql> SELECT * FROM grade LIMIT 10;


결과중 처음부터 10개만 가져오기


mysql> SELECT * FROM grade LIMIT 100, 10;


결과중 100번째부터 10개만 가져오기. 첫번째 레코드는 0번 부터 시작한다.


UPDATE

mysql> UPDATE tablename SET col1=새값 WEHER 조건



DELETE

mysql> DELETE FROM tablename WEHRE 조건



mysql에서 쿼리 결과 세로로 보기

-E 옵션을 줘서 실행한다.

$ mysql -E -u root -p mysql



mysql에서 발생한 오류나 경고 다시 보기

mysql> show errors;

mysql> show warnings;




'리눅스 > mysql' 카테고리의 다른 글

mysql 실행 에러  (0) 2015.06.08
mysql 실행 오류  (0) 2015.05.30
mysql ip 설정  (0) 2015.05.16
mysql 테이블 복구  (0) 2015.04.06
mysql 캐릭터셋  (0) 2015.04.03
Posted by Narusika
,

출처 http://develop.sunshiny.co.kr/385



# 현재 캐릭터셋 검색
mysql>show variables like 'char%';

+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | latin1                           |
| character_set_connection | latin1                           |
| character_set_database   | latin1                            |
| character_set_filesystem | binary                           |
| character_set_results    | latin1                           |
| character_set_server     | latin1                            |
| character_set_system     | utf8                             |
| character_sets_dir       | /opt/mysql/mysql/share/charsets/ |
+--------------------------+----------------------------------+


mysql>status 또는 \s
--------------
mysql  Ver 14.14 Distrib 5.1.42, for pc-solaris2.10 (i386) using readline 5.1

Connection id:          1
Current database:       
Current user:           계정명@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.42 명ySQL Community Server (GPL)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:            /tmp/mysql.sock
Uptime:                 12 sec

Threads: 1  Questions: 6  Slow queries: 0  Opens: 15  Flush tables: 1  Open tables: 8  Queries per second avg: 0.500
--------------


# 데이타 베이스 생성 : utf8 타입
CREATE DATABASE 데이터베이스명 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

# 데이타 베이스 생성 : euckr 타입
CREATE DATABASE 데이터베이스명 DEFAULT CHARACTER SET euckr COLLATE euckr_korean_ci;

# 데이타 베이스 생성후 외부 접속하기 위해서 IP를 추가 해줍니다.
GRANT ALL PRIVILEGES ON 데이타베이스명.* TO '계정명'@'192.168.1.100' IDENTIFIED BY '비밀번호' WITH GRANT OPTION;


## 각각의 캐릭터 셋을 변경 - 이 변경 방법은 mysql 데몬이 재실행 될경우에 초기화 됨.
mysql> SET character_set_client = utf8;
mysql> SET character_set_results = utf8;
mysql> SET character_set_connection = utf8;
mysql> ALTER DATABASE DB명 DEFAULT CHARACTER SET utf8;
commit;


## /etc/my.cnf 파일에 설정 - 이 설정 방법을 추천 mysql 데몬이 재실행 되어도 설정을 유지 합니다.

mysql>vi /etc/my.cnf

################# utf8 설정 #################
[client]
#password       = your_password
port            = 3306
socket          = /tmp/mysql.sock

default-character-set=utf8

[mysqld]
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

port            = 3306
socket          = /tmp/mysql.sock
basedir       = /opt/mysql/mysql
datadir        = /opt/mysql/mysql/data

set-variable    = table_cache=1024
set-variable    = max_connections=500
set-variable    = max_user_connections=100
set-variable    = max_connect_errors=10000

log-slow-queries
set-variable    = long_query_time=3
skip-name-resolve

# InnoDB 사용 안할시 아래 내용추가
#skip-innodb
sync_binlog = 1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
default-character-set=utf8

################# utf8 설정후 확인 #################

mysql> \s   
--------------
mysql  Ver 14.14 Distrib 5.1.42, for pc-solaris2.10 (i386) using readline 5.1

Connection id:          4
Current database:       
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.42-log MySQL Community Server (GPL)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /tmp/mysql.sock
Uptime:                 19 min 31 sec

Threads: 2  Questions: 33  Slow queries: 1  Opens: 15  Flush tables: 1  Open tables: 8  Queries per second avg: 0.28


mysql> show variables like 'char%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /opt/mysql/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.99 sec)


################# euckr 설정 #################

[client]
default-character-set=euckr

[mysqld]
default-character-set=euckr
init_connect=SET collation_connection=euckr_korean_ci
init_connect=SET NAMES euckr
character-set-server=euckr
collation-server=euckr_korean_ci

port            = 3306
socket          = /tmp/mysql.sock
basedir       = /opt/mysql/mysql
datadir        = /opt/mysql/mysql/data

set-variable    = table_cache=1024
set-variable    = max_connections=500
set-variable    = max_user_connections=100
set-variable    = max_connect_errors=10000

log-slow-queries
set-variable    = long_query_time=3
skip-name-resolve

# InnoDB 사용 안할시 아래 내용추가
#skip-innodb
sync_binlog = 1

[mysqldump]
default-character-set=euckr

[mysql]
default-character-set=euckr 


'리눅스 > mysql' 카테고리의 다른 글

mysql 실행 에러  (0) 2015.06.08
mysql 실행 오류  (0) 2015.05.30
mysql ip 설정  (0) 2015.05.16
mysql 테이블 복구  (0) 2015.04.06
mysql 기본 명령  (0) 2015.04.06
Posted by Narusika
,

nginx

리눅스 2015. 4. 3. 10:40


출처:

다운로드


의존성

nginx를 설치하기 전에 의존성 문제를 해결해야 한다.

아래의 의존성 패키지들은 apt-get, yum과 같은 패키지 관리자를 이용해서 설치하는 것이 편리하다. 이번 수업에서는 일부러 직접 컴파일 하는 법을 다루고 있다.

PCRE

NGINX는 Perl5에서 사용하는 정규표현식 라이브러리인 PCRE를 사용한다. 아래의 주소에서 다운로드 한다. 필자는 소스 다운로드 페이지를 경유해서 아래의 주소에서 가장 최신 버전의 파일을 다운 받았다. 

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

아래와 같이 압축을 푼다. 

1
tar xvf pcre-8.32.tar.gz

openssl

https 모듈인 HttpSslModule을 사용하기 위해서는 openssl이 필요하다. openssl은 아래의 위치에서 다운로드 할 수 있다. 필자는 최신버전을 다운로드 받았다. 

http://www.openssl.org/source/

압축을 해제한다.

1
tar -xzvf openssl-1.0.1e.tar.gz;

zlib

ngx_http_gzip_module 모듈을 사용하기 위해서는 zlib 라이브러리가 있어야 한다. zlilb의 홈페이지를 방문해서 잘 찾아보면 zlib의 소스코드를 다운로드 받을 수 있는 섹션이 있다. zlib의 홈페이지는 아래와 같다.

http://zlib.net/

파일을 다운로드 받는다. 

압축을 해제한다.

1
unzip zlib128.zip

unzip은 apt-get install unzip과 같은 명령으로 설치 할 수 있다.

외부 모듈의 설치

NGINX을 컴파일 하는 이유 중의 하나는 NGINX의 확장 기능인 모듈을 이용하기 위해서다. 모듈에 대한 리스트는 아래 페이지를 통해서 구할 수 있다. 

http://wiki.nginx.org/3rdPartyModules

echo module

우리는 예제로 echo 모듈을 설치해보자. echo 모듈은 html 파일이나 에플리케이션(php, python) 없이 NGXIN의 설정만으로 페이지를 만들 수 있는 기능이다. 코드는 아래의 페이지에서 다운로드 받을 수 있다. (사용법)

https://github.com/agentzh/echo-nginx-module/tags

필자는 현시점에서 최신 버전을 다운로드 받아서 압축을 해제하겠다. 


사용자

NGINX는 마스터 프로세스(Master Process)와 작업자 프로세스(Worker Process)를 가지고 있다. ps aux | grep nginx를 실행해보면 아래와 같은 프로세스가 떠있을 것이다. 

마스터 프로세스는 루트 계정으로 실행되면서 80, 443 포트의 소켓과의 통신을 담당한다. 

작업자 프로세스는 실제로 데이터를 처리하는 프로세스라고 할 수 있는데 이 프로세스를 핸들링할 사용자를 만들어야 한다. 일반적으로 웹서버의 워커 유저는 www-data를 사용한다. www-data를 만드는 법은 아래와 같다. 

1
useradd --shell /sbin/nologin www-data

ubuntu는 아래와 같이 한다. 

1
useradd --shell /usr/sbin/nologin www-data





설치

컴파일을 하기 위해서는 C, C++ 컴파일러가 필요하다. 필자는 gcc를 사용할 것이다. 아래와 같은 명령으로 설치 할 수 있다.

1
sudo apt-get install gcc g++;
1
yum install gcc-c++;

설치는 크게 세가지 단계로 진행된다. 

  1. configure : 환경설정 
  2. make : 설치파일을 컴파일 
  3. make install : 설치파일을 이용해서 설치

configure

nginx의 소스 디렉토리로 이동한 후에 configure 명령을 실행한다. 이 때 사용할 수 있는 옵션에 대한 설명은 공식 홈페이지를 참조한다. http://nginx.org/en/docs/install.html

아래는 필자가 사용할 configure 명령이다. 

1
sudo ./configure --with-zlib=../zlib-1.2.8 --with-pcre=../pcre-8.32 --with-openssl=../openssl-1.0.1e --with-http_ssl_module --with-debug --add-module=../echo-nginx-module-0.45 --prefix=/usr/local/nginx --user=www-data --group=www-data

위의 내용에 대한 설명은 아래와 같다. 

  • --with-(zlib | pcre | openssl) : NGINX가 의존하고 있는 라이브러리들의 소스 경로
  • --with-(http_ssl_module | debug) : NGINX를 설치할 때 ssl, debug 모듈을 활성화한다. 이 모듈들은 NGINX가 제공하는 내부 모듈이지만 기본적으로는 설치가 되지 않는 옵션사항이다. 
  • --add-module : 외부 모듈인 echo 모듈의 소스가 위치하는 디렉토리
  • --prefix : NGINX가 설치될 기본 디렉토리를 의미한다. 이 디렉토리 하위에 NGINX의 실행, 로깅, 설정 파일들이 설치된다. 각각의 항목을 바꿀 수도 있다. 메뉴얼을 참고하자. 
  • --user, --gourp : www-data 사용자의 권한으로 NGXIN를 실행시킨다. www-data 사용자가 없다면 만들어야 한다. 사용자의 리스트는 아래의 명령을 통해서 알 수 있다. www-data가 아니라 자기 자신의 계정을 사용해도 된다. 

실행한 결과 필자와 같이 출력된다면 이제 컴파일 할 준비가 끝난 것이다. 아래의 정보가 설치된 모듈들과 각종 패스들이다. 참고하자.

make

컴파일을 해보자. 오랜시간이 걸릴 수 있다. 

1
sudo make;

만약 make 명령을 찾지 못한다면 apt-get install make와 같은 명령을 이용해서 설치하자. 

아래와 비슷한 화면이 출력된다면 컴파일에 성공한 것이다.

make install

이제 설치를 해보자. 

1
sudo make install;

아래와 같은 화면이 출력되면 설치에 성공한 것이다. 

설치확인

NGINX가 설치된 디렉토리로 이동해보자. 필자는 configure에서 /usr/loca/nginx를 사용했기 때문이 이 디렉토리에 NGINX의 파일들이 모두 모여있다. 

각 디렉토리의 용도는 아래와 같다.

  • conf : 설정파일
  • html : 기본 document_root
  • logs : 로그 파일
  • sbin : nginx 실행파일

NGINX 구동

NGINX를 실행보자. 성공했다면 아무런 메시지도 출력되지 않을 것이다. 

1
sudo /usr/local/nginx/sbin/nginx;

NGINX가 설치된 머신의 호스트(IP)로 접근해보자. 아래와 같은 메시지가 출력된다면 성공적으로 NGINX를 설치하고 구동한 것이다. 

init

NGINX와 같은 소프트웨어들을 서비스 혹은 백그라운드 에플리케이션이라고 부른다. 이러한 부류의 프로그램들은 표준화된 인터페이스를 가지고 있는데 아래와 같다. 

  • service nginx start : 시작 
  • service nginx stop : 정지
  • service nginx restart : 재시작
  • service nginx reload : 설정파일을 재로드
  • service nginx status : 현재 상태 

NGINX를 실행하고, 또 부팅시에 자동으로 동작하도록 하려면 /etc/init.d 에 init 스크립트를 위치시켜야 하는데 이 스크립트는 nginx의 소스에 포함되어 있지 않다. 운영체제별로 이 스크립트를 구해서 /etc/init.d에 설치하는 방법을 알아본다. 

Ubuntu

ubuntu의 init 스크립트는 다음 URL을 통해서 구할 수 있다. 

https://github.com/JasonGiedymin/nginx-init-ubuntu

아래와 같은 명령으로 최신버전의 init 스크립트를 /etc/init.d 디렉토리로 가져오고 실행하능하게 권한을 조정 할 수 있다. 

1
2
sudo chmod +x /etc/init.d/nginx;

NGINX를 자동으로 실행되게 하려면 아래와 같은 명령을 입력한다.

1
sudo update-rc.d -f nginx defaults

위의 방법을 통해서 설치한  스크립트를 실행하기 위해서는 아래와 같은 명령을 실행하면 된다. 

1
2
3
service nginx status # 현재 실행중인 NGXIN의 상태를 체크
service nginx stop # 서버 정지
service nginx start # 서버 시작

운영체제별 init 스크립트는 아래의 주소를 통해서 구할 수 있다. 

http://wiki.nginx.org/InitScripts

















'리눅스' 카테고리의 다른 글

crontab  (0) 2015.04.07
etc/host.conf  (0) 2015.04.07
host 접속 제한  (0) 2015.04.02
ftp root 접근 제한  (0) 2015.04.02
ssh root 접속 설정  (0) 2015.04.01
Posted by Narusika
,