보통 개발 단계에서는

Superuser 권한을 갖고 있는 계정으로 database를 사용하곤 한다. (나만 그런가?)

 

당연히 그 누구도 추천하지 않는, 바람직하지 않은 계정 사용법이다.

 

그러면 적절한 권한을 갖고 있는 개발용 계정을 생성해서 사용해야하고

그래서 지금은 계정 생성 및 삭제, 권한 부여 방법 등에 대해서 살펴볼 시간이다.

 

 

0. Environment

  - [PostgreSQL을 Docker로 설치하자](https://www.whatwant.com/entry/PostgreSQL-Docker)

 

 

1. psql

  - docker 환경에 특화된 내역이긴 하지만, 기록 차원에서 남긴다.

 

❯ docker exec -it postgres /bin/bash

root@d0b1fa1bb2b1:/# psql -U postgres

psql (14.2 (Debian 14.2-1.pgdg110+1))
Type "help" for help.

postgres=# 

 

 

2. 계정 및 권한 확인

  - `\du`

 

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

 

 

3. 계정 생성

  - `CREATE USER [username] WITH LOGIN PASSWORD '[password]';`

 

postgres=# CREATE USER whatwant WITH LOGIN PASSWORD 'xxxxxxxx';

CREATE ROLE


postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 whatwant  |                                                            | {}

 

 

  ▶ Attributes of ROLE

     - 기본값은 `NO-` 속성들이다.

 

SUPERUSER or NOSUPERUSER SUPERUSER 여부
CREATEDB or NOCREATEDB DATABASE를 만들 수 있는 권한
CREATEROLE or NOCREATEROLE ROLE을 만들 수 있는 권한
LOGIN or NOLOGIN LOGIN 허용 여부
INHERIT or NOINHERIT 상속 가능 여부
REPLICATION or NOREPLICATION 복제 권한
BYPASSRLS or NOBYPASSRLS RLS(Row-Level Security) 무시 여부
PASSWORD [password] 패스워드
 VALID UNTIL [timestamp] 패스워드의 유효기간
IN ROLE [role_name] or IN GROUP [role_name] 지정한 ROLE의 구성원으로 포함
ROLE [role_name] or GROUP [role_name] 지정한 ROLE 부여
ADMIN [role_name] 윗 줄의 ROLE 속성 + WITH ADMIN

 

 

4. 권한 부여

  - DATABASE를 하나 생성하고 그에 따른 권한을 부여해보자

 

postgres=# CREATE DATABASE my_db WITH OWNER whatwant ENCODING 'UTF8';

CREATE DATABASE



postgres=# GRANT ALL PRIVILEGES ON DATABASE my_db TO whatwant;
GRANT

 

  ▶ Permission

     - 잘 모르는 내용도 있지만, 일단 리스트업 해본다.

 

SELECT 데이터 조회. UPDATE/DELETE 하려면 포함 필요
INSERT 데이터 추가
UPDATE 데이터 수정
DELETE 데이터 삭제
TRUNCATE 데이터 모두 삭제
REFERENCES 외래키 제약 조건 생성
TRIGGER 트리거
CREATE 스키마 생성
CONNECT 데이터베이스 연결
TEMPORARY 임시 테이블 생성
EXECUTE 함수/프로시저 연산자 허용
USAGE 스키마 객체 접근 허용
ALL PRIVILEGES 모든 권한

 

 

 

pgAdmin4로 확인해보자.

 

 

여기까지...

 

반응형

 

PostgreSQL을 시스템에 직접 붙어서 `psql`을 이용해서 다루는 것도 좋지만,

개인적으로 Web Interface를 통해서 database의 현황을 살펴보는 것을 좋아하기에

PostgreSQL을 설치하고 난 다음에 바로 찾아본 것이 바로 `pgAdmin4`이다.

 

깔끔한 설치를 위해 Docker로 한 번 설치해봤다.

 

 

0. PostgreSQL 설치

  - [PostgreSQL을 Docker로 설치하자](https://www.whatwant.com/entry/PostgreSQL-Docker)

 

 

1. pgAdmin4 설치

  - 그냥 바로 실행하자.

  - email 주소와 password는 각자 취향에 다라 지정해주면 된다.

 

❯ sudo docker run -p 5050:80 -e 'PGADMIN_DEFAULT_EMAIL=abc@email.com' \
                        -e 'PGADMIN_DEFAULT_PASSWORD=password' -d dpage/pgadmin4

Unable to find image 'dpage/pgadmin4:latest' locally
latest: Pulling from dpage/pgadmin4
59bf1c3509f3: Pull complete 
6e9ec7ad2b67: Pull complete 
a0e18fcb2977: Pull complete 
fd2b27e2842d: Pull complete 
51136bc64bc0: Pull complete 
f64eecb587f3: Pull complete 
9cb5237d6528: Pull complete 
facb2de54b7c: Pull complete 
2c30d334d2ee: Pull complete 
27b8ff406ea1: Pull complete 
b87dab9776e7: Pull complete 
3e9a234b4839: Pull complete 
160949aa8885: Pull complete 
02526e9b4604: Pull complete 
Digest: sha256:3a2f4533b0e33baa09260ce02d0912058881c55cef800b73219e19b0a9d75658
Status: Downloaded newer image for dpage/pgadmin4:latest
4fb11f1a591ed35244b6db9045b844cae781ca3b59c54006b172805567dd1326

 

 

2. Connect

  - http://127.0.0.1:5050/

  - 실행할 때 입력한 email 주소와 password를 이용해서 로그인 하면 된다.

 

 

 

3. Add New Server

  - PostgreSQL 서버를 등록해주자.

 

 

  - name 하나 지어주고,

 

 

  - Connection 정보를 입력해주자.

  - `localhost`, `127.0.0.1`로 지정하면 연결이 안된다. IP 적어주자.

  - `Username`과 `Password` 제대로 입력하고 Save 하면 된다.

 

 

  - 이제 짠~

 

 

 

일단 여기까지~

 

반응형

 

개발을 하는 중에 PostgreSQL을 개발PC에 설치할 필요가 생겼는데

그냥 설치하기에는 개발PC가 지저분해질까봐 Docker를 이용해서 설치하려고 한다.

 

[ 개발PC 환경 ]

  - 운영체제: Ubuntu 18.04.6 LTS

  - docker: Docker version 20.10.12, build e91ed57

 

 

사실 포스팅을 굳이 해야할까 싶을 정도로 너무 간단하게 설치가 된다.

 

 

1. Docker Volume 생성

  - 데이터를 조금이라도 안전하게 보관하기 위해서 별도 volume으로 관리하자.

  - 실제 저장 위치도 확인해 볼 수 있다.

 

❯ docker volume create postgres_data

postgres_data


❯ sudo ls -al /var/lib/docker/volumes/

합계 40
drwx-----x  4 root root  4096  3월 21 21:14 .
drwx--x--- 13 root root  4096  3월 21 20:12 ..
brw-------  1 root root  8, 1  3월 21 20:12 backingFsBlockDev
-rw-------  1 root root 32768  3월 21 21:14 metadata.db
drwx-----x  3 root root  4096  2월 13 03:22 portainer_data
drwx-----x  3 root root  4096  3월 21 21:14 postgres_data

 

 

2. run PostgreSQL

  - 실행은 한 줄이면 된다 ^^

  - password는 각자 취향에 맞게 작성하면 된다.

 

❯ docker run -d -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password \
                 -v postgres_data:/var/lib/postgresql/data postgres

Unable to find image 'postgres:latest' locally
latest: Pulling from library/postgres
ae13dd578326: Pull complete 
723e40c35aaf: Pull complete 
bf97ae6a09b4: Pull complete 
2c965b3c8cbd: Pull complete 
c3cefa46a015: Pull complete 
64a7315fc25c: Pull complete 
b9846b279f7d: Pull complete 
ed988fb8e7d9: Pull complete 
ed4bb4fd8bb5: Pull complete 
ead27f1733c8: Pull complete 
7d493bacd383: Pull complete 
0920535e8417: Pull complete 
db76d5bdbf2c: Pull complete 
Digest: sha256:d1db54eade17ebfaa6cfdca90c83f8cb0d54bcceb1270a0848e0b216d50c325c
Status: Downloaded newer image for postgres:latest
d0b1fa1bb2b1b580e96e1790b6f7bebfcfdc88c885c35e1af57d82379e5df7b7

 

 

3. psql

  - 이대로 끝내면 서운하니까 psql 까지만 접속해보자.

 

❯ docker exec -it postgres /bin/bash

root@d0b1fa1bb2b1:/# psql -U postgres

psql (14.2 (Debian 14.2-1.pgdg110+1))
Type "help" for help.

postgres=# 

 

 

 

여기까지~

반응형

버전관리 도구로 Git을 사용하는 경우,
코드 리뷰 도구로는 Gerrit을 사용하는 것이 거의 당연시 되고 있다.
그 가장 큰 이유는 바로 요즘 대세인 Google의 Android에서 사용하고 있다고 알려져있기 때문으로 보인다.


그래서 궁금한 것이 그러면 다른 곳에서는 어떤 코드 리뷰 도구를 사용하는지 알아보고 싶었다.
그러던 중 알게 된 것이 Yahoo에서 사용했다고 알려진 Review Board였다.
최근에는 Git도 지원을 하고 있었다.


그 외에도 몇 가지 도구를 더 찾을 수는 있었지만,
코드 리뷰를 개발 프로세스 안에서 시스템 적으로 코드 리뷰를 강제해야만 하는
회사에서 적용할 수 있는 강력하고 안정적인 쓸만한 리뷰 도구는 그다지 많지 않았다.


결론적으로,
일단 Review Board를 설치해보고 그 화면이나 기능에 대해서 한 번 살펴보기로 했다!
시간 투자 결정 !!!


01. Review Board

   - http://www.reviewboard.org/
   - Review Board는 Ubuntu와 Python을 사랑하는 도구로 보인다. 특히 Python !!!
   - 그래서 설치 과정 역시 일반적이지 않고 Python을 이용하여 이루어진다.


02. Database

   - Review Board는 다음의 3가지 database를 지원한다.
   - MySQL, PostgreSQL, sqlite

   - 개인적인 취향으로 PostgreSQL으로 이하 설치과정을 진행하겠다.
   - 다들 알겠지만, 설치는 다음과 같이 진행하면 된다.

$ sudo apt-get install postgresql



03. WAS

   - 웹 기반의 코드 리뷰 도구이기 때문에 WAS가 필요하다.
   - Review Board에서 공식적으로 지원하는 것은 다음의 2가지 WAS 구성이다.
      ▷ Apache + mod_wsgi, fastcgi, or mod_python
      ▷ lighttpd + fastcgi

   - 최근에는 lighttpd도 많이 사용되지만, Apache로 이하 설치과정을 진행하겠다.
   - 설치가 필요한 경우 아래와 같이 진행하면 된다.

$ sudo apt-get install apache2 libapache2-mod-python libapache2-mod-wsgi



04. Python Setuptools

   - Review Board는 조금 특이한 (솔직히 말하면 필자가 설치했던 것들 중 최초다 @.@) 설치과정을 갖고 있다.
   - 바로 Python Setuptools를 이용해서 설치를 진행하기에, 해당 도구를 미리 설치해줘야 한다.

$ sudo apt-get install python-setuptools



05. Python Development Headers

   - 정확히 왜 필요한지는 모르겠지만, 일단 필요하다고 하니 설치를 해보자.

$ sudo apt-get install python-dev



06. memcached

   - 웹 기반으로 구동이 되는 도구이다보니, 성능 이야기가 곧잘 나오곤 한다.
   - 그래서인지 옵션 사항이긴 하지만 Review Board는 성능 향상을 위한 도구를 제시하고 있다.

$ sudo apt-get install memcached
$ sudo easy_install python-memcached



07. Patch

   - Review를 위한 도구이다 보니, 필수로 필요한 것 중 하나가 patch이다.

$ sudo apt-get install patch



08. Review Board

   - 이제 준비는 모두 끝났다. Review Board를 설치하자~!!!

$ sudo easy_install ReviewBoard

   - 너무 쉽다고?! 아직 조금 더 남았다.



09. database bindings

   - review board와 database를 연결해줘야 한다.
   - 필자는 postgresql을 사용하기에 아래와 같이 설치~!!!

$ sudo apt-get install libpq-dev
$ sudo easy_install psycopg2



10. create site

   - 설치가 되었다고 해서 모두 끝나는 것이 아니다.
   - Review를 진행할 site를 생성해야 사용할 수가 있는 것이다.

   - 여기에서 사용할 사용자와 database를 등록해놓자.

$ sudo su - postgres
$ psql

# CREATE ROLE reviewboard LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity';
# CREATE DATABASE reviewboard WITH ENCODING='UTF8' OWNER=reviewboard;
# \q

$ exit

   - 이제 reviewboard site를 생성하자.

$ sudo rb-site install /var/www/review.whatwant.com

   - 위 경로는 현재 존재하지 않는 디렉토리이다. 위 명령어를 통해 생성이 될 예정이다.


   - 명령어를 실행하면 위와 같은 창이 X-Windows 에 뜨게 된다.


   - 지금 테스트하고 있는 환경에서는 별도의 도메인같은 것이 없으니 위 예시는 그냥 "127.0.0.1"을 사용하고 있다.


   - 하위 경로를 별도로 지정하고 싶은 경우를 위한 환경 설정이다.


   - 무슨 말인지 잘 모르겠다. 이럴 때엔 그냥 내버려두란다. 그러면 그렇게 하자 ^^


   - 마찬가지다. 그냥 내버려두란다.


   - 설치하고 사용할 Database를 고르면 된다. 필자는 postgresql을 선택했다.


   - postgresql에서 사용할 database 이름을 지어주면 되는데, 앞에서 생성한 reviewboard라는 이름으로 생성하자.


   - DB 서버를 별도로 두었다면 해당 IP를 적어주면 되고, 같은 서버에 위치하고 있다면 기본값 localhost 그대로 쓰자.


   - database를 위한 사용자와 비밀번호 입력을 위한 화면이다. 앞에서 등록한 사용자 정보를 넣어주면 된다.


   - 메모리 캐쉬를 위해서 어떤 방법을 사용할지에 대한 것인데, ReviewBoard에서 요구하는 방식을 그대로 써보자.


   - memcache 서버에 대한 설정인데, 왠만하면 그냥 그대로 쓰자.


   - 사용할 웹서버를 고르는 것인데, 우리는 이번에 apache를 사용하기로 했으므로 그렇게 선택하면 된다.


   - 웹서버에서 Python을 사용하기 위한 Loader를 고르는 것인데, 기본 추천값으로 사용하자.


   - 이번에 생성한 ReviewBoard의 site에서 사용할 관리자의 계정을 등록하면 된다.


   - 설치가 위와같이 진행이 된다.


   - 모두 끝났다.



11. Apache 설정

   - 위에서 필자와 같이 설정을 했으면 아래와 같이 진행을 해보자.

$ nano /var/www/review.whatwant.com/conf/apache-wsgi.conf

   - 위와 같이 ReviewBoard가 참고할 환경 설정 파일을 만들어 놓았다.

<VirtualHost *:80>
        ServerName 127.0.0.1
        DocumentRoot "/var/www/review.whatwant.com/htdocs"

        # Error handlers
        ErrorDocument 500 /errordocs/500.html

        WSGIPassAuthorization On
        WSGIScriptAlias "/" "/var/www/review.whatwant.com/htdocs/reviewboard.wsgi/"

        <Directory "/var/www/review.whatwant.com/htdocs">
                AllowOverride All
                Options -Indexes +FollowSymLinks
                Allow from all
        </Directory>

        # Prevent the server from processing or allowing the rendering of
        # certain file types.
        <Location "/media/uploaded">
                SetHandler None
                Options None

                AddType text/plain .html .htm .shtml .php .php3 .php4 .php5 .phps .asp
                AddType text/plain .pl .py .fcgi .cgi .phtml .phtm .pht .jsp .sh .rb

                <IfModule mod_php5.c>
                        php_flag engine off
                </IfModule>
        </Location>

        # Alias static media requests to filesystem
        Alias /media "/var/www/review.whatwant.com/htdocs/media"
        Alias /static "/var/www/review.whatwant.com/htdocs/static"
        Alias /errordocs "/var/www/review.whatwant.com/htdocs/errordocs"
        Alias /favicon.ico "/var/www/review.whatwant.com/htdocs/static/rb/images/favicon.png"
</VirtualHost>

   - 위와같이 친절하게 필요한 설정을 모두 제공을 해준다.
   - 필자는 위의 내용을 참고해서 그대로 이용하고자 한다. 포트만 변경해서... ^^

$ sudo nano /etc/apache2/sites-available/default

...
<VirtualHost *:8080>
위의 내용
</VirtualHost>

   - 포트를 추가하기 위해서는 다음의 작업도 수행해주어야 한다.

$ sudo nano /etc/apache2/ports.conf

...
NameVirtualHost *:8080
Listen 8080

   - 이제 apache2 재시작을 하자.

$ sudo service apache2 restart

   - 위와 같이 했는데, 다음과 같은 에러메시지가 보인다면, 다음의 포스트를 참고하자.
   - http://whatwant.tistory.com/440

$ sudo service apache2 restart
 * Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

 

12. 디렉토리 권한 설정

   - 몇 개의 디렉토리에 대해서는 권한을 부여해주어야 한다.

$ sudo chown -R www-data /var/www/review.whatwant.com/data
$ sudo chown -R www-data /var/www/review.whatwant.com/htdocs/media/ext



13. 설치 확인

   - 이제 잘 설치 되었는지 확인을 해보자.

   - 웹브라우저를 통해 [ http://localhost:8080 ]으로 접속을 하면 된다.


   - 로그인 화면이 떴다!!!!
   - 설치과정에서 입력한 계정으로 로그인을 하면 된다.



설치과정이 너무 길었으니... 사용을 위한 부분은 다른 포스팅으로 설명을 하기로 하겠다.
(실제로 포스팅을 위해서는 약 3일이 걸렸다... 몇 가지 확인을 위해서 이기도 하고, 개인적인 일도 있다보니 ^^)

반응형

개인적으로 Project Management Tool 중에서 가장 좋아하는 Redmine~!!!
Ruby가 아니라 Python으로 만들어졌다면 100점 만점에 100점을 줄텐데.... ^^

이 Redmine 설치에 대해서 이미 포스팅을 했다고 생각했는데,
지금 찾아보니 없어서 지금에서야 헐래벌떡 포스팅을 하고자 하고 있다.



내가 또 개인적으로 너무나 좋아하는 Ubuntu에서
너무나 친절하게도 apt-get으로 redmine을 설치할 수 있도록 제공해주고 있다.

하지만 일단은 Source Code로 설치하는 과정에 대해서 살펴보도록 하겠다.

나중에 기회가 되면 apt-get으로 설치하는 것과 관리하는 법에 대해서도 살펴보겠다.




Redmine의 경우 Ruby 등의 의존성이 있는 것들의 버전 맞추는 것과
Database에 대해서 설정하는 것들이 조금은 어려움이 있다.

그래서인지 설치하기 편하게 제공해주는 Bitnami Redmine 패키지도 있다.



설치하기가 쉽지 않다고는 하지만,
Redmine에서 친절히 모두 설명해주고 있기 때문에 차근차근 잘 따라하면 된다!!!


Redmine에서 제공해주는 설치 가이드
   - http://www.redmine.org/projects/redmine/wiki/RedmineInstall



01. 버전 확인하기

      - 2012.03.23 현재 Redmine의 최신 버전은 [ v1.3.2 ] 이다.
      - 설치할 버전에 대해서 잘 기억을 해두자.


02. Ruby & Ruby on Rails & Rack 호환 버전 확인하기

      - 가장 어려운 Ruby 형제들 버전 호환성 맞추기
      - 우리는 v1.3.2 를 설치할 것이기에 아래와 같이 버전을 맞추면 된다.

  Redmine  Supported Ruby  Required Rails  Supported Rack  Supported RubyGems
 1.3.x  ruby 1.8.6, 1.8.7  Rails 2.3.14  Rack 1.1.x  RubyGems <= 1.7


03. 기본 패키지 + Ruby 설치하기

      - Ubuntu에서 필요한 기본 패키지를 설치하자. 좀 많다.
      - Ruby를 소스 코드 설치할 수도 있는데, 많은 귀찮은 부분이 있으므로 그냥 아래와 같이 패키지 설치하자.

 


 $ sudo apt-get install build-essential ruby1.8 ruby1.8-dev irb1.8 rdoc1.8 libdbd-pg-ruby1.8 zlib1g-dev libpcre3-dev libopenssl-ruby1.8 libzlib-ruby libssl-dev libcurl4-openssl-dev libpq-dev libreadline-gplv2-dev libjpeg62-dev libpng12-dev



04. RubyGems 설치하기

      - 이번에는 조금은 난감한 RubyGems를 설치해보자.
      - http://rubygems.org/

      - 버전 호환성을 보면 1.7 버전 이하를 요구하는데, 현재 최신 버전은 1.8.21 이다.
      - 그런데, 홈페이지를 아무리 뒤져도 이전 버전을 확인할 수가 없다.
      - 그래서 Github를 뒤져보게 되었다.
      - https://github.com/rubygems/rubygems

      - 여기에서 branches를 찾아보자.
      - https://github.com/rubygems/rubygems/branches

      - 1.7 버전을 선택하고 ZIP 경로 확인!


 $ wget https://nodeload.github.com/rubygems/rubygems/zipball/1.7
 $ mv ./1.7 ./rubygems-rubygems-v1.7.2-0-gb412f7a.zip

      - 압축을 풀고 설치를 하자.

 


 $ unzip ./rubygems-rubygems-v1.7.2-0-gb412f7a.zip
 $ cd ./rubygems-rubygems-v1.7.2-0-gb412f7a
 $ sudo ruby setup.rb
 $ sudo ln -s /usr/bin/gem1.8 /usr/bin/gem


05. PostgreSQL 설치 + Subversion

      - Redmine을 설치할 때에는 DB가 필요한데, 대부분의 사람들이 MySQL을 사용한다.
      - 하지만, 개인적인 취향으로는 PostgreSQL을 좋아한다.
      - MySQL이 Oracle에 팔린 뒤로 조금은 기피하기 때문이다.
      - 물론 성능상으로도 PostgreSQL이 떨어지지도 않는다!

      - 소스코드로 설치할 수도 있지만, 그냥 apt-get 패키지로 설치했다.
      - 설치하는 김에 subversion도 같이 설치했다. (redmine 소스 코드 받을 때 사용)

 $ sudo apt-get install postgresql subversion


06. Rails, i18n, rack, fastthread, postgres, pg 설치하기

      - Rails v2.3.14 설치하기
      - i18n v0.4.2 설치
      - rack v1.1.1 설치
      - fastthread, postgres, pg 설치

 $ sudo gem install -v=2.3.14 rails
 $ sudo gem install -v=0.4.2 i18n
 $ sudo gem install -v=1.1.1 rack
 $ sudo gem install fastthread
 $ sudo gem install postgres
 $ sudo gem install pg


07. ImageMagick

      - redmine에서 옵션으로 요구하는 ImageMagick 를 설치해보자.
      - 이게 버전이나 설치 호환성을 따지는데, 정확한 정답은 아직 모르겠다. 그냥 막 되는대로~ ^___^

      - http://www.imagemagick.org/

      - 사전에 몇 가지 패키지를 더 설치해보자.

 $ sudo apt-get install librmagick-ruby1.8 libmagickwand-dev
 $ sudo gem install rmagick

      - 이제는 ImageMagick source code를 다운 받고  압축을 풀자.


 $ wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
 $ tar zxvf ./ImageMagick.tar.gz

      - 이제는 설치작업을 하자.


 $ cd ./ImageMagick-6.7.6-1
 $ ./configure
 $ make
 $ sudo make install


08. passenger 설치

      - Redmine의 웹서비스 제공을 위해서 passenger를 설치하자
      - http://rubyforge.org/projects/passenger

      - 다운로드 받고 이어서 설치를 하자

 


 $ wget http://rubyforge.org/frs/download.php/75548/passenger-3.0.11.tar.gz
 $ tar zxvf passenger-3.0.11.tar.gz

 


 $ cd passenger-3.0.11/
 $ cd ./bin/
 $ sudo ./passenger-install-nginx-module

→ [Enter]

   - 설치 과정 중에 선택하는 화면에서는 '1'번을 고르면 된다

 


→ [ 1 ] → [ Enter ] 계속...

   - 실행을 위해서 스크립트 파일을 만들어야 한다


 $ sudo nano /etc/init.d/nginx

→ 내용은 아래 별도

 $ sudo chmod +x /etc/init.d/nginx
 $ sudo update-rc.d -f nginx defaults

#!/bin/sh

### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO

PATH=/opt/nginx/sbin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/nginx/sbin/nginx
NAME=nginx
DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
        . /etc/default/nginx
fi

set -e

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --pidfile /opt/nginx/logs/$NAME.pid \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile /opt/nginx/logs/$NAME.pid \
                --exec $DAEMON
        echo "$NAME."
        ;;
  restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile \
                /opt/nginx/logs/$NAME.pid --exec $DAEMON
        sleep 1
        start-stop-daemon --start --quiet --pidfile \
                /opt/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  reload)
          echo -n "Reloading $DESC configuration: "
          start-stop-daemon --stop --signal HUP --quiet --pidfile     /opt/nginx/logs/$NAME.pid \
              --exec $DAEMON
          echo "$NAME."
          ;;
      *)
            N=/etc/init.d/$NAME
            echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
            exit 1
            ;;
esac
exit 0


09. redmine 다운로드

      - 이제 우리의 주인공 redmine을 설치하기 위한 준비는 끝났다!
      - redmine을 다운로드 받고 설치하자
 


 $ cd /srv/www/redmine.whatwant.com/
 $ svn co http://redmine.rubyforge.org/svn/trunk redmine


10. postgresql 설정하기

      - redmine을 위해 계정도 생성해주고 데이터베이스도 생성해주자

      - 우선 postgres 계정으로 변경 후 postgresql에 접속하자
      - 더불어 redmine 계정도 생성하고 redmine 데이터베이스도 생성해주자
 


 $ sudo su - postgres
 $ psql

 # CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'redmine' NOINHERIT VALID UNTIL 'infinity';
 # CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine TEMPLATE=template0;

 # \q

 $ exit


11. database 설정값 등록

      - redmine에게 database 정보를 알려주자


 $ cd /srv/www/redmine.whatwant.com/redmine
 $ nano ./config/database.yml

 $ chmod 600 ./config/database.yml

      - 파일 내용은 아래와 같이 만들어주면 된다

production:
        adapter: postgresql
        database: redmine
        host: localhost
        username: redmine
        password: redmine
        encoding: utf8
        schema_search_path: public

      - 추가로 몇 가지 작업을 더 해야한다. (sqlite3를 사용하지는 않는데, 의존성 때문에 필요하다)


 $ sudo apt-get install sqlite3 libsqlite3-dev
 $ sudo bundle install --without development test rmagick mysql sqlite3
 $ RAILS_ENV=production rake config/initializers/session_store.rb
 $ RAILS_ENV=production rake db:migrate
 $ RAILS_ENV=production rake redmine:load_default_data
 → ko


12. redmine 설정

      - 이제 마무리 단계다.


 $ sudo adduser redmine
 $ cd /srv/www/redmine.whatwant.com
 $ sudo chown -R redmine.redmine *
 $ cd ./redmine/
 $ sudo chmod -R 755 files/ log/ tmp/ public_assets/



13. nginx conf

 

      - 웹서비스를 위한 환경 설정을 하자.

 

  

  $ sudo nano /opt/nginx/conf/nginx.conf

   → user redmine;

 

 

      - 이제는 웹 서비스 관련된 사항들에 대해서 포함하자

  

 

 http {
    passenger_root /srv/install/redmine/passenger/passenger-3.0.11;
    passenger_ruby /usr/bin/ruby1.8;

 


        #location / {
        #    root   html;
        #    index  index.html index.htm;
        #}

        access_log /srv/www/redmine.whatwant.com/redmine/log/access.log;
        error_log /srv/www/redmine.whatwant.com/redmine/log/error.log;

        passenger_enabled on;
        root /srv/www/redmine.whatwant.com/redmine/public;

        location ~* \.(ico|jpg|gif|png|css|js|swf|html)$ {
           if (-f $request_filename) {
              expires max;
              break;
           }
        }


      - 이젠 nginx를 시작하고 redmine을 확인하자!

 

 

 

 $ sudo /etc/init.d/nginx start 


      - 웹페이지를 열어서 'localhost' 주소로 들어가면 위 스크린샷과 같이 뜨면 성공이다~!!!

 

      - 관리자 초기 계정은 'admin / admin' 이다.




기타 세부 설정은 나중 기회에~ ^^


 

반응형

+ Recent posts