Skip to content

Commit deeeb2e

Browse files
committed
updated README.md reference latest committed git version
1 parent cb0d93f commit deeeb2e

File tree

1 file changed

+163
-130
lines changed

1 file changed

+163
-130
lines changed

README.md

Lines changed: 163 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -1,187 +1,220 @@
1-
# devspoon-startup-web-php
2-
> [devspoon-web-php] 에서 제공하는 솔루션에 OpenProject, Jenkins를 결합한 솔루션
1+
# devspoon-startup-web
2+
[devspoon-web] is an open source that can easily build web servers based on php, gunicorn, and uwsgi.
3+
devspoon-startup-web is an open source made based on [devspoon-web] that can easily build project integration management solutions (openproject, jenkins, gitolite[private git server], harbor[private docker server]) required for start-up or development teams as well as php and python based web servers.
34

4-
> 함께 제공되는 nginx/php7.3 가상 호스팅 운영 방법은 [devspoon-web-php] 에서 확인
5+
* You can check how to build nginx web server and php/gunicorn/uwsgi application server at [devspoon-web].
56

6-
> 가상 호스팅, openproject, jenkins 모든 서비스를 도메인을 통해 단일 nginx 서버로 운영하고자 한다면
7-
compose/full_service 폴더의 docker-compose.yml을 사용
7+
[devspoon-web]은 php, gunicorn, uwsgi 기반의 웹 서버를 쉽게 구축할 수 있는 오픈소스 입니다.
8+
devspoon-startup-web은 [devspoon-web] 기반으로 만들어져 php, python 기반의 웹서버 뿐만 아니라 스타트업 혹은 개발팀에 요구되는 프로젝트 통합 관리 솔루션(openproject, jenkins, gitolite[private git server], harbor[private docker server])들을 docker를 이용해 쉽게 구축할 수 있는 오픈소스 입니다.
89

9-
## 서비스 특징
10-
11-
> [OpenProject] : 프로젝트 관리 프로세스(PMI)를 지원 하는 오픈 소스 프로젝트 관리 소프트웨어
10+
* nginx 웹 서버 및 php/gunicorn/uwsgi 어플리케이션 서버 구축 방법은 [devspoon-web]에서 확인하실 수 있습니다.
1211

13-
> [Jenkins] : CI 툴 중 하나로 CI (Continuous Integration)는 개발자가 공유 버전 제어 저장소에서
14-
팀의 코드를 컴파일 할 수 있도록함으로써 빌드주기 비 효율성을 줄이기 위한 프로세스
12+
## Project management solutions
1513

16-
> nginx/php7.3 기반의 가상 호스팅, OpenProject, Jenkins를 개별 서버로 사용할 수 있고
17-
단일 nginx에 통합하여 사용할 수 있음
14+
* **[OpenProject] :** Open source project management software to help you work on your project efficiently
1815

19-
> 예) test.com 도메인을 통해 a.test.com/ b.test/com 으로 가상 호스팅을 운영하고
20-
open.test.com으로 오픈프로젝트를 운영,
21-
jen.test.com으로 jenkins를 운영할 수 있음
16+
* **[Jenkins] :** As one of the CI tools, CI (Continuous Integration) refers to continuous integration, which is an automated process for developers, and new code changes are automatically built and tested regularly to notify developers to solve problems that can occur when multiple developers develop simultaneously. Software that helps secure development stability and reliability
2217

23-
## 사용 방법 (OpenProject) : 도메인 적용
18+
* **[Gitolite] :** Configuration Management Tool. user can install git server software at own server
2419

25-
1. OpenProject 사용시 이벤트를 메일로 보내기 위해 메일 계정 정보를 필수로 요구함
20+
* **[Harbor] :** The Private Docker Registry Server for businesses that store and distribute Docker Images
2621

27-
```
28-
본인은 mailgun을 사용함
22+
* **[OpenProject(KR)] :** 프로젝트를 효율적으로 진행할 수 있도록 지원하는 오픈 소스 프로젝트 관리 소프트웨어
2923

30-
compose/nginx_openproject 폴더의 docker-compose.yml 파일에 다음과 같은 항목이 있으며
31-
주석에 맞게 정보를 변경해야 함
24+
* **[Jenkins(KR)] :** CI 툴 중 하나로 CI (Continuous Integration)는 개발자를 위한 자동화 프로세스인 지속적인 통합을 말하며 새로운 코드 변경 사항들이 정기적으로 자동 빌드 및 테스트되어 개발자에게 알려줌으로 여러명의 개발자가 동시에 개발하며 발생할 수 있는 문제들을 해결하여 개발의 안정성 및 신뢰성을 확보할 수 있도록 지원하는 소프트웨어
3225

33-
environment:
34-
EMAIL_DELIVERY_METHOD: smtp
35-
SMTP_ADDRESS: smtp.mailgun.org #해당 위치 정보 입력 mailgun 사용시 동일하게 유지
36-
SMTP_PORT: 587
37-
SMTP_DOMAIN: "test.com" #해당 위치 정보 입력
38-
SMTP_AUTHENTICATION: login
39-
SMTP_ENABLE_STARTTLS_AUTO: "true"
40-
SMTP_USER_NAME: "[email protected]" #계정 정보
41-
SMTP_PASSWORD: "1234567890067655abcdefgh" #key 정보
42-
```
26+
* **[Gitolite] :** 형상 관리 도구 혹은 버전관리 시스템으로 자체적으로 설치하고 운영할 수 있는 git 소프트웨어
4327

44-
2. log의 supervisor 폴더가 volumes 로 연동되어있어 log 파일을 실시간 확인 가능
28+
* **[Harbor(KR)] :** Docker Image를 저장하고 분배하는 기업용 Private Docker Registry Server
4529

46-
3. config 폴더의 nginx_proxy_conf.sh 파일을 사용하여 nginx의 proxy 연결을 위한 conf 파일 생성
30+
## Features
4731

48-
```sh
32+
* **Supports creation of configuration files required for each service:** Environment files and security keys used for each service are created according to the user's keyboard input using a shell script or automatically generated.
4933

50-
account : 식별할 수 있는 파일명, 로그 파일명
51-
domain : 연결할 도메인 명
52-
portnumber : 웹 서비스 포트
53-
realurl : 프록시로 연결될 주소 및 포트 정보
34+
* **User custom installation support :** You can selectively install only the desired solution at compose/project_mng_service/(solution) without having to install all the solutions.
35+
* If you want to install more than one solution at the same time, just uncomment what you want at compose/master_service/docker-compose.yml.
5436

55-
#!/bin/bash
37+
* **Access web server and project management solutions with one nginx through nginx proxy :** All solutions are available on one nginx server.
38+
39+
* You can use ssh for direct access to gitolite.
40+
* The harbor will be supported in a future version due to security issues, and you can connect to your own server through harbor.yml.
41+
```
42+
Example
5643
57-
account=$1
58-
domain=$2
59-
portnumber=$3
60-
realurl='http:\/\/'$4':'$5
44+
test.com -> company website
45+
blog.test.com -> blog website
46+
shop.test/com -> shopping mall website
47+
open.test.com -> openproject solution
48+
jen.test.com -> jenkins solution
49+
```
6150
62-
sed 's/realurl;/'$realurl';/' sample_nginx_proxy.conf > $account'1'.temp
63-
sed 's/portnumber;/'$portnumber';/' $account'1'.temp > $account'2'.temp
64-
sed 's/domain/'$domain'/g' $account'2'.temp > ./conf.d/$account'_proxy_ng'.conf
6551
66-
rm *.temp
67-
```
52+
* **각 서비스들에 필요한 환경설정 파일 생성 지원 :** 각 서비스들에 사용되는 환경파일 및 보안키 등을 쉘 스크립트를 이용해 사용자의 키보드 입력에 맞춰 생성하거나 자동으로 생성합니다.
6853
69-
```sh
70-
사용 예시
71-
nginx_proxy_conf.sh '파일명 & 로그파일명' '도메인' '웹 서비스 포트' 'docker 컨테이너 이름' 'docker 컨테이너 서비스 포트'
72-
예시) nginx_proxy_conf.sh open_test open.test.com 80 jenkins 8080
54+
* **사용자 맞춤식 설치 지원 :** 모든 솔루션을 설치할 필요 없이 compose/project_mng_service/(solution)에서 원하는 솔루션만 선택적으로 설치할 수 있습니다.
55+
* 두개 이상의 솔루션을 동시에 설치하고 싶다면 compose/master_service/docker-compose.yml에서 원하는 항목만 주석 제거하면 됩니다.
7356
74-
결과물
75-
open_test_proxy_ng.conf
76-
```
57+
* **nginx의 proxy를 통해 하나의 nginx로 웹서버 및 프로젝트 관리 솔루션들에 접근 가능 :** 하나의 nginx 서버에서 모든 솔루션을 이용할 수 있습니다.
58+
59+
* gitolite는 ssh로 직접 접근하여 사용하면 됩니다.
60+
* harbor는 보안문제로 차후 버전에서 지원할 예정이며 harbor.yml을 통해 자체 서버로 연결 가능합니다.
61+
```
62+
Example
7763
78-
3. 방화벽 설정
64+
test.com -> company website
65+
blog.test.com -> blog website
66+
shop.test/com -> shopping mall website
67+
open.test.com -> openproject solution
68+
jen.test.com -> jenkins solution
69+
```
7970
80-
```sh
81-
ufw를 사용하고 있는 경우 80과 443 포트를 열어줌
82-
예) ufw allow 80/tcp
83-
ufw allow 443/tcp
84-
```
71+
## considerations
8572
86-
4. Docker-compose 실행
73+
* **Development-oriented docker service** : This open source is designed for focused on development-oriented rather than perfect docker container distribution and is suitable for startups or new service development teams with frequent initial modifications and tests.
8774
88-
```sh
89-
compose/nginx_openproject 폴더 위치로 이동하여 docker-compose.yml 파일이 있는 곳에서
90-
docker-compose up -d 실행
91-
```
75+
* **Orchestration not supported** : In the future, we plan to interoperate with cloud services such as AWS and GCM
9276
93-
## 사용 방법 (Jenkins) 1 : ip 접근
77+
* **this open-source considers generic servers that are not support AWS, GCM** : This open source is intended to be installed and operated on a server that is directly operated, and on general server hosting, and plans to integrate with cloud services such as AWS and GCM in the future
78+
79+
* **개발 중심적 docker 서비스** : 이 오픈소스는 완전한 docker container의 배포가 아닌 개발 중심적으로 설계되었으며 초기 수정과 테스트가 빈번한 스타트업 혹은 신규 서비스 개발팀에게 적합합니다.
80+
81+
* **오케스트레이션 미지원** : 앞으로 AWS, GCM 등의 Cloud 서비스와 연동할 계획이며 이후 오캐스트레이션이 지원될 예정입니다.
82+
83+
* **AWS, GCM 기반이 아닌 일반 서버 고려** : 이 오픈소스는 직접 운용하고있는 서버, 일반적인 서버 호스팅에서 설치하여 운영하는 것을 목적으로 하고 있으며 앞으로 단계적으로 AWS, GCM 등의 Cloud 서비스와 연동할 계획입니다.
9484
95-
```sh
96-
compose/nginx_jenkins 폴더에서 docker-compose up -d 실행
85+
## Install & Run
86+
### OpenProject
9787
98-
ip:8100 으로 접근 가능
88+
1. When using OpenProject, e-mail account information is required to send events by e-mail
9989
100-
* 방화벽 수정 : 예) ufw allow 8100/tcp
90+
* [mailgun] service setting
91+
* It is recommended to use [sendgrid] as the rate policy change
92+
```
93+
Information on the following items should be updated by referring to the comments in the docker-compose.yml file in the compose/project_mng_service/nginx_openproject folder
10194
102-
```
95+
environment:
96+
EMAIL_DELIVERY_METHOD: smtp
97+
SMTP_ADDRESS: smtp.mailgun.org #Need to change when using other services than mailgun
98+
SMTP_PORT: 587 #Need to change when using other services than mailgun
99+
SMTP_DOMAIN: "test.com" #user's SMTP domain information
100+
SMTP_AUTHENTICATION: login
101+
SMTP_ENABLE_STARTTLS_AUTO: "true"
102+
SMTP_USER_NAME: "[email protected]" #Service account information
103+
SMTP_PASSWORD: "1234567890067655abcdefgh" #Service authentication key information
104+
```
103105
104-
## 사용 방법 (Jenkins) 2 : 도메인 접근
106+
2. Run nginx_proxy_conf.sh file in config/web-server/(web server type) and enter service port number, domain, proxy url(Openproject's application name in docker-compose.yml), proxy port number, filename, and than, it make a nginx conf file in conf.d folder
105107
106-
1. config 폴더의 nginx_proxy_conf.sh 파일을 사용하여 nginx의 proxy 연결을 위한 conf 파일 생성
108+
3. Run docker-compose.yml (single mode)
109+
```
110+
get move to compose/project_mng_service/nginx_openproject
111+
Execute docker-compose.yml using "docker-compose up -d" command
112+
```
107113
108-
```sh
114+
4. There are advanced information in [OpenProject Official User Documentation](https://docs.openproject.org/installation-and-operations/operation/backing-up/)
109115
110-
account : 식별할 수 있는 파일명, 로그 파일명
111-
domain : 연결할 도메인 명
112-
portnumber : 웹 서비스 포트
113-
realurl : 프록시로 연결될 주소 및 포트 정보
116+
***
117+
### Jenkins
118+
1. Run nginx_proxy_conf.sh file in config/web-server/(web server type) and enter service port number, domain, proxy url(Openproject's application name in docker-compose.yml), proxy port number, filename, and than, it make a nginx conf file in conf.d folder
114119
115-
#!/bin/bash
120+
2. Run docker-compose.yml (single mode)
121+
```
122+
get move to compose/project_mng_service/nginx_jenkins
123+
Execute docker-compose.yml using "docker-compose up -d" command
124+
```
116125
117-
account=$1
118-
domain=$2
119-
portnumber=$3
120-
realurl='http:\/\/'$4':'$5
126+
3. There are advanced information in [Jenkins Official User Documentation](https://www.jenkins.io/doc/)
121127
122-
sed 's/realurl;/'$realurl';/' sample_nginx_proxy.conf > $account'1'.temp
123-
sed 's/portnumber;/'$portnumber';/' $account'1'.temp > $account'2'.temp
124-
sed 's/domain/'$domain'/g' $account'2'.temp > ./conf.d/$account'_proxy_ng'.conf
128+
***
129+
### Gitolite
130+
1. This docker make 2 account as gitolite-creator and git-manager. gitolite install at gitolite-creator and git-manager will manage gitolite system such as add new user or make new repogitory etc
125131
126-
rm *.temp
127-
```
132+
2. For management add new user account or make new repository, administrator must be accessed gitolite server by git-manager account. So, User must make client_user.pub key in docker/gitolite/system folder. Dockerfile will add this key at authorized_keys in git-manager account
128133
129-
```sh
130-
사용 예시
131-
nginx_proxy_conf.sh '파일명 & 로그파일명' '도메인' '웹 서비스 포트' 'docker 컨테이너 이름' 'docker 컨테이너 서비스 포트'
132-
예시) nginx_proxy_conf.sh open_test open.test.com 80 jenkins 8080
134+
3. Run docker-compose.yml (single mode)
135+
```
136+
get move to compose/project_mng_service/gitolite
137+
current ssh port number is 2222. if user want to change the ssh port number, modify in docker-compose.yml
138+
Execute docker-compose.yml using "docker-compose up -d" command
139+
```
133140
134-
결과물
135-
open_test_proxy_ng.conf
136-
```
141+
4. There are sample code
142+
* /home/git-manager/sample-script in the container
143+
```
144+
clone_admin.sh -> clone admin repository to manage gitolite system. administrator must manage gitolite system though only git-manager account
145+
add_user.sh -> it show how to add new user in gitolite
146+
```
137147
138-
3. 방화벽 설정
148+
5. There are advanced information in [Gitolite Cookbook](https://gitolite.com/gitolite/cookbook)
139149
140-
```sh
141-
ufw를 사용하고 있는 경우 80과 443 포트를 열어줌
142-
예) ufw allow 80/tcp
143-
ufw allow 443/tcp
144-
```
150+
***
151+
### Harbor
152+
1. To use harbor, it require latest docker-compose package. run /compose/project_mng_service/harbor-v.2.0.0/update_docker-compose.sh. if user already have latest version than 1.26.0, don't need this step
145153
146-
4. Docker-compose 실행
154+
2. harbor require a configuration file such as harbor.yml. update_harbor_config.sh file make harbor.yml. and then run install.sh, harbor will install successfully
147155
148-
```sh
149-
compose/nginx_openproject 폴더 위치로 이동하여 docker-compose.yml 파일이 있는 곳에서
150-
docker-compose up -d 실행
151-
```
156+
3. If user want to install harbor by one step, user can use autoinstall.sh file. it is process to make harbor.yml and run install.sh.
152157
158+
4. If user want to use https, have to make ssl key in /compose/project_mng_service/harbor-v.2.0.0/ssl/ before runing install.sh or autoinstall.sh.
153159
154-
## 사용 예제
160+
5. If user want to make ssl key, refer "Setting up HTTPS on a web server" section. there are at bottom in this page
155161
156-
스크린 샷과 코드 예제를 통해 사용 방법을 자세히 설명합니다.
157-
- 업데이트 예정
162+
6. There are advanced information in [Harbor 2.0 Documentation](https://goharbor.io/docs/2.0.0/)
158163
159-
## 개발 환경 설정
164+
## Setting up HTTPS on a web server
165+
* This step requires running http nginx server. it recommend php nginx server for this step. if user need to informations for this, refer to [devspoon-web]
160166
161-
만약 Docker 설치와 Docker-compose 설치가 되어 있지 않다면 다음 사항을 확인함
167+
```
168+
1. There are letsencrypt.sh shell script file in script folder and it interlocked by volumes.
169+
so user can access script file in a nginx container.
162170
163-
> docker 설치 참고 사이트 [docker-install]
164-
> docker-compose는 apt-get을 통해 설치가 가능한 것으로 확인됨
171+
2. use "docker exec -it <nginx container name> bash" command, user can get docker inside.
172+
173+
3. run letsencrypt.sh and insert informations such as webroot, domain, e-mail etc.
174+
this script make ssl-key and make crontab schedule automatically
165175
166-
## 업데이트 내역
176+
4. using "exit" command user can get off from container
177+
178+
5. Run nginx_proxy_https_conf.sh file in config/web-server/(web server type) and enter service port number, domain, proxy url(Openproject's application name in docker-compose.yml), proxy port number, filename, and than, it make a nginx conf file in conf.d folder
167179
168-
* 0.1.0 : 안정화 버전 완료
180+
6. user have to remove http conf file in config/web-server/<service>/conf.d/
169181
170-
* 차후 업데이트 계획 :
171-
- OpenObject와 젠킨스의 DB를 docker-compose.yml의 volumes 설정으로 컨테이너의 문제 발생시 데이터 복구 방안 제공
172-
- OpenObject와 젠킨스의 DB를 외부에서 운영할 수 있도록 기존 docker 설정 업데이트
173-
174-
## 신규 repository 계획
175-
- git-server, docker-image의 독립 서버들을 결합하여 신규 repository로 제공 예정
176-
- 독립서버, aws, gcp 기반에 대한 각각의 쿠버네티스 기능을 탑제하여 신규 repository로 제공 예정
177-
182+
7. run "docker-compose up" command in the compose folder
183+
```
184+
185+
## Additional development item
186+
187+
* System integration between jenkins, gitolite, openproject.
188+
* Support docker-swarm, kubernetes
189+
* docker and orchestration monitoring system
190+
* backup and security system
191+
* Support cloud such as AWS, GCM etc
192+
193+
## Community
194+
195+
* **Personal Website :** Owner's personam website is [devspoon.com]
196+
* **Github.io :** Ther are more detail guide [devspoon.github.io]
197+
198+
## Demos
199+
200+
* **[youtube]** - Preparing
201+
* **[inflearn]** - Demos for Devspoon features and how to use the devspoon's open-source
202+
203+
## Partners and Users
204+
205+
Lim Do-Hyun Owner Developer/project Manager, [email protected]
178206
179-
## 멤버
207+
임도현 Owner 개발자/기획자, [email protected]
180208
181-
임도현 Owner S/W, H/W, 개발자/기획자, [email protected]
182209
183210
<!-- Markdown link & img dfn's -->
184-
[docker-install]: https://hcnam.tistory.com/25
185-
[devspoon-web-php]: https://github.com/devspoons/devspoon-web-php
186-
[OpenProject]: http://wiki.webnori.com/display/pms/Open+Project+7
187-
[Jenkins]: https://jjeongil.tistory.com/810
211+
[devspoon-web]: https://github.com/devspoons/devspoon-web
212+
[OpenProject(KR)]: http://wiki.webnori.com/display/pms/Open+Project+7
213+
[Jenkins(KR)]: https://jjeongil.tistory.com/810
214+
[Harbor(KR)]: https://engineering.linecorp.com/ko/blog/harbor-for-private-docker-registry/
215+
[mailgun]: https://www.mailgun.com/
216+
[sendgrid]: https://sendgrid.com/
217+
[OpenProject]: https://docs.openproject.org/user-guide/wiki/
218+
[Jenkins]: https://en.wikipedia.org/wiki/Jenkins_(software)
219+
[Gitolite]: https://wiki.archlinux.org/index.php/Gitolite
220+
[Harbor]: https://en.wikipedia.org/wiki/Harbor

0 commit comments

Comments
 (0)