'redmine'에 해당되는 글 2건

  1. 2020.03.19 [Docker] gitlab, redmine, jenkins 설치 하기
  2. 2020.03.16 [Redmine] Ubuntu 에 Redmine 설치 하기

[Docker] gitlab, redmine, jenkins 설치 하기

Cloud&Container/IaC 2020. 3. 19. 11:48

 

환경)

- AWS

- Ubuntu 18.04 LTS

- Python 3.8.2

- Pip 3

 

Step 1) docker 를 설치 합니다.

$ sudo apt update
$ sudo apt upgrade
$ sudo apt-get install curl apt-transport-https ca-certificates software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt update
$ sudo apt install docker-ce
$ sudo systemctl status docker
$ sudo docker run hello-world

$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/create?fromImage=gitlab%2Fgitlab-ee&tag=latest: dial unix /var/run/docker.sock: connect: permission denied

$ sudo usermod -a -G docker ubuntu
또는
$ sudo chmod 666 /var/run/docker.sock
$ sudo service docker restart

 

Step 2) docker compose 를 설치 합니다.

https://docs.docker.com/compose/compose-file/compose-versioning/#version-3

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version

# uninstall
$ sudo rm /usr/local/bin/docker-compose

 

# 도커 허브를 통해서 개별 컨테이너에 대한 정보를 확인해서 docker-compose.yml 파일을 만들면 됩니다.

https://hub.docker.com/

 

Step 3) gitlab 을 설치 합니다.

$ mkdir -p docker/gitlab
$ cd docker/gitlab
$ vi docker-compose.yml
version: '3.1'

services:
  web:
    image: 'gitlab/gitlab-ee:12.8.1-ee.0'
    restart: always
    hostname: 'xxxxx.compute.amazonaws.com'
    environment:
      TZ: "Asia/Seoul"
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://xxxxx.compute.amazonaws.com'
        letsencrypt['enable'] = false
        nginx['redirect_http_to_https'] = false
        nginx['listen_https'] = false
        nginx['listen_port'] = 8929
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8929:8929'
      - '2224:22'
    volumes:
      - '/home/ubuntu/docker/gitlab/config:/etc/gitlab'
      - '/home/ubuntu/docker/gitlab/logs:/var/log/gitlab'
      - '/home/ubuntu/docker/gitlab/data:/var/opt/gitlab'

$ docker-compse up -d

- port 정보는 환경에 맞게 수정 하면 됩니다.

- docker compose 의 version 에 따라 yml syntax 가 다를 수 있으니 아래 문서에서 확인 하시면 됩니다.

https://docs.docker.com/compose/compose-file/ 

 

Step 4) redmine 을 설치 합니다.

$ mkdir -p docker/redmine
$ cd docker/redmine
$ vi docker-compose.yml
version: '3.3'

services:
  redmine:
    depends_on:
      - mysql
    image: redmine:4.1.0
    restart: always
    container_name: redmine
    ports:
      - 9292:3000
    environment:
      TZ: "Asia/Seoul"
      REDMINE_DB_MYSQL: mysql
      REDMINE_DB_USERNAME: root
      REDMINE_DB_PASSWORD: ROOT-PASSWORD
      REDMINE_DB_DATABASE: redmine_default
      REDMINE_DB_ENCODING: utf8
      #REDMINE_NO_DB_MIGRATE: true
    volumes:
      - ./data:/usr/src/redmine/files
      - ./plugins:/usr/src/redmine/plugins
      - ./themes:/usr/src/redmine/public/themes
  mysql:
    image: mysql:5.7.29
    container_name: mysql
    ports:
      - 3306:3306
    command:
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    restart: always
    environment:
      TZ: "Asia/Seoul"
      MYSQL_ROOT_PASSWORD: 'ROOT-PASSWORD'
      MYSQL_DATABASE: 'redmine_default'
    volumes:
      - ./data:/var/lib/mysql

# redmine 에서 사용할 DB 계정 정보는 mysql 을 먼저 구성 한 후 등록 하고 redmine 을 실행 시켜 줘야 정상적으로 동작 합니다.
# 이와 같이 하지 않을 경우 connection 이 안되거나 redmine 용 database 가 없다고 오류를 발생 시킵니다.

- redmine 설치 이전에 mysql 이 먼저 구성이 되어야 합니다.

- redmine 의 mysql 사용자를 별도로 만들어 주는 것이 좋기 때문에 필요 하다면 아래와 같이 수정 하면 됩니다.

services:
    mysql:
        image: mysql
...중략...
		volumes:
            - ./sql/init-redmine.sql:/docker-entrypoint-initdb.d/init-redmine.sql
...중략...


# init-redmine.sql
INSERT INTO `user` (`Host`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, 
`Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, 
`Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, 
`Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, 
`Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, 
`Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, 
`Create_user_priv`, `Event_priv`, `Trigger_priv`, `Create_tablespace_priv`, 
`ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, 
`max_updates`, `max_connections`, `max_user_connections`, `plugin`, 
`authentication_string`, `password_expired`, `password_last_changed`, 
`password_lifetime`, `account_locked`) 
VALUES ('%','redmine','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',
0,0,0,0,'mysql_native_password',password('redmine'),'N',NOW(),NULL,'N')

FLUSH PRIVILEGES;

또는

CREATE USER 'redmine'@'%' IDENTIFIED BY 'redmine';
GRANT ALL PRIVILIEGS ON redmine_default.* TO 'redmine'@'%'

FLUSH PRIVILEGES;

- MySQL 문법 가볍게 한번 보고 넘어 가겠습니다.

CREATE USER '유저아이디'@'접속호스트' IDENTIFIED BY '유저암호';

# 로컬 호스트에서 접속을 허용
CREATE USER '유저아이디'@'localhost' IDENTIFIED BY '유저암호';

# 모든 호스트에서 접속을 허용
CREATE USER '유저아이디'@'%' IDENTIFIED BY '유저암호';

GRANT ALL ON 데이터베이스명.테이블명 TO '유저아이디'@'접속호스트';

# 모든 데이터베이스의 모든 테이블에 대해 로컬호스트로 접속한 유저에게 허용
GRANT ALL ON *.* TO '유저아이디'@'localhost';

# 모든 데이터베이스의 모든 테이블에 대해 모든 호스트로 접속한 유저에게 허용
GRANT ALL ON *.* TO '유저아이디'@'%';

 

Step 5) jenkins 를 설치 합니다.

# python 3.8 최신 버전을 설치 합니다.
# source 로 설치 하는 내용입니다.
$ sudo apt-get install build-essential checkinstall
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev \
    libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
 
$ cd /opt
$ sudo wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
$ sudo tar xzf Python-3.8.2.tgz

$ cd Python-3.8.2
$ sudo ./configure --enable-optimizations
$ sudo make altinstall
$ sudo apt-get install python3-pip 

# 패키지로 설치 하는 내용입니다.
$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt-get update
$ sudo apt-get install python3.8

# 기본에 3.6.9 와 같이 다른 python3.x 가 설치 되어 있는 경우 설치 하지 않습니다.
$ sudo apt-get install python3.8-dev
$ sudo apt-get install python3.8-distutils

$ sudo apt-get install python3-pip

# virtualenv 가 필요 하다면,
$ pip3 install virtualenv virtualenvwrapper

# Jenkins 설치
$ mkdir -p docker/jenkins
$ cd docker/jenkins
$ vi docker-compose.yml
version: '2'

services:
  jenkins:
    image: 'jenkins/jenkins:lts'
    container_name: 'jenkins'
    restart: always
    ports:
      - '8080:8080'
    volumes:
      - './jenkins_home:/var/jenkins_home'
      - '/home/ubuntu/.ssh:/var/jenkins_home/.ssh'
      - '/home/ubuntu/.aws:/var/jenkins_home/.aws'
    environment:
      TZ: "Asia/Seoul"

$ docker-compose up -d

# 에러 발생
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied

$ sudo chown -R 1000:1000 jenkins_home

# Jenkins 에서 awscli 와 boto3 를 사용하기 위한 설치
$ sudo apt install awscli
$ pip3 install boto3

# Jenkins 에서 aws sdk 사용 하기 위한 설정
# host 에 aws configure 설정을 하고 mount 시킵니다.
$ aws configure
$ sudo chmod 666 .aws/config
$ sudo chmod 666 .aws/credentials
$ docker restart jenkins

이제 기본적인 설치는 끝났습니다.

응용은 이제 각자 알아서 해보시기 바랍니다.

:

[Redmine] Ubuntu 에 Redmine 설치 하기

ITWeb/개발일반 2020. 3. 16. 13:24

팀에서 사용할 workspace 도구로 뭘 쓸까 하다가 Redmine 으로 결정을 했습니다.

설치는 아래 문서 보시고 따라 하시면 됩니다.

 

[설치 문서]

https://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_on_Ubuntu_step_by_step

 

[설치 환경]

Ubuntu Server 18.04 LTS (HVM), SSD Volume Type 

AWS EC2 c5.xlarge

 

[문서 대로 설치하기 + 일부 수정]

$ sudo apt-get install apache2 libapache2-mod-passenger
$ sudo apt-get install mysql-server mysql-client

# MySQL 설치 이후 최초 root 계정 접속 시 아래와 같이 접속 하여 계정 추가/변경 등의 작업을 수행 합니다.

$ sudo mysql -proot

 

[MySQL root 계정 접근 허용]

INSERT INTO `user` (`Host`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, 
`Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, 
`Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, 
`Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, 
`Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, 
`Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, 
`Create_user_priv`, `Event_priv`, `Trigger_priv`, `Create_tablespace_priv`, 
`ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, 
`max_updates`, `max_connections`, `max_user_connections`, `plugin`, 
`authentication_string`, `password_expired`, `password_last_changed`, 
`password_lifetime`, `account_locked`) 
VALUES ('%','root','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',
0,0,0,0,'mysql_native_password',password('************'),'N',NOW(),NULL,'N')
$ sudo apt-get install redmine redmine-mysql
$ sudo gem update
$ sudo gem install bundler

 

[passenger.conf 수정]

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

<IfModule mod_passenger.c>
  PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
  PassengerDefaultRuby /usr/bin/ruby
  PassengerDefaultUser www-data		  
</IfModule>

문서에는 아래와 같이 수정 하게 되어 있으나 동작 하지 않아서 변경했습니다.

<IfModule mod_passenger.c>
    PassengerDefaultUser www-data
    PassengerRoot /usr
    PassengerRuby /usr/bin/ruby
</IfModule>

 

[ports.conf 수정]

$ sudo vi /etc/apache2/ports.conf

Listen xxxx

# 기본 80 포트를 사용 하나 다른 프로그램에서 사용을 하고 있어서 포트를 수정 하였습니다. 

 

[000-default.conf 수정]

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

<VirtualHost *:xxxx>
....

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

 

[최종 마무리 단계]

$ sudo ln -s /usr/share/redmine/public /var/www/html/redmine
$ sudo touch /usr/share/redmine/Gemfile.lock
$ sudo chown www-data:www-data /usr/share/redmine/Gemfile.lock
$ sudo service apache2 restart

 

[접속]

http://localhost:xxxx/redmine

admin/admin

 

: