[MySql설치]

wget http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

sudo yum localinstall http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

sudo yum install mysql-community-server

 sudo service mysqld start


root 패스워드 변경

/usr/bin/mysqladmin -u root password 'maxgauge'
또는 update user set password=password('new-password') where user='root';
mysql -uroot -p


원격접속 허용

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by 'maxgauge';

FLUSH PRIVILEGES;


확인


Mysql –h (접속IP) –p(포트번호) –u root –p

'Database' 카테고리의 다른 글

MySQL 옵션 변경  (0) 2016.08.24
MySQL 설치 (우분투)  (0) 2016.08.17
MySQL 설치(CentOS)  (0) 2016.08.17

vi의 종료

  • 먼저 <ESC>키로 명령모드로 전환 한후 종료 명령
    <ZZ>버퍼를 파일에 기록하고 종료
    :wq버퍼를 파일에 기록하고 종료
    :q!버퍼의 내용을 파일에 기록하지 않고 무조건 종료
    :q버퍼의 내용과 파일의 내용이 일치하는 경우 종료

 

텍스트 편집 명령

a커서 뒤에 삽입
A줄의 마지막에 삽입
i커서 앞에 삽입
I줄의 시작에 삽입
o현재 커서의 다음에 빈 라인을 생성
O현재 커서의 앞에 빈 라인을 생성

 

파일에 관한 명령

:r [파일명]파일의 내용을 읽어와서 현재의 커서 아래에 삽입
:e! [파일명]편집중인 파일을 무시하고 새로운 파일을 작성, 편집
:e [파일명]새로운 파일을 작성, 편집
:n파일 목록의 다음 파일로 이동
:w현재 편집중인 파일을 저장
:w [파일명]현재 편집중인 파일을 새로운 파일명으로 저장
w! [파일명]현재 편집중인 파일을 현존하는 파일명으로 저장

커서의 이동 명령

 

1) 문자 단위 이동

h한 문자 왼쪽으로
j한 문자 아래로
k한 문자 위로
l한문자 오른쪽으로
→←↑↓화살표 발향으로 이동
[BackSpace]한 문자 왼쪽으로
[Enter]다음 라인의 시작으로

2) 라인에서의 이동

^ 또는 0라인의 시작위치로
$라인의 끝 위치로

 

3) 페이지 단위 이동

[Ctrl]-f한 페이지 위로
[Ctrl]-b한 페이지 아래로
[Ctrl]-u반 페이지 위로
[Ctrl]-d반 페이지 아래로

4) 단어 단위 이동

w한 단어 오른쪽으로 이동, 새 단어의 시작 문자에 위치,구두점을 한 단어로 인식
W한 단어 오른쪽으로 이동, 새 단어의 시작 문자에 위치
b한 단어 왼쪽으로 이동, 새 단어의 시작 문자에 위치,구두점을 한 단어로 인식
B한 단어 왼쪽으로 이동, 새 단어의 시작 문자에 위치
e한 단어 오른쪽으로 이동, 새 단어의 마지막 문자에 위치,구두점을 한 단어로 인식
E한 단어 오른쪽으로 이동, 새 단어의 마지막 문자에 위치

5) 파일에서의 이동

G파일의 끝으로 이동
nG 또는 :nn번째 라인으로 이동

6) 화면에서의 이동

H화면의 첫줄로 이동
L화면의 끝으로 이동
M화면의 중간으로 이동

 

삭제 명령

 

1) 문자 단위 삭제

x커서가 위치한 곳의 한 문자 삭제
nx개의 문자 삭제
X커서가 위치한 곳 앞의 한 문자 삭제
nX개의 문자 삭제

2) 라인 단위 삭제

dd한 라인 삭제
nddn개의 라인 삭제
d0 또는 d^커서 위치부터 라인의 처음 까지 삭제
d$, D커서 위치부터 라인의 끝 까지 삭제

3) 단어 단위 삭제

dw커서 위치에서 오른쪽 한 단어 삭제
db커서 위치에서 왼쪽 한 단어 삭제

4) d+이동명령

dh,dj,dk,dl,d0,d$

 

5) 파일에서의 삭제

dG커서 위치부터 파일의 끝 까지 삭제
dnG커서 위치부터 n번째 라인까지 삭제
  

복사 명령

 

1) 라인 단위 복사

yy한 라인 복사
nyyn개의 라인 복사
y0 또는 y^커서 위치부터 라인의 처음 까지 복사
y$, Y커서 위치부터 라인의 끝 까지 복사

2) 단어 단위 복사

yw커서 위치에서 오른쪽 한 단어 복사
yb커서 위치에서 왼쪽 한 단어 복사

3) 붙여 넣기

p커서 위치에서 오른쪽에 붙여 넣기
P커서 위치위 윗 줄에 붙여 넣기

 

수정 명령

 

(1) 문자 단위 수정

r한 문자 수정후 명령 모드
nrn개의 문자를 수정후 명령 모드
R한 문자 수정후 편집 모드
nRn개의 문자를 수정후 편집 모드

(2) 한 문자를 여러 문자로 수정

s커서 위치에서 한문자 삭제 후 편집 모드

(3) 여러 문자를 수정

  • 명령 수행 후 [ESC] 키로 마감
cw현재 커서위치에서 오른쪽 단어 수정
cb현재 커서위치에서 왼쪽 단어 수정
c0 또는 c^커서가 위치한 라인의 시작에서 커서 위치까지 수정
c$또는 C커서의 위치에서 라인의 끝까지 수정
cc한 줄을 모두 수정


라인의 결합

J커서의 다음 줄을 커서가 있는 줄에 결합

 

명령 실행 취소 명령

u직전의 한 명령 실행 취소(undo), 일부 시스템에서는 여러 명령 취소 가능
U현재 라인에서의 명령들의 실행 취소
[Ctrl]-r취소명령의 취소(redo), 일부 시스템에서만 지원

검색

/[패턴]앞으로 이동하면서 [패턴]을 검색
?[패턴]뒤로 이동하면서 [패턴]을 검색
n반복 해서 이전에 지정된 [패턴]을 검색(next search)

 

기타 명령

  • :!command - 쉘로 나가지 않고 쉘명령을 수행
  • :sh - 쉘로 잠시 나감, 복귀하려면 exit
  • . - 직전 명령어 재수행
  • [CTRL]-g : 전체 줄수와 현재 커서가 위치한 줄 번호
  • ~ - 대소문자 변경

vi 편집기의 환경 설정

  • :set nu - 라인번호 표시 설정
  • :set nonu - 라인번호 표시 설정 해제


'IT이야기' 카테고리의 다른 글

Eclipse Intellij 단축키  (0) 2016.08.26
/lib/ld-linux.so.2: bad ELF interpreter 에러 발생시  (0) 2016.08.24
AWS에서 Docker 설치  (0) 2016.07.14
Docker이용해서 mysql설치  (0) 2016.07.14
Linux 초기화 파일 실행 순서  (0) 2016.07.14

확인[편집]

root@zetawiki:~# cat /etc/init.d/mysql
cat: /etc/init.d/mysql: No such file or directory
root@zetawiki:~# dpkg -l | grep mysql-server
root@zetawiki:~# aptitude show mysql-server | grep ^State
State: not installed

설치[편집]

root@zetawiki:~# apt-get install mysql-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18
  mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server-5.5
  mysql-server-core-5.5
Suggested packages:
  libclone-perl libmldbm-perl libnet-daemon-perl libplrpc-perl
  libsql-statement-perl libipc-sharedcache-perl tinyca mailx
The following NEW packages will be installed:
  libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18
  mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server
  mysql-server-5.5 mysql-server-core-5.5
0 upgraded, 11 newly installed, 0 to remove and 31 not upgraded.
Need to get 9,302 kB of archives.
After this operation, 96.6 MB of additional disk space will be used.
Do you want to continue? [Y/n]
... (생략)
New password for the MySQL "root" user:
→ MySQL의 root 계정 패스워드 지정
Repeat password for the MySQL "root" user:
→ MySQL의 root 계정 패스워드 재입력
... (생략)
160315 17:44:19 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
160315 17:44:19 [Note] /usr/sbin/mysqld (mysqld 5.5.47-0ubuntu0.14.04.1) starting as process 4054 ...
mysql start/running, process 4217
Setting up libhtml-template-perl (2.95-1) ...
Processing triggers for ureadahead (0.100.0-16) ...
Setting up mysql-server (5.5.47-0ubuntu0.14.04.1) ...
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...

확인[편집]

root@zetawiki:~# /etc/init.d/mysql status
 * /usr/bin/mysqladmin  Ver 8.42 Distrib 5.5.47, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version		5.5.47-0ubuntu0.14.04.1
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/var/run/mysqld/mysqld.sock
Uptime:			1 min 55 sec

Threads: 1  Questions: 584  Slow queries: 0  Opens: 189  Flush tables: 1  Open tables: 41  Queries per second avg: 5.078
root@zetawiki:~# netstat -ntlp | grep mysqld
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      4217/mysqld
root@zetawiki:~# mysql -uroot -pP@ssw0rd -e'show databases'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+


'Database' 카테고리의 다른 글

MySQL 옵션 변경  (0) 2016.08.24
[AWS] MySQL 설치  (0) 2016.08.22
MySQL 설치(CentOS)  (0) 2016.08.17
rpm -qa | grep ^mysql-server

yum install mysql-server

service mysqld start


root 패스워드 변경

/usr/bin/mysqladmin -u root password 'maxgauge'

또는 update user set password=password('new-password') where user='root';

mysql -uroot -p


원격접속 허용

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by 'maxgauge';

FLUSH PRIVILEGES;


부팅시 자동시작 설정

chkconfig --list mysqld
chkconfig mysqld on
chkconfig --list mysqld


'Database' 카테고리의 다른 글

MySQL 옵션 변경  (0) 2016.08.24
[AWS] MySQL 설치  (0) 2016.08.22
MySQL 설치 (우분투)  (0) 2016.08.17

1. 하둡의 설정파일 위치( Configuration file path of Hadoop )
$HADOOP_HOME/etc/hadoop

2. 핵심 설정 파일( Core configuration files )
– /etc/hosts
– core-site.xml
– hdfs-site.xml
– mapred-site.xml
– yarn-site.xml
– slaves

3. /etc/hosts

1
2
3
4
5
6
7
8
xxx.xxx.xxx.xxx namenode
xxx.xxx.xxx.xxx secondarynamenode
xxx.xxx.xxx.xxx datanode01
xxx.xxx.xxx.xxx datanode02
xxx.xxx.xxx.xxx datanode03
......
......
xxx.xxx.xxx.xxx datanode0N

4. core-site.xml

1
2
3
4
5
6
7
8
9
10
<configuration>
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenode:9000</value>
</property>
<property>
        <name>hadoop.tmp.dir</name>
        <value>/data/hadoop/tmp</value>
</property>
</configuration>

5. hdfs-site.xml
$HADOOP_HOME 변수를 치환해야 합니다.(You have to replace the $HADOOP_HOME value.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>
  <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
  </property>
  <property>
    <name>dfs.secondary.http.address</name>
    <value>secondarynamenode:50090</value>
  </property>
  <property>
    <name>dfs.hosts.exclude</name>
    <value>$HADOOP_HOME/etc/hadoop/exclude</value>
  </property>
  <property>
    <name>dfs.hosts</name>
    <value>$HADOOP_HOME/etc/hadoop/include</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/data/hadoop/dfs/name</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
  </property>
  <property>
    <name>dfs.namenode.checkpoint.dir</name>
    <value>/data/hadoop/dfs/namesecondary</value>
  </property>
  <property>
    <name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
    <value>true</value>
  </property>
</configuration>

6. mapred-site.xml
$HADOOP_HOME 변수를 치환해야 합니다.(You have to replace the $HADOOP_HOME value.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.jobtracker.hosts.exclude.filename</name>
    <value>$HADOOP_HOME/etc/hadoop/exclude</value>
  </property>
  <property>
    <name>mapreduce.jobtracker.hosts.filename</name>
    <value>$HADOOP_HOME/etc/hadoop/include</value>
  </property>
</configuration>

7. yarn-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>namenode</value>
  </property>
</configuration>


Installing Docker

Docker is available on many different operating systems, including most modern Linux distributions, like Ubuntu, and even Mac OSX and Windows. For more information about how to install Docker on your particular operating system, go to the Docker installation guide.

You don't even need a local development system to use Docker. If you are using Amazon EC2 already, you can launch an Amazon Linux instance and install Docker to get started.

To install Docker on an Amazon Linux instance

  1. Launch an instance with the Amazon Linux AMI. For more information, see Launching an Instance in the Amazon EC2 User Guide for Linux Instances.

  2. Connect to your instance. For more information, see Connect to Your Linux Instance in theAmazon EC2 User Guide for Linux Instances.

  3. Update the installed packages and package cache on your instance.

    [ec2-user ~]$ sudo yum update -y
  4. Install Docker.

    [ec2-user ~]$ sudo yum install -y docker
  5. Start the Docker service.

    [ec2-user ~]$ sudo service docker start
    Starting cgconfig service:                                 [  OK  ]
    Starting docker:	                                   [  OK  ]
  6. Add the ec2-user to the docker group so you can execute Docker commands without using sudo.

    [ec2-user ~]$ sudo usermod -a -G docker ec2-user
  7. Log out and log back in again to pick up the new docker group permissions.

  8. Verify that the ec2-user can run Docker commands without sudo.

    [ec2-user ~]$ docker info
    Containers: 2
    Images: 24
    Storage Driver: devicemapper
     Pool Name: docker-202:1-263460-pool
     Pool Blocksize: 65.54 kB
     Data file: /var/lib/docker/devicemapper/devicemapper/data
     Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
     Data Space Used: 702.3 MB
     Data Space Total: 107.4 GB
     Metadata Space Used: 1.864 MB
     Metadata Space Total: 2.147 GB
     Library Version: 1.02.89-RHEL6 (2014-09-01)
    Execution Driver: native-0.2
    Kernel Version: 3.14.27-25.47.amzn1.x86_64
    Operating System: Amazon Linux AMI 2014.09


'IT이야기' 카테고리의 다른 글

/lib/ld-linux.so.2: bad ELF interpreter 에러 발생시  (0) 2016.08.24
VI 에디터 명령어  (0) 2016.08.17
Docker이용해서 mysql설치  (0) 2016.07.14
Linux 초기화 파일 실행 순서  (0) 2016.07.14
도커 설치 및 실행  (0) 2016.07.06

docker를 사용하면서 처음 사용 해서, mysql을 실행하는 것까지 정리를 해 봤습니다.

docker로 mysql 사용해 보기

먼저 관리자 모드에서 사용을 해야 한다.

sudo -i

docker 명령 실행을 관리자 모드에서 하기 싫다면, 가장 하단에 있는 Tips를 참고 해서 작업 하시면 됩니다.

Ubuntu에 Docker 설치하기

우선 전 우분투 환경에서 설치하고 사용하는 걸 기반으로 했습니다.
아래와 같이 입력해 주시면, 간단하게 실행이 됩니다.

wget -qO- https://get.docker.com/ | sh

Docker 이미지 검색

먼저 mysql을 검새해 봅니다.

docker search <검색어>

$ docker search mysql
docker search mysql
NAME                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                        MySQL is a widely used, open-source relati...   1219      [OK]
mysql/mysql-server           Optimized MySQL Server Docker images. Crea...   56                   [OK]
... 중략 ...
wenzizone/mysql              mysql                                           0                    [OK]

가장 상단에 공식 이미지가 있어서 여기서는 공식 이미지를 사용 했습니다.

테크명 알아 보기

이 글에서는 가장 마지막(latest)이미지를 사용 합니다.
하지만, 난 꼭 이번의 MySQL을 써야만 돌아가는 데이터를 가지고 있거나, 어플이 있다고 한다면, tag를 검색해서 해당 버전을 설치 하시면 됩니다.

$ wget -qO- https://registry.hub.docker.com/v1/repositories/mysql/tags | jq '.[].name'
"latest"
"5"
.... 중략 ...
"5.7.8-rc"
"5.7.9"

혹시 관리가 길어지거나 특정 버전을 고정해야 할 경우에는 tag의 특정 번호를 찍어서 사용하는 것도 생각해 보셔야 할 것 같네요.

Docker 이미지 받기

태그 중에서 가장 최근은 latest입니다.
하지만, 고정 버전을 원한다면, tag중에서 골라서 사용 하시면 됩니다.

docker pull <이미지이름>:

사용 하시면서 오랜 기간 사용해야 하거나, 패키지 관리자의 버전에 따른 영향을 덜 받고 싶다면, tag를 고정해서 받아서 사용해 주시면 됩니다.

docker pull mysql:latest

전 마지막 tag로 받습니다. :latest는 기본 값이라서 생략해도 괜찮습니다.

이미지 목록 출력

이미지가 잘 받았는지 출력해 봅니다.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
mysql               latest              04c9038fd2f2        7 days ago          359.8 MB

MySQL 환경변수 (-e)

MYSQL_ROOT_PASSWORD

이 변수는 필수이며, MySQL의 root 암호를 지정 합니다.

MYSQL_DATABASE

컨테이너의 이미지를 시작 하면서 지정한 데이터베이스를 생성합니다.

MYSQL_USER, MYSQL_PASSWORD

MySQL 사용자 아이디와 암호

MYSQL_ALLOW_EMPTY_PASSWORD

yes로 설정해 놓으면 root의 패스워드가 비어서 실행이 된다. 권장하진 않음.

환경 변수 설정 하기

MYSQL_USER="mysql_user"
MYSQL_DATABASE="sample_db"
MYSQL_CONTAINER_NAME="mysql"
MYSQL_ROOT_PASSWORD="MY_PASSWORD"
MYSQL_PASSWORD="MY_PASSWORD"

실행

docker \
  run \
  --detach \
  --env MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} \
  --env MYSQL_USER=${MYSQL_USER} \
  --env MYSQL_PASSWORD=${MYSQL_PASSWORD} \
  --env MYSQL_DATABASE=${MYSQL_DATABASE} \
  --name ${MYSQL_CONTAINER_NAME} \
  --publish 3306:3306 \
  mysql;

설정 변수

  • --name : 이미지의 이름
  • -e, --env=[] : 설정값
  • -d, --detach=false : 컨테이너를 백그라운드 실행, 이 옵션을 안 넣어 주면 실행상태에서 바로 꺼진 상태로 들어 가게 됨
  • -p, --publich=[] : 컨테이너의 포트를 호스트로 사용 합니다.

MySQL을 접속해 보면, 사용자에는 mysql_user가 추가 되고, sample_db라는 db가 추가된 상태로 이미지가 시작 됩니다.
접속 IP는 host pc의 IP를 사용 합니다.

데이터베이스 저장 위치를 host로 사용하기

데이터베이스를 띄우지만, 그냥 사용하게 되면, 컨테이너 이미지 안에 파일을 저장합니다.
호스트파일에 저장 할려면, --volume이라는 옵션을 사용해야 합니다.

사용중인 컨테이너 끄고 지우기

docker stop mysql:latest
docker rm mysql:latest

Volume을 지정해서 실행하기

docker \
  run \
  --detach \
  --volume /opt/mysql:/var/lib/mysql \
  --env MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} \
  --env MYSQL_USER=${MYSQL_USER} \
  --env MYSQL_PASSWORD=${MYSQL_PASSWORD} \
  --env MYSQL_DATABASE=${MYSQL_DATABASE} \
  --name ${MYSQL_CONTAINER_NAME} \
  --publish 3306:3306 \
  --name mysql-volume \
  mysql:latest;

설정 변수

  • -v, --volume=[] : 호스트의 파일을 컨테이너 위치로 연결 합니다.

/opt/mysql 경로에 mysql의 db가 생성 된 것을 확인 할 수 있습니다


컨테이너에서 mysql실행 확인

 docker exec -i -t mysql-volume bash

Prompt가 바뀐다. ( root@1d458d3c99b9:/# )

mysql 실행하여 로그인 한다

* mysql -u mysql_user -p sample_db


* 이미 생성된 도커 컨테이너 재 실행

docker ps -a

docker start "컨네이너ID"

docker exec -i -t mysql-volume bash




'IT이야기' 카테고리의 다른 글

/lib/ld-linux.so.2: bad ELF interpreter 에러 발생시  (0) 2016.08.24
VI 에디터 명령어  (0) 2016.08.17
AWS에서 Docker 설치  (0) 2016.07.14
Linux 초기화 파일 실행 순서  (0) 2016.07.14
도커 설치 및 실행  (0) 2016.07.06

Bash shell2 초기화 (스크립트)파일 실행순서

  • Bash manpage와 우분투 커뮤니티 위키의 환경변수2에 따르면 아래와 같으며, 나열한 것의 위에서부터 아래 순이다.

    /etc/profile 파일이 있는 경우 실행

    /etc/profile.d/*.sh 폴더 내 쉘스크립트 확장자(.sh)로 된 파일을, 파일명 알파뱃 순으로 실행

    ~/.bash_profile

    ~/.bashrc

    ~/.bash_login

    ~/.profile

    ~/.bash_logout 로그아웃시 실행


'IT이야기' 카테고리의 다른 글

/lib/ld-linux.so.2: bad ELF interpreter 에러 발생시  (0) 2016.08.24
VI 에디터 명령어  (0) 2016.08.17
AWS에서 Docker 설치  (0) 2016.07.14
Docker이용해서 mysql설치  (0) 2016.07.14
도커 설치 및 실행  (0) 2016.07.06

맥에서 도커를 실행하기 위해서는

docker-machine을 설치해야 한다.


도커를 사용하기에 앞서 다음 명령어를 수행해야 한다.


docker-machine create --driver virtualbox dev    -- 이미지 생성

docker-machine stop dev docker-machine start dev


docker-machine env dev        -- 환경 설정

eval $(docker-machine env)   -- 환경 적용


이후에 도커를 이용해서 컨테이너를 올릴 수 있다.


docker pull alexeiled/docker-oracle-xe-11g

'IT이야기' 카테고리의 다른 글

/lib/ld-linux.so.2: bad ELF interpreter 에러 발생시  (0) 2016.08.24
VI 에디터 명령어  (0) 2016.08.17
AWS에서 Docker 설치  (0) 2016.07.14
Docker이용해서 mysql설치  (0) 2016.07.14
Linux 초기화 파일 실행 순서  (0) 2016.07.14

1. App creation


python manage.py startapp blog


2. edit settings.py


    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog',
    )


3. edit model.py


blog/models.py 파일을 열어서 안에 모든 내용을 삭제한 후 아래 코드를 추가하세요. :

    from django.db import models
    from django.utils import timezone


    class Post(models.Model):
        author = models.ForeignKey('auth.User')
        title = models.CharField(max_length=200)
        text = models.TextField()
        created_date = models.DateTimeField(
                default=timezone.now)
        published_date = models.DateTimeField(
                blank=True, null=True)

        def publish(self):
            self.published_date = timezone.now()
            self.save()

        def __str__(self):
            return self.title


class Post(models.Model):는 모델을 정의하는 코드입니다. (모델은객체(object)`라고 했죠?).

  • class는 특별한 키워드로, 객체를 정의한다는 것을 알려줍니다.
  • Post는 모델의 이름입니다. (특수문자와 공백 제외한다면) 다른 이름을 붙일 수도 있습니다. 항상 클래스 이름의 첫 글자는 대문자로 써야 합니다.
  • models.Model은 Post가 장고 모델임을 의미합니다. 이 코드 때문에 장고는 Post가 데이터베이스에 저장되어야 된다고 알게 됩니다.

이제 속성을 정의하는 것에 대해서 이야기 해볼게요. : titletextcreated_datepublished_date,author에 대해서 말할 거에요. 속성을 정의하기 위해, 각 필드마다 어떤 종류의 데이터 타입을 가지는지를 정해야해요. 여기서 데이터 타입에는 텍스트, 숫자, 날짜, 유저 같은 다른 객체 참조 등이 있습니다.

  • models.CharField - 글자 수가 제한된 텍스트를 정의할 때 사용합니다. 글 제목같이 대부분의 짧은 문자열 정보를 저장할 때 사용합니다.
  • models.TextField - 글자 수에 제한이 없는 긴 텍스트를 위한 속성입니다. 블로그 콘텐츠를 담기 좋겠죠?
  • models.DateTimeField - 이것은 날짜와 시간을 의미합니다.
  • models.ForeignKey - 다른 모델이 대한 링크를 의미합니다.

시간 관계 상 모든 코드들을 하나하나 다 설명하지는 않을 거에요. 대신 모델의 필드와 정의하는 방법에 궁금하다면 아래 장고 공식 문서를 꼭 읽어보길 바랍니다. (https://docs.djangoproject.com/en/1.8/ref/models/fields/#field-types).

def publish(self):는 무슨 뜻일까요? 이 것이 바로 앞서 말했던 publish라는 메서드(method) 입니다.def는 이 것이 함수/메서드라는 뜻이고, publish는 메서드의 이름입니다. 원한다면 메서드 이름을 변경할 수도 있어요. 이름을 붙일 때는 공백 대신, 소문자와 언더스코어를 사용해야 합니다. 예를 들어, 평균 가격을 계산하는 메서드는calculate_average_price라고 부를 수 있겠네요.

메서드는 자주 무언가를 되돌려주죠. (return) 그 예로 __str__ 메서드를 봅시다. 이 시나리오대로라면,__str__를 호출하면 Post 모델의 제목 텍스트(string) 를 얻게 될 거에요


4. create table for Django model

이제 데이터베이스에 우리의 새 모델, Post 모델을 추가할 거에요. 먼저 우리는 장고 모델에 (우리가 방금 만든!) 몇 가지 변화가 생겼다는 걸 알게 해줘야 합니다. python manage.py makemigrations blog를 입력해 보세요. 아마도 화면에 이렇게 보이겠죠?

(myvenv) ~/djangogirls$ python manage.py makemigrations blog
Migrations for 'blog':
  0001_initial.py:
  - Create model Post

장고는 데이터베이스에 지금 반영할 수 있도록 마이그레이션 파일(migration file)이라는 것을 준비해 두었답니다. 이제python manage.py migrate blog 명령을 실행해, 실제 데이터베이스에 모델 추가를 반영하겠습니다. :

(myvenv) ~/djangogirls$ python manage.py migrate blog
Operations to perform:
  Apply all migrations: blog
Running migrations:
  Rendering model states... DONE
  Applying blog.0001_initial... OK

만세! 드디어 글 모델이 데이터베이스에 저장되었습니다.


5. edit blog/admin.py

 

이제 blog/admin.py 파일을 열어서 내용을 다음과 같이 바꾸세요. :

from django.contrib import admin
from .models import Post

admin.site.register(Post)

이제 Post 모델을 볼까요? 웹 서버를 실행하려면 콘솔창에서 python manage.py runserver를 실행하는걸 잊지마세요. 

. myenv/bin/activate

python manage.py runserver


브라우저를 열고 주소 창에 http://127.0.0.1:8000/admin/ 입력하면아래와 같은 로그인 페이지를 볼 수 있어요.

로그인 페이지


로그인을 하기 위해서는, 모든 권한을 가지는 슈퍼유저(superuser)를 생성해야해요. 커맨드라인으로 돌아가서 python manage.py createsuperuser을 입력하고 엔터를 누르세요. 메시지가 나타나면 사용자 이름 (소문자, 공백 없이), 이메일 주소 및 암호를 입력합니다. password 를 입력할 때 화면에 글자가 보이지 않는다고 해도 걱정하지 마세요. 원래 password 는 화면에 보이지 않습니다. 작성한 후에 enter를 누르세요. 실행화면은 아래와 같을 거에요. (슈퍼유저로 사용 될 username 과 email 주소는 본인 것이어야해요)

(myvenv) ~/djangogirls$ python manage.py createsuperuser
Username: admin
Email address: admin@admin.com
Password:
Password (again):
Superuser created successfully.

브라우저로 돌아와서 장고 관리자 페이지에서 슈퍼유저로 로그인한 후 대시보드를 확인하세요.

Django 관리자

게시글로 가서 이것 저것 시도해보세요. 5 - 6개 블로그 포스트를 올려보세요. 안에 내용은 걱정하지 마세요. 튜토리얼에 있는 텍스트를 그냥 복사-붙여넣기 할 수 있으니까요.

최소한 2, 3개의 글들에 게시 날짜가 있는지 확인하세요. (모두 볼 필요는 없어요) 이건 나중에 도움이 될 거에요.

Django 관리자

장고 관리자에 대해서 좀 더 알고 싶다면 장고 공식 문서를 참고하세요. :https://docs.djangoproject.com/en/1.8/ref/contrib/admin/

자, 여러분은 내 첫 번째 장고 모델을 만들었어요


+ Recent posts