반응형
  1. 검색 조건 지정

데이터베이스의 테이블에는 컬럼이 많이 있습니다. 

한번에 화면에 표시하여 확인할 수 있는 데이터의 양은 한정되어 있습니다. 

컬럼이나 레코드를 선택해서 데이터를 읽어오는 검색이 빈번하게 일어 납니다.

이번에는 컬럼이나 열을 선택해서 테이블의 데이터를 조회하는 방법에 대해 알아보겠습니다.


    1. SELECT 구에서 컬럼 지정

여기서는 데이터베이스의 테이블에서 자신이 원하는 컬럼들을 한정하여 검색하는 방법에 대해 알아보겠습니다.


결과로 표시하고 싶은 컬럼을 지정할 수 있습니다.


“SELECT 컬럼1, 컬럼2, 컬럼3, … FROM  테이블 명;


이전에 제가 올렸던 글에서 보면 샘플 데이터에서 컬럼의 정보들을 가져올때는 애스터리스크(*)를 사용하여 모든 컬럼을 표시하였습니다.

컬럼을 한정하기 위해서는 * 부분을 위의 쿼리처럼 “컬럼1, 컬럼2” 원하는 컬럼을 명시하고 구분은 콤마(,)를 이용하면 지정한 컬럼만 결과 값에 보여집니다.


스크린샷 2017-02-15 오전 11.09.34.png

[그림 3. 컬럼을 한정하여 데이터 조회]


만약 테이블에 존재하지 않는 컬럼이나 아무 컬럼도 지정하지 않을 경우 구문 에러가 발생합니다. 또한 컬럼을 지정할 때 지정 순서는 임의로 지정하거나 중복이 되어도 무관합니다. 지정한 컬럼의 순서에 따라 결과가 보여집니다.

    1. WHERE 구에서 레코드 지정

테이블의 컬럼은 많아야 몇십개지만 레코드는 컬럼에 비해 훨씬 많을 수 있습니다. 적으면 수백개 많으면 수천만건의 레코드가 있을 수 있습니다. 이렇게 많은 레코드에서 내가 필요한 데이터만 검색하기 위해서는 WHERE 구를 사용해야 합니다.


“SELECT 컬럼 FROM 테이블명 WHERE 조건식;


WHERE 구는 FROM 구의 뒤에 표기되며 WHERE 뒤에 검색 조건을 사용합니다.


위에서 보듯이 SQL에서는 구의 순서가 정해져 있어 바꿔서 적을 수가 없습니다. 만약에 위의 쿼리를 “select 컬럼 where 조건식 from 테이블명;” 순으로 적으면 에러가 발생합니다. 또한 WHERE 구처럼 생략 가능한 것도 있습니다.


WHERE 구에는 조건식이 들어갑니다.


스크린샷 2017-02-15 오전 11.29.55.png

[그림 4. 조건식을 적용하여 검색]


위 [그림 4]는 WHERE 구에 조건식을 적용하여 테이블의 데이터를 검색한 것입니다. 이렇게 조건식만 주어서 레코드를 검색할 수도 있지만 SELECT 구에 원하는 컬럼 지정을 동시에 사용할 수 있습니다.


스크린샷 2017-02-15 오전 11.29.07.png

[그림 5. 조건식과 컬럼 지정 동시 사용]


조건식을 간단히 살펴보면 id = 1 이것이 의미하는 것은 컬럼 명 id의 값이 1인 레코드를 검색하겠다는 것입니다. 조건식의 컬럼명은 상황에 맞는 것을 사용하면 되고 조건식이 참이 되는 결과 값만 반환을 하게 될것입니다.

조건식은 참 또는 거짓의 진리값을 반환하는 식으로 비교 연산자를 사용해 표현합니다.


만약 값이 서로 다른 경우를 검색하기 위해서는 어떻게 해야 할까요?

연산자로 ‘<>’을 사용하면 됩니다.


스크린샷 2017-02-15 오전 11.40.32.png

[그림 6. 연산자 <>을 사용하여 검색]


연산자 ‘<>’은 서로 다른 값인지를 비교하는 연산자입니다.

<> 연산자를 통해 ‘값이 서로 다른 경우’ 참이 되는 조건식으로 변경할 수 있습니다.


[그림 6]에서도 알 수 있듯이 복수의 레코드가 출력될 수도 있고 하나 또는 아무것도 반환되지 않을 수 있습니다.

    1. 문자열 상수

위에서 검색했던 조건식의 경우는 id가 수치형 데이터였습니다. 그러면 수치형 데이터가 아닌 문자열 데이터의 경우는 어떻게 검색을 해야할까요?


수치형 조건식의 경우는 “id = 1”과 같이 비교할 숫자를 그대로 조건식에 표기합니다. 하지만 문자열의 경우는 ‘김이빵'처럼 싱글 쿼트를 사용하여 둘러싸 표기해야 합니다. 날짜 또한 마찬가지입니다.


스크린샷 2017-02-15 오전 11.50.48.png

[그림 7. 싱글 쿼드없이 검색 시 에러]


스크린샷 2017-02-15 오전 11.53.17.png

[그림 8. 싱글 쿼트로 감싸서 검색한 결과]


한편 자료형에 맞게 표기한 상수값을 ‘리터럴(literal)’이라고 합니다.

문자열 리터럴은 싱글 쿼트로 둘러싸 표기합니다.

    1. NULL 검색

데이터 검색 시 NULL 값을 검색할 경우에는 조금 주의해야 합니다.

조건식을 birthday = NULL 과같은 식으로는 검색할 수 없습니다. 한마디로 = 연산자로는 검색이 안됩니다.


스크린샷 2017-02-15 오전 11.57.44.png

[그림 9. = 연산자를 사용하여 NULL 검색 결과]


NULL 값을 검색할 때는 = 연산자가 아닌 “IS NULL”을 사용하면 됩니다.


스크린샷 2017-02-15 오전 11.58.21.png

[그림 10. IS NULL을 사용하여 NULL 검색 결과]


반대로 NULL 값이 아닌 값을 검색하고 싶다면 “IS NOT NULL”을 사용하면 됩니다.


스크린샷 2017-02-15 오전 11.58.42.png

[그림 11. IS NOT NULL을 사용하여 검색한 결과]


    1. 비교 연산자

지금까지 =, <>, IS NULL, IS NOT NULL을 사용해서 검색하는 방법을 알아봤습니다. 

이것들과 같이 대표적으로 많이 사용하는 연산자를 알아보겠습니다.


연산자

설명

=

좌변 우변의 값이 같을 경우 참

<>

좌변과 우변이 같지 않을 경우 참

>

좌변의 값이 우변의 값보다 클 경우 참.

같거나 작을 경우 거짓

<

좌변의 값이 우변의 값보다 작을 경우 참

같거나 클 경우 거짓

>=

좌변의 값이 우변의 값보다 크거나 같을 경우 참

작을 경우 거짓

<=

좌변의 값이 우변의 값보다 작거나 같을 경우 참

클 경우 거짓

[표 6. 연산자 정의]


위 연산자들을 정의할 때 <=, >=, <> 사이에 스페이스를 넣으면 안됩니다. 

스페이스를 넣을 경우 별도의 연산자라고 판단하여 에러가 발생합니다.

반응형
반응형
  1. 테이블 구조 참조


여기서부터는 지금까지 열이라고 했던것을 컬럼이라고하겠습니다.

자꾸 열로 쓰다보니 글을 정리하면서도 헷갈려서 지금부터는 컬럼으로 하겠습니다.


SELECT 명령으로 테이블의 데이터를 읽어봤습니다. 테이블은 여러개의 컬럼으로 구성 됩니다. 뒤에서 설명하겠지만 SELECT 쿼리는 조건을 지정하여 특정 컬럼의 값을 불러올 수 있습니다. 그래서 테이블에 어떤 컬럼들이 있는지 참조할 수 있다면 SELECT 쿼리를 작성하기 수월해 집니다. 그럼 테이블의 구조는 어떻게 참조하는지 알아보겠습니다.

    1. DESC 명령

DESC 쿼리를 사용하면 테이블에 어떤 컬럼이 정의되어 있는지 확인할 수 있습니다.


스크린샷 2017-02-14 오후 3.10.02.png

[그림 2. DESC 쿼리 실행 화면]


DESC쿼리를 실행했을 때 위 [그림 2]와 같은 결과를 볼 수 있습니다. 실행 결과에 대해 아래 표에서 간단히 설명해 보겠습니다.


Field

컬럼의 이름

Type

컬럼의 자료형

Null

Null 값을 허용할 것인지 아닌지를 나타내는 제약사항

YES : Null 허용

NO :  Null 허용 안됨

Key

해당 컬럼이 key로 지정되어 있는지 표시

Default

컬럼의 기본값.

데이터 입력시 생략되거나 null이 들어올 경우 들어가는 기본값

[표 4. DESC 실행 결과 항목 설명]

    1. 자료형

DESC 쿼리로 봤듯이 컬럼들은 각각 자료형이 정해져 있습니다. 여기서 몇몇 중요한 자료형에 대해 표로 설명해 보겠습니다. 아래 표의 설명한 자료형 외에도 많은 자료형이 있습니다.


자료형

설명

INTEGER

수치형의 하나로 정수값을 저장할 수 있는 자료형.

소수점은 포함할 수 없다.

CHAR

문자열을 저장할 수 있는 자료형

문자열의 최대길이를 지정해야 한다.

언제나 고정된 길이로 데이터가 저장되고 설정한 최대 길이보다 긴 문자열은 저장할 수 없다.

‘고정 길이 문자열' 자료형.

VARCHAR

문자열을 저장할 수 있는 자료형

최대 길이를 지정하는 점은 CHAR와 같다.

하지만 데이터 크기에 맞춰 저장공간의 크기도 변경된다.

‘가변 길이 문자열' 자료형

DATE

날짜값을 저장할 수 있는 자료형

날짜값이란 연월일의 데이터를 저장할 수 있는 형

ex) 2017년 2월 14일

TIME

시간을 저장할 수 있는 자료형

시분초의 데이터를 저장할 수 있는 형

ex) 12시 30분 20초

[표 5. 자료형]

반응형
반응형

이번에는 Select 명령을 이용한 데이터 검색에 대해 설명해 보겠습니다.

이제부터 모든것은 Mysql을 기준으로 설명하겠습니다.


  1. Select 명령

SQL에서는 아래와 같이 기본적인 구조의 Select 명령어를 사용할 수 있습니다.


“SELECT * FROM 테이블명;"


이 구조를 가지고 계속 설명을 하겠습니다.

위 명령문을 가지고 mysql에서 실행시  테이블명에 해당하는 테이블에서 데이터를 검색하여 결과를 보여줍니다.

스크린샷 2017-02-14 오후 1.44.47.png

[그림 1. 명령어 실행 화면]


명령어들은 우리가 흔히 ‘질의' 또는 ‘쿼리'라고 부릅니다. 앞으로는 쿼리라는 명칭으로 통일하겠습니다. 그러면 위 그림에서 실행한 쿼리를 한번 살펴 보겠습니다.



예약어

테이블명


SELECT

*

FROM

exam01

;

쿼리의 종류

모든 컬럼

~테이블로부터

테이블 명

쿼리의 마지막

[표 1. select 쿼리 구조]


  • SELECT는 SQL 명령 중 하나로 SELECT 쿼리를 실행하겠다는 의미입니다.

  • 애스터리스크(*) 는 테이블의 모든 컬럼을 의미하는 메타 문자입니다.

  • FROM은 처리 대상 테이블을 지정하는 키워드입니다.

  • 조회할 테이블 명을 입력합니다.

  • 세미콜론 (;) 중요합니다. 쿼리의 마지막에 꼭 들어가야하며 세미콜론이 없이 쿼리를 실행할 경우 쿼리 작성 중으로 인식하여 실행이 되지 않거나 다른 쿼리와 구분이 되지 않아 에러가 발생할 수 있습니다.


SELECT 와 FROM은 데이터베이스의 예약어입니다.

또한 데이터베이스 객체는 이름을 붙여서 관리를 합니다. 예를 들어보면 [그림 1]에서 보는 것처럼 exam01이라는 테이블이 데이터베이스에 존재합니다. 여기서 동일한 이름의 테이블을 생성하면 ‘이미 테이블이 정의되어 있다.’는 에러가 발생합니다.

통상적으로 데이터베이스 객체명에는 예약어나 동일한 이름을 사용할 수 없습니다.


SQL에서는 예약어와 데이터베이스 객체명을 대소문자를 구별하지 않습니다. 예를 들면 아래의 표와 같은데 모두 동일하게 결과를 보여주는 쿼리입니다.


select * from exam01;

소문자로만 작성

Select * From Exam01;

대소문자 혼용

SELECT * FROM EXAM01;

대문자로만 작성

[표 2. 쿼리의 대소문자 구별]


하지만 SQL 명령과 달리 많은 데이터베이스 제품들이 대소문자를 구별합니다.

지금 실습하기로한 Mysql 에서도 제가 지금 확인해보니 소문자로만 작성 했을 때 잘 작동하지만

테이블 명을 대문자나 대소문자를 혼용했을 경우 에러가 발생했습니다. 예약어는 대소문자 관계 없이 잘 작동했습니다. 실습에 사용한 버전은 Mysql 5.7입니다.


지금까지 쿼리의 구조와 사용에 대한 설명을 했습니다. 다음으로 실행한 결과 화면에 대한 이야기를 해보겠습니다.


첨부했던 이미지가 이제는 안보인것 같으니 아래 표로 결과를 한번 그려보겠습니다.


열(컬럼/필드)


id

name

birthday

address

컬럼명

1

김일빵

1999-03-01

서울시 구로구

행(레코드)

2

김이빵

NULL

서울시 금천구

3

김삼빵

NULL

서울시 마포구

[표 3. 쿼리의 실행 결과]


SELECT 쿼리 실행 시 위의 [표 3]과 같이 테이블의 조회 결과를 표형식의 데이터로 출력합니다. 요약하면 테이블은 행과 열로 구성된 표 형식의 데이터라는 것입니다.

여기서 설명할 것은 열은 하나의 자료형만 가질 수 있고 데이터는 자료형으로 분류할 수 있다는 것입니다. 또한 데이터에서 NULL로 표시된 부분이 있습니다. NULL은 데이터가 들어있지 않는 것을 의미하는 특별한 값입니다.

반응형
반응형
  1. 데이터베이스란?

데이터 : 컴퓨터 안에 기록되어 있는 숫자

데이터베이스 : 데이터의 집합


넓은 의미에서 컴퓨터 안에 기록되는 모든 것이라고 생각할 수 있고 일반적으로 통용되는 데이터베이스의 개념은 특정 데이터를 확인하고 싶을 때 간단하게 찾아낼 수 있도록 정리된 형태를 가리킵니다.


데이터베이스 내의 데이터는 영구적으로 보존되어야 합니다. 주기억장치에만 데이터를 저장한다면 저장하는 순간 데이터는 날아갑니다. 그러면 영구적이라고 할 수 없습니다. 그래서 데이터베이스의 데이터는 하드디스크와 같은 비휘발성 저장장치에 저장합니다.


 데이터베이스는 데이터센터에 있을 수 있지만 우리의 주변에도 밀접하게 있습니다. 웹서버를 통해서 데이터베이스에 접근할 수 있고, 우리가 사용하는 휴대전화에도 데이터베이스가 사용되고 있습니다. 이처럼 데이터베이스는 다양한 시스템에서 사용되며 일상생활과도 밀접히 관련되어 있습니다.


  1. DBMS가 필요한 이유

DB : Database의 약자

DBMS : 데이터베이스 관리 시스템. DB를 효율적으로 관리하는 소프트웨어를 말한다.


DBMS의 필요 이유는 아래와 같습니다.


  • 생산성

    • 시스템 개발 과정에서의 생산성 향상을 도모할 수 있습니다.

    • 데이터 검색, 추가, 삭제, 갱신과 같은 처리를 기본 기능으로 제공합니다.

  • 기능성

    • 데이터베이스를 다루는 기능을 많이 제공합니다.

    • 복수 유저의 요청에 대응하거나, 대용량의 데이터를 저장하고 고속으으로 검색하는 기능을 제공합니다.

    • 데이터베이스 관리 기능을 사용자가 확장할 수 있어서 유연하게 시스템을 개발할 수 있습니다.

  • 신뢰성

    • 대규모 데이터베이스는 많은 요청에 대응할 수 있도록 하드웨어를 여러 대로 구성하여 신뢰성을 높이는 동시에 성능향상을 도모합니다.

    • DBMS는 컴퓨터를 여러대를 두고, 소프트웨어를 통해 확장성(Scalability)과 부하분산(Load Balancing)을 구현합니다. (클러스터 구성 또는 스케일 아웃 이라고 부른다.)


  1. SQL

DBMS를 이용하면 간접적으로 데이터베이스를 참조하거나 데이터를 추가, 삭제, 갱신을 할 수 있다. 이러한 행위를 위해서는 사용자와 DBMS간에 대화를 해야하는데 이때 이용하는 것이 SQL이다. SQL은 관계형 데이터베이스 관리 시스템(RDBMS)을 조작할 때 사용합니다.

  1. SQL이란?

SQL은 IBM이 개발한 SEQUEL이라는 관계형 데이터베이스 조작용 언어를 기반으로 만들어 졌습니다. ISO 등에 표준화가 진행되어 C언어나 자바와 같이 표준 언어입니다.

  1. SQL 명령의 종류

    • DML(Data Manipulation Language)

      • SQL의 가장 기본이 되는 명령어

      • 추가, 삭제, 갱신 등 데이터를 조작할 때 사용

    • DDL(Data Definition Language)

      • 데이터를 정의하는 명령어

      • 데이터베이스는 ‘데이터베이스 객체’라는 데이터 그릇을 이용하여 데이터를 관리하는데 이러한 객체를 만들거나 삭제하는 명령어

    • DCL(Data Control Language)

      • 트랜잭션을 제어하는 명령과 데이터 접근권한을 제어하는 명령

  2. SQL 방언과 표준화

RDBMS는 처음부터 SQL 명령어를 이용하여 데이터베이스를 조작하도록 설계 되었습니다. 하지만 데이터베이스 종류가 다양해지고 기능을 확장하면서 특정 데이터베이스 제품에만 사용되는 고유방언이 생겨났습니다.

예를 들어 LEFT JOIN의 경우 Oracle에서는 (+)를 이용하여 지정하는데 SQL Server에서는 *= 연산자를 이용합니다.

이와 같이 방언을 사용할 경우 호환이 되지 않는 경우가 생기므로 방언대신에 표준 SQL을 사용하는 것이 좋습니다. ISO나 ANSI가 결정한 ‘SQL-92’, ‘SQL-99’, ‘SQL-2003’ 등이 표준 SQL입니다.

  1. 데이터베이스의 종류

    1. 저장 방법에 따른 분류

      • 계층형 데이터베이스

        • 역사가 오래된 데이터베이스

        • 폴더와 파일 등의 계층 구조로 데이터를 저장하는 방식

        • 하드디스크나 DVD 파일시스템을 계층형 데이터베이스라고 볼수 있다.

        • 현재는 DBMS로 사용되지 않음

      • 관계형 데이터베이스

        • 관계 대수(relational algebra)라는 것에 착안하여 고안한 데이터베이스

        • 행과 열을 가지는 표 형식 2차원 데이터를 저장하는 형태의 데이터베이스

        • 2차원 표들을 저장해 놓고 각각의 표에 이름을 붙여서 관리

      • 객체지향 데이터베이스

        • 가능하면 객체 그대로를 데이터베이스의 데이터로 저장하는 것

      • XML 데이터베이스

        • XML 형식으로 기록된 데이터를 저장하는 데이터베이스

        • SQL 명령을 사용할 수 없다.

        • XQuery라는 전용 명령어를 사용

      • 키-밸류 스토어(KVS)

        • 키와 그에 대응하는 값이라는 단순한 형태의 데이터를 저장하는 데이터 베이스

        • NoSQL(Not Only SQL)이라는 슬로건으로부터 생겨난 데이터베이스로, 열지향 데이터 베이스라고고 불림

    2. 데이터베이스 제품(RDBMS)

      • Oracle

        • 오라클에서 개발한 제품

        • 많은 시스템에서 채택해 사용 중

      • DB2

        • IBM이 개발한 제품

        • 발표된 이래 한동안은 IBM 컴퓨터에서만 구동했다.

        • 향후 구동가능한 OS를 확장하였으나 오라클에 밀려서 시장 점유율을 확대 할 수 없었다.

      • SQL Server

        • 마이크로소프트가 개발한 제품

        • 윈도우 플랫폼에서만 동작

      • PostgreSQL

        • 오픈소스 커뮤니티가 개발한 제품

        • 기반이 되는 RDBMS는 캘리포니아 대학교 버클리 캠퍼스에서 탄생

        • 실험적인 기능, 독특한 구조

      • MySQL

        • 오픈소스 커뮤니티가 개발한 제품

        • 최초에 경량 데이터베이스라는 점을 강조하다 보니 필요한 최소한의 기능만을 갖춤

        • 향후 기능이 확장되면서 다른 RDBMS와 비교해도 부족하지 않다.

      • SQLite

        • 오픈소스 커뮤니티가 개발한 제품

        • 임베디드 시스템에서 자주 쓰이는 작은 RDBMS


반응형
반응형

쌀쌀한 가을 날씨에 남자라면 드립 커피지!

코스트코에서 칼리타 드리퍼 102 세트를 업어 왔다.



전체적으로 한 컷! 

500N 서버 손잡이의 빨간 색도 포인트로 참 좋은거 같다.


처음 구입을 하게 되면 이런 박스에 들어 있다. 생각보다 크지 않아~




그리고 구성품은 102 도자기 드리퍼, 500N 서버, 102 필터, 커피 계량 스푼, 드립퍼 받침대다.



흰색도 있었지만 남자라면 블랙에 레드포인트~!!


아직 개봉만 하고 드립을 하진 않았지만 지금 내려 놓은 커피가 있기에...ㅠ


다먹고 천천히 드립의 매력에 빠져봐야지..ㅎㅎ


쌀쌀한 가을 저녁 남자라면! 따뜻한 드립커피 한잔 어떨까..


반응형
반응형

오랜만에 레드마인 설치를 하다보니 이것저것 헷갈리고 다른 사람들도 도움이 될 것이라 생각되어 블로그에 정리를 한다.

일단 보통 레드마인 설치 시 root 계정으로 많이 작업을 하는데 이번에 레드마인 설치 페이지를 참고해보니 별도 계정을 만들어서 설치를 진행한.

01. 설치 항목

1. Redmine 3.1.1

2. MariaDB 5.5

3. Apache2, Passenger

4. Ubuntu 14.04


02. 기본 패키지 설치

$ sudo apt-get update && sudo apt-get upgrade -y

$ sudo apt-get install apache2 curl bison libbison-dev zlib1g-dev libssl-dev sqlite3 libsqlite3-dev autoconf automake build-essential libtool libreadline6-dev libyaml-dev libxml2-dev libcurl4-openssl-dev libssl-dev libgpg-error-dev autotools-dev imagemagick libmagickcore-dev libmagickwand-dev


03. Ruby 설치

$ sudo add-apt-repository ppa:brightbox/ruby-ng 

$ sudo apt-get update

$ sudo apt-get install ruby2.1 ruby-switch ruby2.1-dev libruby2.1

$ sudo ruby-switch --set ruby2.1


04. Redmine 계정 & 그룹 생성

$ sudo adduser --system --shell /bin/bash --gecos 'Redmine Administrator' --group --disabled-password --home /srv/redmine redmine

$ sudo visudo

# temp - *REMOVE* after installation
redmine    ALL=(ALL)      NOPASSWD:ALL  

위의 REMOVE 부분은 레드마인 설치 이후 삭제 또는 주석 처리 부분이니 잘 기억.


*주의 : 여기서 부터는 root 계정과 redmine계정을 번갈아 가며 사용하므로 주의*

05. rvm 설치

$ sudo su - redmine
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
$ curl -sSL https://get.rvm.io | bash -s stable
$ exit 

$ sudo su - redmine
$ rvm install 2.1.4
$ exit 


06. Redmine 다운로드

$ sudo su - redmine 

$ wget http://www.redmine.org/releases/redmine-3.1.1.tar.gz
$ tar zxvf  redmine-3.1.1.tar.gz

$ ln -s /srv/redmine/redmine-3.1.1 redmine

$ exit


07. MariaDB 설치

sudo apt-get install software-properties-common

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db

sudo add-apt-repository 'deb http://ftp.kaist.ac.kr/mariadb/repo/5.5/ubuntu trusty main'

sudo apt-get update

sudo apt-get install mariadb-server

mysql -u root -p

MariaDB [(none)] > CREATE DATABASE redmine CHARACTER SET utf8;

MariaDB [(none)] > CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';

MariaDB [(none)] > GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

MariaDB [(none)] > exit;

$ sudo su - redmine 

$ cp redmine/config/database.yml.example redmine/config/database.yml

$ nano redmine/config/database.yml

...

production:

    adapter: mysql2

    database: redmine

    host: localhost

    username: redmine

    password: my_password

    encoding: utf8 

    schema_search_path: public

...


$ exit


08. Bundler & Install

$ sudo su - redmine

$ cd ./redmine

$ gem install bundler
$ bundle install --without development test mysql sqlite

$ rake generate_secret_token
$ RAILS_ENV=production rake db:migrate
$ RAILS_ENV=production rake redmine:load_default_data

→ ko (enter)

$ exit

** 주의 여기서 error 나와서 mysql2 설치가 안되고 아래와 같은메세지가 나올수 있다.

An error occurred while installing mysql2 (0.3.15), and Bundler cannot continue.

Make sure that `gem install mysql2 -v '0.3.15'` succeeds before bundling.

이때 해결한 방법은 

$ sudo apt-get install libmysql-ruby libmysqlclient-dev

또는 

$ sudo apt-get install libmysqlclient-dev

설치  

$ bundle install --without development test mysql sqlite 포함 이후 스크립트들을 다시 실행.


09. Redmine 계정 정리

$ sudo visudo

- 아래 부분 제거

...

# temp - *REMOVE* after installation

redmine    ALL=(ALL)      NOPASSWD:ALL

...


10. Passenger 설치

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7

$ sudo apt-get update 

$ sudo apt-get install apt-transport-https ca-certificates 

$ sudo nano /etc/apt/sources.list.d/passenger.list

deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main

$ sudo chown root:root /etc/apt/sources.list.d/passenger.list
$ sudo chmod +r /etc/apt/sources.list.d/passenger.list 

$ sudo apt-get update$ sudo apt-get install libapache2-mod-passenger

$ sudo nano /etc/apache2/mods-available/passenger.conf

... 

PassengerUserSwitching on
PassengerUser redmine
PassengerGroup redmine

...

11. Apache 설정

$ sudo nano /etc/apache2/sites-available/000-default.conf

... 

<Directory /var/www/html/redmine>
    RailsBaseURI /redmine
    PassengerResolveSymlinksInDocumentRoot on
</Directory>

...

$ sudo a2enmod passenger
$ sudo ln -s /srv/redmine/redmine/public /var/www/html/redmine
$ sudo service apache2 restart

여기까지 진행하고 웹브라우저로 localhost/redmine에 접속을 하면 Redmine을 볼 수 있다.

초기 관리자는 admin/admin


반응형

+ Recent posts