Browse Source

优化部署流程

pull/329/head
“xxq250” 3 years ago
parent
commit
2ac6cdf69d
6 changed files with 124 additions and 37 deletions
  1. +0
    -1
      .gitignore
  2. +33
    -0
      Dockerfile
  3. +2
    -2
      Gemfile
  4. +22
    -2
      Gemfile.lock
  5. +59
    -27
      README.md
  6. +8
    -5
      docker-compose.yml

+ 0
- 1
.gitignore View File

@@ -81,7 +81,6 @@ db/bak/
docker/
educoder.sql
redis_data/
Dockerfile
dump.rdb
.tags*
ceshi_user.xlsx

+ 33
- 0
Dockerfile View File

@@ -0,0 +1,33 @@
FROM ubuntu:18.04

RUN apt update

RUN apt install -y openssl libssl-dev imagemagick git ruby-dev nodejs libmariadb-dev libmysqlclient-dev shared-mime-info libpq-dev libxml2-dev libxslt-dev
RUN DEBIAN_FRONTEND="noninteractive" apt -y install tzdata
RUN ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

WORKDIR /home/app/gitlink

ADD ./ /home/app/gitlink

RUN gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

RUN gem update --system

RUN gem install bundler
RUN gem install rake

RUN rm -rf Gemfile.lock

#RUN cp config/configuration.yml.example config/configuration.yml
#RUN cp config/database.yml.example config/database.yml
#RUN touch config/redis.yml
#RUN touch config/elasticsearch.yml

RUN bundle install

EXPOSE 4000
RUN rails s -p 4000 -b '0.0.0.0'




+ 2
- 2
Gemfile View File

@@ -98,9 +98,9 @@ gem 'font-awesome-sass', '4.7.0'
gem 'rails-i18n', '~> 5.1'

# job
gem 'sidekiq'
gem 'sidekiq',"5.2.8"
gem 'sinatra'
gem "sidekiq-cron", "~> 1.1"
gem "sidekiq-cron", "1.2.0"

# batch insert
gem 'bulk_insert'


+ 22
- 2
Gemfile.lock View File

@@ -106,6 +106,8 @@ GEM
activerecord (>= 3.1.0, < 7)
diff-lcs (1.3)
diffy (3.3.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
doorkeeper (5.5.1)
railties (>= 5)
doorkeeper-jwt (0.4.1)
@@ -133,6 +135,8 @@ GEM
fugit (1.4.1)
et-orbi (~> 1.1, >= 1.1.8)
raabro (~> 1.4)
gitea-client (0.10.5)
rest-client (~> 2.1.0)
globalid (0.4.2)
activesupport (>= 4.2.0)
grape-entity (0.7.1)
@@ -143,6 +147,9 @@ GEM
harmonious_dictionary (0.0.1)
hashie (3.6.0)
htmlentities (4.3.4)
http-accept (1.7.0)
http-cookie (1.0.5)
domain_name (~> 0.5)
i18n (1.8.2)
concurrent-ruby (~> 1.0)
io-like (0.3.1)
@@ -180,6 +187,9 @@ GEM
mimemagic (~> 0.3.2)
maruku (0.7.3)
method_source (0.9.2)
mime-types (3.4.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2022.0105)
mimemagic (0.3.10)
nokogiri (~> 1)
rake
@@ -193,6 +203,7 @@ GEM
mustermann (1.1.1)
ruby2_keywords (~> 0.0.1)
mysql2 (0.5.3)
netrc (0.11.0)
nio4r (2.5.2)
nokogiri (1.10.8)
mini_portile2 (~> 2.4.0)
@@ -292,6 +303,11 @@ GEM
regexp_parser (1.7.0)
request_store (1.5.0)
rack (>= 1.4)
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
reverse_markdown (1.4.0)
nokogiri
roo (2.8.3)
@@ -418,6 +434,9 @@ GEM
thread_safe (~> 0.1)
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (1.6.1)
web-console (3.7.0)
actionview (>= 5.0)
@@ -459,6 +478,7 @@ DEPENDENCIES
enumerize
faraday (~> 0.15.4)
font-awesome-sass (= 4.7.0)
gitea-client (~> 0.10.2)
grape-entity (~> 0.7.1)
groupdate (~> 4.1.0)
harmonious_dictionary (~> 0.0.1)
@@ -496,8 +516,8 @@ DEPENDENCIES
sass-rails (~> 5.0)
searchkick
selenium-webdriver
sidekiq
sidekiq-cron (~> 1.1)
sidekiq (= 5.2.8)
sidekiq-cron (= 1.2.0)
simple_form
simple_xlsx_reader
sinatra


+ 59
- 27
README.md View File

@@ -34,18 +34,52 @@ GitLink(确实开源)是中国计算机学会(CCF)官方指定的开源
* imagemagick

### 步骤
(1)安装 Rails 必要的一些三方库:
- Mac OS X
```bash
brew install imagemagick ghostscript libxml2 libxslt libiconv
```

- Ubuntu
```bash
sudo apt-get update
sudo apt-get install -y openssl libssl-dev imagemagick git ruby-dev nodejs libmariadb-dev libmysqlclient-dev shared-mime-info libpq-dev libxml2-dev libxslt-dev
sudo DEBIAN_FRONTEND="noninteractive" apt-get install -y tzdata
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
```

(2)安装 Ruby, Rails 运行环境:[如何快速正确的安装 Ruby, Rails 运行环境](https://ruby-china.org/wiki/install_ruby_guide)
```bash
#检验环境是否正确
ruby -v
#ruby 2.4.x ...

gem -v
#3.x.x

bundle -v
#Bundler version 2.x.x

(1)克隆稳定版本
rails -v
#Rails 5.2.x
```

(3)克隆稳定版本
```bash
git clone -b master https://gitlink.org.cn/Gitlink/forgeplus.git
```

(2)安装依赖包
4)安装依赖包
```bash
cd forgeplus && bundle install
#进入目录
cd forgeplus
#删除Gemfile.lock
rm -rf Gemfile.lock
#安装依赖包
bundle install
```

(3)配置初始化文件:进入项目根目录执行以下命令
5)配置初始化文件:进入项目根目录执行以下命令
```bash
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.yml
@@ -53,8 +87,8 @@ touch config/redis.yml
touch config/elasticsearch.yml
```

4)配置数据库:数据库配置信息请查看/config/database.yml文件,项目默认采用mysql数据库, 如需更改,请自行修改配置信息,默认配置如下
```bash
6)配置数据库:数据库配置信息请查看/config/database.yml文件,项目默认采用mysql数据库, 如需更改,请自行修改配置信息,默认配置如下
```yaml
default: &default
adapter: mysql2
host: 127.0.0.1
@@ -63,7 +97,7 @@ default: &default
password: 123456
```

5)配置gitea服务(可选):如需要部署自己的gitea平台,请参考[gitea官方平台文档](https://docs.gitea.io/zh-cn/install-from-binary/)。因目前gitea平台api受限,暂时推荐从forge平台获取[gitea部署文件](https://www.gitlink.org.cn/Gitlink/gitea-binary)进行部署
7)配置gitea服务(可选):如需要部署自己的gitea平台,请参考[gitea官方平台文档](https://docs.gitea.io/zh-cn/install-from-binary/)。因目前gitea平台api受限,暂时推荐从forge平台获取[gitea部署文件](https://www.gitlink.org.cn/Gitlink/gitea-binary)进行部署

- 配置gitea服务步骤:
@@ -71,7 +105,7 @@ default: &default
-- 修改forge平台的 config/configuration.yml中的gitea服务指向地址,如:

```ruby
```yaml
gitea:
access_key_id: 'root'
access_key_secret: 'password'
@@ -79,61 +113,59 @@ gitea:
base_url: '/api/v1'
```

(6)安装redis环境:请自行搜索各平台如何安装部署redis环境

(7)安装imagemagick插件:
- Mac OS X
```bash
brew install imagemagick ghostscript
```
(8)配置/config/database.yml文件(安装redis环境:请自行搜索各平台如何安装部署redis环境)
```yaml
default: &default
url: redis://localhost:6379
db: 1

- Linux
```bash
sudo apt-get install -y imagemagick
production:
<<: *default
url: redis://localhost:6379
```

8)创建数据库:开发环境为development, 生成环境为production
9)创建数据库:开发环境为development, 生成环境为production
```bash
rails db:create RAILS_ENV=development
```

9)导入数据表结构
10)导入数据表结构

```bash
bundle exec rake sync_table_structure:import_csv
```

(10)执行migrate迁移文件:开发环境为development, 生成环境为production
(11)执行migrate迁移文件:开发环境为development, 生成环境为production
```bash
rails db:migrate RAILS_ENV=development
```

(11)clone前端代码:将前端代码克隆到public/react目录下,目录结构应该是: public/react/build
(12)clone前端代码:将前端代码克隆到public/react目录下,目录结构应该是: public/react/build
```bash
git clone -b standalone https://gitlink.org.cn/Gitlink/build.git
```

(12)启动redis(此处以macOS系统为例)
(13)启动redis(此处以macOS系统为例)
```bash
redis-server&
```

(13)启动sidekiq:开发环境为development, 生成环境为production
(14)启动sidekiq:开发环境为development, 生成环境为production
```bash
bundle exec sidekiq -C config/sidekiq.yml -e production -d
```

(14)启动rails服务
(15)启动rails服务
```bash
rails s
```

(15)浏览器访问:在浏览器中输入如下地址访问
(16)浏览器访问:在浏览器中输入如下地址访问
```bash
http://localhost:3000/
```

(16)其他说明:通过页面注册以第一个用户为平台管理员用户
(17)其他说明:通过页面注册以第一个用户为平台管理员用户


## 页面展示


+ 8
- 5
docker-compose.yml View File

@@ -13,7 +13,7 @@ services:
MYSQL_DATABASE: educoder

redis:
image: redis:3.2
image: redis:6.2.5
container_name: redis
restart: always
ports:
@@ -22,14 +22,17 @@ services:
- ./redis_data:/data

web:
image: guange/educoder:latest
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 4000 -b '0.0.0.0'"
image: gitlink-ubuntu18.04:latest
build:
context: ../
dockerfile: Dockerfile
# command: bash -c "rm -f tmp/pids/server.pid && rails s -p 4000 -b '0.0.0.0'"
stdin_open: true
tty: true
volumes:
- .:/app
- .:/home/app/gitlink
ports:
- "4000:4000"
depends_on:
- mysql
- redis
- redis

Loading…
Cancel
Save