Planejamento da Implantação
Antes de implantar um projeto desenvolvido localmente, é necessário seguir uma série de etapas organizadas:
- Planejamento
- Instalação de dependências
- Implantação do backend
- Implantação do frontend
- Tratamento de problemas
- Testes e validação
Obtenção do Código Fonte
O projeto pode conter versões diferentes, como a versão open source e a versão com funcionalidades expandidas:
- Versão open source: disponível no GitHub - liyupi/yudada, baseado em Vue 3, Spring Boot, Redis, ChatGLM, RxJava e SSE.
- Versão expandida: contém mais funcionalidades no frontend e utiliza Redisson para locks distribuídos e Sharding JDBC para particionamento de bancos de dados.
Escolha da Plataforma de Implantação
- Frontend: Plataforma Vercel – permite implantação gratuita, automação de builds, customização de domínios e rollback rápido.
- Backend: Plataforma de Cloud Hosting do WeChat – permite implantação baseada em containers via Dockerfile, com HTTPS e monitoramento integrado.
Planejamento de Endereços
- Frontend:
https://{vercel-domain} - Backend:
https://{wechat-cloud-domain}/api(porta 8101) - Banco de dados: porta 3306
- Redis: porta 6379
Considerações sobre CORS
Como frontend e backend usam domínios diferantes, ocorre problema de CORS. Apesar do backend ter configuração global para CORS, cookies não são aceitos em requisições cross-origin, o que afeta o login do usuário.
Instalação de Dependências
O projeto requer as seguintes dependências:
- MySQL: Pode ser hospedado via WeChat Cloud ou outro provedor.
- Redis: Necessário apenas na versão expandida (para Redisson).
- Armazenamento de Objetos: Chaves de acesso no painel de controle da Tencent Cloud.
- ChatGLM AI: Chave de API obtida na plataforma Zhipu AI.
Implantação do Backend
Inicialização do Banco de Dados
Conecte-se ao banco de dados remoto via IDE e execute os seguintes arquivos SQL:
create_table.sql– cria as tabelasinit_data.sql– insere dados iniciais
Configuração de Ambiente de Produção
server:
port: 8101
servlet:
session:
cookie:
same-site: none
secure: true
spring:
datasource:
url: jdbc:mysql://{host}/yudada
username: usuario
password: senha
redis:
host: {redis-host}
port: 6379
password: {senha-redis}
Dockerfile para Build
FROM maven:3.8-jdk-8-slim as builder
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn package -DskipTests
CMD ["java","-jar","/app/target/yudada-backend-0.0.1-SNAPSHOT.jar","--spring.profiles.active=prod"]
Desativação do Redis (Opcional)
Se estiver usando a versão expandida mas não quiser usar Redis, faça o seguinte:
- Remova as anotações de
@Configuratione@ConfigurationPropertiesemRedissonConfig. - Remova o uso de Redisson no código.
- Adicione
@SpringBootApplication(exclude = {RedisAutoConfiguration.class})na classe principal.
Implantação no WeChat Cloud
Crie um novo serviço, selecione o repositório GitHub com o código, certifique-se de usar a porta correta (8101) e que o diretório raiz contém o Dockerfile.
Implantação do Frontend
Configuração de Ambiente
Modifique o arquivo request.ts para apontar para o backend:
const myAxios = axios.create({
baseURL: isDev ? "http://localhost:8101" : "https://{backend-domain}",
timeout: 60000,
withCredentials: true,
});
Implantação no Vercel
- Faça upload do projeto no GitHub.
- Conecte-se ao Vercel, selecione o repositório e configure o diretório correto.
- Execute o deploy e aguarde a conclusão.
Tratamento de Problemas
Resolução de CORS e Cookies
Para permitir cookies em requisições cross-origin:
- Defina
SameSite=NoneeSecure=trueno backend. - Atualize a configuração do Spring Boot:
server:
servlet:
session:
cookie:
same-site: none
secure: true