6个版本

0.1.1 2022年3月25日
0.1.0 2022年2月4日
0.1.0-beta.32021年11月19日
0.1.0-beta.12021年11月6日

#21 in #链接缩短器

MIT/Apache

75KB
569

Goxidize

链接缩短器。

先决条件

  • Rust 1.56+
  • npm CLI 和 Node.js
  • 任何官方支持的PostgreSQL

构建

在构建项目之前,请创建一个包含有效PostgreSQL URL的 .env 文件,例如以下内容。

DATABASE_URL=postgresql://127.0.0.1:5432/goxidize

然后,运行数据库迁移。

sqlx migrate run

该数据库将被用于 sqlx 在编译时进行检查。

如果您还没有设置数据库,sqlx 将使用 sqlx-data.json 进行检查。要生成此文件,请运行 cargo sqlx prepare -- --libcargo sqlx prepare --check -- --lib。请注意,您仍然需要一个可工作的数据库来运行测试。

开发

Parcel开发服务器支持前端资源的自动重新加载。使用以下文件让Parcel服务器代理请求到后端。

const { createProxyMiddleware } = require("http-proxy-middleware");

module.exports = function (app) {
  app.use(
      createProxyMiddleware(["/**", "!/", "!**/*.html", "!**/*.js", "!*.css", "!**/*.css", "!**/*.map"], {
        target: "https://127.0.0.1:8000/",
      })
  );
};

运行以下命令以启动服务器。

cargo run # use cargo watch for auto-reloading
# then on a separate terminal, run
# `npm install` if you have not installed the dependencies, and
npm start

生产环境

npm run build

配置

使用YAML文件进行配置。这会影响程序运行时的行为。

# configuration.yml
port: 8000
database:
  url: postgresql://127.0.0.1:5432
  name: goxidize
debug: true

部署

以下提供使用 docker-compose 进行部署的示例。

# docker-compose.yml
version: '3'
services:
  db:
    image: postgres:14
    restart: always
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      POSTGRES_DB: goxidize
      LANG: C.UTF-8
    volumes:
      - dbdata:/var/lib/postgresql/data
  goxidize:
    image: ghcr.io/caizixian/goxidize:master
    restart: always
    depends_on:
      - "db"
    ports:
      - "8000:8000"
    # Using environment variables is another option 
    volumes:
      - "./goxidize_config.yml:/goxidize/configuration.yml"

volumes:
  dbdata:
# goxidize_config.yml
host: "0.0.0.0"
port: 8000
database:
  host: db
  port: 5432
  username: postgres
  password: password
  name: goxidize
debug: false

许可证

除非另有说明(例如,在个别文件中),项目采用Apache许可证第2版 LICENSE-APACHEhttp://www.apache.org/licenses/LICENSE-2.0 或MIT许可证 LICENSE-MIThttp://opensource.org/licenses/MIT,由您选择。

依赖项

~36–50MB
~1M SLoC