2015년 3월 27일 금요일

아마존 웹 서비스에 서비스 배포하기(윈도우에서)



아마존 웹 서비스 컴퓨터 등록 (?)

1. 로그인 -> 상단의 Services -> EC2 -> Launch Instance
2. Choose AMI : Ubuntu Server 14.04 LTS 선택
3. Choose Instance Type  : type 을 m3.medium 선택
4. Configure Instance : 기본으로 선택된 것.. 자신의 알맞게 수정할 수 있다.
5. Add Storage : 자신의 알맞게 저장메모리 선택
6. Tag Instance : 이름 정하기. 나는 Sooyoung TODO
7. Configure Security Group : 이게 중요한것 같은데, 내가 사용할 네트워크 및 포트 번호를 정해줘야 한다.
    ** SSH / TCP / 22 / anywhere / 0.0.0.0/0         -> SSH로 통신 할때 (PuTTY 이용)
    ** HTTP /TCP/ 80 /     "             "           -> 클라이언트 요청이 들어오는 곳 apahce2 서버 
    ** Custom TCP Rule / TCP / 8080 /                -> apache2에서 톰캣 넘겨줄때 사용.
8. 완료!!! 
     EC3 Instances 가면 가상 컴퓨터가 만들어진 것을 확인할 수 있다. 
     IP 를 잘 확인하자!
<참고 : 나는 key 발급을 따로 안하고, 이미 발금된 key로 instance 등록함.>
Edit

aws 접속 하기

자신의 인스턴스(Sooyoung TODO) 우클릭 -> connect 를 누르면 접속할 수 있는 두가지 방법이 나온다. SSH client 를 이용하는 방법과 JAVA SSH Client 를 사용하는 법. 전자가 더 쉬우니 전자로 선택!
그러면 ssh client 가 필요하다. 가장 많이 사용되고 있는 Putty 를 사용하도록 한다.
1. putty.exe/puttygen.exe/pageant.exe    for Window 설치
  • putty.exe : 외부에 접속하게 하는 실행 파일
  • puttygen.exe : puttygen.exe 는 pem 파일을 putty에서 사용가능하게 변경
  • pageant.exe : pageant.exe 는 pem 파일을 통해 putty, psftp 가 서버에 접속 가능
    2. pem 파일 ppk 로 key 변환.
    1) puttygen.exe 실행
    2) Conversions -> ImportKey 선택
    3) 해당 서버에 접속하기 위한 pem 파일 선태 ㄱ
    4) 로드가 된 것을 확인후, Save Private key  선택 -> Yes
    5) 원하는 위치에 파일명을 정하고 저장.
    6) ppk 파일 생성 완료
    7) Pageant.exe. 실행하면 윈도우 우츨 하단에 트레이로 추가된것을 확인.
    8) 트레이를 더블클릭. 화면에서 Add Key 선택
    9) 위에서 저장한 ppk 파일 선택
    10) 추가된 것을 확인 후 close
    3. aws 에 접속하기
    1) Putty.exe 실행
    2) HoseName 에 아마존에서 발급해준 Public DNS IP 를 입력. (트레이에 Pageant 가 있어야 함)
    3) 접속, Yes
    4) ubuntu 서버를 사용하면 Id 는 ubuntu 임!! 접속 확인!!
참고: http://jmkook77.blogspot.kr/2012/01/putty.html
Edit

도메인 등록

나는 이미 만들어진 도메인을 등록함. 
1) 아마존 웹 서비스 사이트에서 Services -> Route53 선택
2) Hosted Zones 가서 도메인 선택
3)  상단에 Create Record Set 선택
4) 오른편에 사용할 주소와 , 내 AWS IP 입력해주고 Create 하면 완료!
Edit

AWS RDS 만들기

여기서 만들어 주면 내 AWS 컴퓨터에 따로 DB를 만들어줄 필요가 없다. 
1) 아마존 웹 서비스 사이트에서 Services -> RDS 선택
2) Launch a DB Instance 선택
3) 자신이 만들 DB 선택 (나는 My SQL )
4) Do you plan to use this database for production purposes? 에서 Yes 해야함. No 하면 외부에서 접속이 안됐던가..
5) DB 설정을 하는 곳.
  • DB Instance 에서 default 로 선택된 "db.m3.xlarge --4 vCPU, 15 Gib RAM" 선택
  • Multi-AZ Deployment : No
  • Settings 에서 root 계정의 이름과, 비밀번호 만들어줌.
  • 나머지는 default 값으로
6) Advanced Setting 
        여기서 VPC (Virtual Private Cloud) 가 Not in VPC 로 선택. notin VPC 해야 외부에서 접속 가능!!
        나머지는 그냥 그대로!
7) Launch DB Instance 하면 완료!
8) RDS 에서 Instance 클릭하면 만들어진 DB 볼수 있음.
9) ▶ 모양의 화살표를 눌러 펼치면 DB 설정 정보를 볼수 있음. 
        여기서 상단에 Endpoint: todo.clah2qfqtj71.us-east-1.rds.amazonaws.com:3306  이렇게 쓰여진것을 볼 수 있는데 이제 외부에서 접속할      수 있는 HostName 이다!!
10) 이제 mysqlworkbench 에서 접속후 확인해보자. 여기서 table 생성해주고 하면 끝!!!
Edit

파일 전송 FileZilla 이용

AWS는 key를 가지고 접속하기 때문에 파일을 전송할 때도 Key 인증이 필요하다. 
  FileZilla에서 key를 등록하고 aws 컴퓨터에 접속하는 법을 알아본다. 
1. 편집 -> 설정 -> 연결 -> SFTP 선택 -> 키파일 추가
2. 키를 선택하면 된다. (putty에서 변환된 ppk 파일 필요. pem파일 X)
3. 파일 -> 사이트 관리자
4.  호스트 (aws public ip) 포트 22 , 프로토콜 - sftp, 로그온 유형 : 일반 / 사용자 ubuntu
5.  연결!
참고 : http://stackoverflow.com/questions/16744863/connect-to-amazon-ec2-file-directory-using-filezilla-and-sftp
Edit

서비스 배포

이제 위에 우분투 서버에서 배포과정과 동일하다. 다른건 도메인 등록건에서 localhost를 자신의 도멘인으로 적어주면 끝.
1. apache 설정
#sudo vi /ect/apache2/apache2.conf
#ServerName
ServerName 도메인 이름
를 적어준다.
2. 가상 호스트 설정
#sudo vi /etc/apache2/sites-enabled/000-default.conf
ServerName 도메인 이름
3. tomcat 설정
#sudo vi /etc/tomcat7/server.xml
엔진에 defaultHost 변경
<Engine name="Catalina" defaultHost="todo.xchans.info">
호스트 이름 변경.
<Host name="todo.xchans.info" appBase="webapps" unpackWARs="true"
autoDeploy="true">
이렇게 하면 끝!

우분투 1404 server 위에 apache2 mysql tomcat7 설치 후 배포!!! mod-jk 사용 X (apache2 와 tomcat7 분리)



mod-jk의 역할은 80번 (아파치포트)로 들어 오는 것을 8080(톰캣포트)로 자동으로 연결해준다. 우리는 mod-jk를 사용하지 않기 때문에 80 포트로 들어오면 .html, .js, .css 파일을 제외한 나머지는 proxy 를 이용해 8080포트로 보낼 것이다.
우선 나같은 경우는 이런 경우를 생각하지 않고 front-end와 back-end를 한 프로젝트로 구성했는데, 보통 front-end 와 back-end 프로젝트를 나눠서 만들고 각각 배포를 달리한다. (front는 서버에 back은 was에) 이렇게 하기 위해서는 uri로 구분지어야 한다. (그런것 같다..ㅜㅜ) 예를들어 /test/로 들어오는 모든 요청은 backend로 보내고 나머지는 front에서 처리한다 이런식이다.
나는 기존에 이런 구성이 아니었기 때문에 프로젝트를 조금 수정한다.
Edit

프로젝트 수정 /api 로 오는 모든 요청은 tomcat으로 보낸다.

1) 컨트롤러에 RequestMapping("/api")
@Controller
@RequestMapping("/api")
public class TodoController {
2) js 파일에서 ajax로 보내는 모든 uri에 /api 붙여준다. 좀 노동이지만..
$http.get("./api/todos/all").success(function
여담 - 앞에 ./ 는 프로젝트 명이 어떻게 될지 모르기 때문에 상대 경로를 적어주는 것.
. 은 자기 자신 폴더를 의미함.
Edit

filter가 필요하다

apache에서 들어온 요청을 다른 서버에 있는 tomcat으로 보내는 것이기 때문에 접근제한 에러가 날 것이다. 아마
access-control-allow-origin 가 헤더게 없습니다.
이런식의 에러문구가 나타난다.
access-control-allow-origin 를 헤더에 넣기 위해서는 filter를 만들어 줘야한다.
package kr.co.kware.web.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
@Component
public class SimpleCORSFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
그리고 web.xml에도 filter 설정을 해준다.
<filter>
<filter-name>SimpleCORSFilter</filter-name>
<filter-class>
kr.co.kware.web.filter.SimpleCORSFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>SimpleCORSFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
  • 이후에 나는 maven packaging 과정에서 javax.servlet 이 없다는 에러가 났는데.
pom.xml에 아래와 같이 넣어주니 해결됨.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
Edit

apache2 설정파일에서 proxy 설정 해준다 (여기가 핵심)

  • 혹이 이전에 mod-jk가 설치되어있다면
#sudo find / -name jk.*
파일을 찾아서 지워준다. 2개였던 것으로 기억함.
#sudo vi /ect/apache2/sites-available/000-default.conf
여기에서 JkMount 로 된 것들을 모두 주석(#) 처리한다.
mod-jk가 역할을 안하는지 확인하려면
http://localhost:80 -> 접속시 우분투 아파치 화면
http://localhost:8080 -> 톰캣 접속화면
이 다르게 보여야 한다.
이제 본격적으로 apache2 설정파일을 수정해보자. (정적파일외 모든것은 tomcat으로 가게끔!)
먼저 아파치 설정파일로 이동
#sudo vi /ect/apache2/sites-available/000-default.conf
  • mod-jk 를 사용 했다면 JkMount 로 된 것들을 모두 주석(#) 처리한다.
  • DocumentRoot를 기본 설정인 /var/www/html 로 바꾼다
  • apache에서 처리하는 파일을 모두 /var/www/html 로 이동시켜야 한다. 그리고 처음 요청이 들어오는 것이 여기!!
    앞서 말했지만 프론트엔드와 백엔드 프로젝트를 따로 구성해, 프론트엔드 프로젝트를 /var/www/html 에다가 배포하고, 백엔드 프로젝트를 /var/lib/tomcat7/webapps 에 배포하는 것.
    우선 나는 같은 곳에서 만들었기 때문에 .war 파일을 /var/lib/tomcat7/webapps 에 넣고 html,js,css 파일을 /var/www/html 이동함.
  • 혹시 DocumentRoot가 /var/lib/tomcat7/webapps/ROOT 로 되어 있으면 주석 처리.
  • 프록시 설정을 적어준다.
ProxyPass /api http://localhost:8080/api
ProxyPassReverse /api http://localhost:8080/api
/api 로 시작되는 uri 는 모두 http://localhost:8080/api 서버로 간다는 뜻이다.
  • tomcat의 server.xml 에 프록시 등록
<Connector port="8080" ...
proxyName="localhost"
proxyPort="80"/>
  • 프록시에 링크 걸어두기
ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/
ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/
ln -s /etc/apache2/mods-available/proxy_connect.load /etc/apache2/mods-enabled/
프록시를 등록했으면 링크 걸어서 사용가능한 프록시?로 링크를 걸어주는것...같..? ? ??ㅎㅎ 여튼 해줘야한다!!!
준비끝!!!!!
Edit

아파치와 톰캣을 재시작 해주자

#sudo service apache2 restart
#sudo service tomcat7 restart

우분투 1404 server 위에 apache2 mysql tomcat7 설치 후 배포!!! mod-jk 사용



오랜시간 삽질끝에 간신히 우분투위에 배포완료. 원래 목적은 virtual box 에 apache2 , tomcat7, mysql5.5 server 를 각각 설치할 우분투를 3곳 만들어 서로 어떻게 통신하는 지를 알고 싶었지만 어려워 한곳에다 모두 설치했다. (꼭 해봐야지...)
우선 통신은 이렇게 된다.
웹 서버 apache2 에서는 정적 콘텐츠인 .html, .js , .css 파일만 처리하고 나머지는 WAS 인 tomcat7 에 넘긴다. 그리고 tomcat7은 db와 통신한다. 따라서 apache에 html, js, css 파일을 제외한 나머지를 tomcat에 넘기라는 설정을 어딘가에서 해줘야하는데.. 잘 모르겠다. 보통 인터넷에서 아파치와 톰캣을 연동시키는 libapache-mod-jk 를 설치해서 통신하는데, 팀장님은 필요없다고 하신다..... 따로 아파치에서 설정해주면 된다고...하시는데....... 점점점....ㅎㅎㅎㅎ
결론은 우분투 14.10 server 한곳에 아파치, 톰캣, mysql 을 설치하고 , spring mvc 를 이용한 웹 어플리케이션을 배포했다. 그 과정을 적고자 한다.
Edit

apache2 설치

#sudo apt-get install apache2
설치후
#sudo /etc/init.d/apache2 나 # sudo service apache2 start
로 실행 시킨후 http://[우분투IP] 로 접속하면 "Apache2 Ubuntu Default Page"가 나온다
Edit

apache2 설정

1. 서버 네임 등록
#sudo vi /ect/apache2/apache2.conf
#ServerName
ServerName localhost
를 적어준다.
2. 가상 호스트 설정
#sudo vi /etc/apache2/sites-enabled/000-default.conf
ServerName localhost
를 적어준다.
libapache-mod-jk 를 설치해 톰캣과 연동시 이곳에 설정해 줘야 할것이 더 있다.
우선
#DocumentRoot /var/www/html
이라고 되어있는 것에 #을 이용해 주석처리를 하고
DocumentRoot /var/lib/tomcat7/webapps/ROOT/
를 적는다. 그 다음
JkMount /* ajp13_worker
를 적어준다. 잘은 모르겠지만 아파치에서 처리하지 않는 모든 것들을 톰캣이 받아서 처리해 준다는 것 같다...(추측..)
Edit

tomcat7 설치

1. 설치하기 전에 java가 설치 되어있어야 함!!!!
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java9-installer
2. 톰캣 설치
#sudo apt-get install tomcat7
#sudo apt-get install tomcat7-admin
tomcat7-admin 은 톰캣 메니져로 톰캣을 관리하기 좀더 편한 툴이다. 웹에서 어떤것이 실행중인지 확인가능..ㅎㅎㅎ
3. 설치 확인 : 설치 후 http://[우분투ip]:8080 으로 접속하면 It works! 란 화면이 나온다.
톰캣 홈 디렉토리 : /var/lib/tomcat7/webapps/ROOT
CATALINA HOME 디렉토리 : /usr/share/tomcat7
CATALINA BASE 디렉토리 : /var/lib/tomcat7
로그 : /var/log/tomcat7/ 에 들어가면 여러 파일이 있는데 내가 주로 본 것은 catalina.out 파일 사용함
4. 로그를 보고 싶다면
#sudo tail -100 /vat/log/tomcat7/catalina.out
#sudo tail -f /vat/log/tomcat7/catalina.out
이렇게 봤음. 다른 파일을 봐도 상관없음!
Edit

Apache와 Tomcat 연동

1. 연동 이유
우선 참고. 아파치와 톰캣 연동하는 이유 -> http://hmgirl.tistory.com/67 참고
요약하면 앞에 말한 이유와 같다. apache2는 정적콘텐츠만 처리하기때문에 그 외 나머지는 톰캣이 처리하게 하기위해 넘겨줘야한다. 때문에 연동한다는 내용.
2. 연동을 하기 위한 모듈(mod-jk)를 설치 한다.
#sudo apt-get install libapache2-mod-jk
3. 설치후 workers.properties 파일 수정 설정 변경한다.
#sudo vi /etc/libapache2-mod-jk/workers.properties
에서
workers.tomcat_home = /usr/share/tomcat7
workers.java_home = /usr/lib/jvm/java-7-oracle
자신의 톰캣 홈과 자바 홈 수정 해준다.
그리고 여기서 쭉 읽다 보면
workers.list = ajp13_worker
worker.ajp13_worker.type = ajp13
라는게 나오는데 이게 default 값인듯하다. 이게 apache2 설정과 관련이 있는듯.뭔가..
4. 이후에 apache2에도 다시 설정! (이미 위에서 하고 왔다. 원래 순서는 지금 )
#sudo vi /etc/apache2/sites-enabled/000-default.conf 여기서 DocumentRoot /var/lib/tomcat7/webapps/ROOT/로 수정하고 JkMount /* ajp13_worker 라고 적어준것
5. tomcat7/server.xml 수정
#sudo vi /etc/tomcat7/server.xml
(주석제거)
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
(주석제거)
이 부분 주석 제거.
하는김에 encoding 설정도 해주자
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
URIEncoding="UTF-8"
enableLookups="false"
useBodyEncodingForURI="true" />
여기도 URIEncoding="UTF-8" 적어준다
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443"
connectionTimeout = "20000"
URIEncoding="UTF-8" />
참고 : http://warmz.tistory.com/556
Edit

mysql 설치 및 설정

1. mysql 설치
#apt-get install mysql-server-5.5
설치할때 root의 비밀번호 설정하는데 이때 비밀번호를 잘 기억하자.
2. 외부에서 접속할수 있도록 권한 부여
1) mysql db 로그인!
mysql -u root -p
mysql -p 우분투ip -P 3306 -u root -p
2) db 변경
use mysql
3) 권한 부여
GRANT ALL PRIVILEGES ON *.* to 'root'@'%' IDENTIFIED BY 'root 비밀번호';
4) 즉시 반영
flus privileges;
3. mysql 설정 파일 변경
#sudo vi /etc/mysql/my.cnf
에서
bind-address = 127.0.0.1 이 부분 주석 처리
4. my.cof 에서 한글 설정 .
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
init_connect = set collation_connection = utf8_general_ci
init_connect = set names utf8
[mysql]
default-character-set=utf8
[mysqld_safe]
default-character-set=utf8
[client]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
  • 한글 설정 확인
1) mysql 로그인
2) mysql 문자셋 확인
show variables like 'char%';
에서 character set 이 모두 utf8 이것 확인 이 중에 latin1 이 있다면
set character utf8;
3) 테이블에서도 확인 >>> 난 이문제로 계속 안됐었음 ㅠㅠ
show create table 테이블명;
에서 CHARSET 곳 확인. 이곳이 잘못되어 있다면
alter table 테이블명 convert to charet utf8;
참조 : http://blog.naver.com/cjmzzang119/110114920197
Edit

배포

1. 이클립스에서 spring maven 프로젝트 war 파일 만들기
1) 프로젝트 pom.xml 우클릭
2) run as 에서 run configuration 클릭
3) Goals : _______ 빈칸에 , clean package 입력 (클린후 패키지 만든다는 뜻 )
4) run 한다.
--- maven-war-plugin:2.3:war (default-war) @ todoList ---
[INFO] Packaging webapp
[INFO] Assembling webapp [todoList] in [D:\workspace\todoList\target\todoList-0.0.1-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [D:\workspace\todoList\WebContent]
[INFO] Webapp assembled in [501 msecs]
[INFO] Building war: D:\workspace\todoList\target\todoList-0.0.1-SNAPSHOT.war
5) 콘솔창에 위와 같이 뜨고, war 파일이 저장된 경로가 나타난다.
이때 주의!!!!!
maven packaging 시 src 안에 있는 properties, xml 파일은 빌드되지 않는다. 따라서 pom.xml 설정을 바꿔줘야 한다.
<build>
<resources>
<resource>
<!-- src/main/java 폴더의 xml파일들을 빌드에 포함 -->
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<!-- src/main/resources 폴더의 xml, properties, setting파일들을 빌드에 포함 -->>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
<include>**/*.setting</include>
</includes>
</resource>
</resources>
</build>
참조 http://blog.iotinfra.net/?cat=13&paged=3
2. .war 파일을 만들었으면
/var/lib/tomcat7/webapps 에 파일을 옮긴다.
나는 FileZilla 프로그램을 사용해서 옮김. 옮길때 권한이 문제되면 우선 되는 곳에 옮겨두고 우분투에서 mv 시킨다.
/ROOT 밑에 넣으면 파일이 올라오지도 않음. webapps위에!!!
3. 톰캣 재시작
#sudo service tomcat7 restart
4. 된다!!!!!
Edit

에러 상황

  • classNotFound로 WEB-INF/applicationContext.xml 에서 dataSource 를 찾을 수 없다는 에러 발생
<bean class="org.apache.commons.dbcp.BasicDataSource" id="dataSource">
basicDataSource 클래스가 tomcat.dbcp 패키지를 사용한것이었는데, pom.xml에 다운받은것은 tomcat.dbcp가 아니라, commons.dbcp 것..!!!
실제로 찾아보니까 tomcat.dbcp.basicDataSource 는 없다. 여튼 xml 저렇게 수정해주니 됐음!!!

우분투 14.04 usb 인식 실패 exfat



* 문제

Error mounting /dev/sda6 at /media/gkp/Backup: Command-line 
`mount -t "exfat" -o "uhelper=udisks2,nodev,nosuid" "/dev/sda6" "/media/gkp/Backup"' 
exited with non-zero exit status 32: mount: unknown filesystem type 'exfat'


* 해결방법

sudo apt-get install exfat-fuse exfat-utils
* 참고

http://askubuntu.com/questions/364270/mount-unknown-filesystem-exfat



진짜 별개 다 문제다....하.. 

우분투 14.04 이클립스 설치


참고 : http://logon.tistory.com/136

이클립스 사이트에서 linux 버전으로 다운로드

다운로드 후

> # tar xvfz eclipse~~~.tar


우분투 14.04 chmod 파일 권한 주기


루트 계정으로 간다.

>   # sudo su

chown -R 소유자 : 소유권한  폴더 또는 파일 명

-R 은 하위 디렉토리 권한까지 모두 준다는 것.

> chown -R sooyoung:sooyoung /data/

2015년 3월 26일 목요일

오라클 jdk 설치 과정 에러 - Sub-process /usr/bin/dpkg returned an error code (1) 갬갬


* 참고 : http://askubuntu.com/questions/414885/oracle-jdk-7-is-not-installed-error


*  문제

Oracle JDK 7 is NOT installed.
dpkg: error processing oracle-java7-installer (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 oracle-java7-installer
E: Sub-process /usr/bin/dpkg returned an error code (1)


*  해결방법

sudo dpkg -P oracle-java7-installer
sudo apt-get -f install

2015년 3월 17일 화요일

[우분투 ubuntu] 우분투 14.04 server에 Mysql 설치, 외부 권한 주기, db 생성


  • Mysql 검색
    • #apt-cache search mysql-server
  • Mysql 설치 
    • #apt-get install mysql-server-5.5 
    • #apt-get install mysql-client-5.5
      -사실 클라이언트는 필요없다. 근데 우선 나는 설치함.
  • Mysql 외부 접속 권한 부여
    -설치할 당시에는 localhost만 접속할 수 있게 설정되어 있다.
    • mysql database에 로그인 
      • #mysql -u root -p
        -우선 root 로 로그인한다. 패스워드는 설치할때 설정한 패스워드 입력
      • #mysql -h 우분투ip -P 3306 -u root -p
    • default db 변경 
      • use mysql;
    • 권한 부여 
      • GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '패스워드 입력';
        - mysql에서는 sql 문을 사용할수 있다
        - root@모든 아이피로 접속된 사용자에게 모든 권한을 준다는 뜻
      • flush privileges;
        - 권한 즉시 적용
      • .my.cnf 설정 파일 변경 
        • #sudo vi /etc/mysql/my.cnf  에 들어가서 
          • bind-address = 127.0.0.1 이 부분 주석
      • mysql server 재시작 
        • #sudo /etc/init.d/mysql restart  
  • mysql db 생성
    mysql 에서는 sql문 사용이 가능하다
    • mysql 접속 : #mysql -u root -p 
    • 현재 database 보기: show databases; 
    • database 만들기 : create database 데이터베이스명; 
    • database 사용 : use 데이터베이스명'
    • table 만들기 : create table 테이블명 (
      칼럼명 데이타형식 ~~~~
      );
      원래 mysql create 문과 같다.
    • 예를들면, 나는 TODO라는 이름의 테이블을 만들때,

      CREATE TABLE TODO (
      TODO_ID int(11) NOT NULL AUTO_INCREMENT,
      CONTENT varchar(200) DEFAULT NULL,
      HASDONE varchar(10) DEFAULT NULL,
      DATE datetime DEFAULT NULL,
      PRIMARY KEY (TODO_ID)
      ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


위 블로그 참조함.  우분투 한글 인코딩 및 innodb 설정도 나와있음.