Executando verificação de segurança...
6

Deploy de website ReactJs em servidor Apache (Hostgator) com Vite

Por que raios fazer o deploy no Apache/Hostgator?

Pra ver se dá certo. Simples assim.

E dá certo? Lógico que dá certo, mas precisa de algumas coisinhas para poder funcionar corretamente.

Vamos do começo

É um site simples, mas que ficará em uma subpasta. Por exemplo:
https://meu-dominio.com.br/site2

Definido isto, as chances são grandes de você usar um Router (react-router-dom, TanStack Router, etc). Eu uso muito o react-router-dom, portanto, neste caso não é diferente.

Configurações

configurando o package.json

Como o website ficará em uma subpasta, é preciso adicionar a tag homepage ao seu arquivo package.json, caso contrário, o build assumirá que seu projeto está hospedado na raiz do servidor.

{
  ...
  "homepage": "https://meu-dominio.com.br/site2/",
  ...
  }

Configurando o BrowserRouter

Agora é a vez do BrowserRouter, com a propriedade basename:

import { BrowserRouter } from 'react-router-dom';
import { Router } from './routes/Router';

export const App = () => {
  return (
    <BrowserRouter basename='/site2'>
      <Router />
    </BrowserRouter>
  )
}

Configurando o vite.config.js

Sem este passo, não importa o que você faça, ao rodar o vite build, o arquivo index.html gerado, ficará com as referências de link erradas. Portanto é crucial esta configuração.

Tudo o que você precisa fazer é adicionar a opção base no arquivo vite.config.js:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

// https://vitejs.dev/config/
export default defineConfig({
  base: '/site2/',
  plugins: [react()],
})

Ou através da flag vite build --base=/my/public/path/.

Bem difícil, heim?

Por fim, só rodar o build. No meu caso, uso o pnpm:
pnpm run build

Configurando o Apache

Certo. Mas para tudo isto funcionar online, ainda é preciso configurar o Apache, através do arquivo .htaccess.

É preciso ter este arquivo na pasta que o index.html irá ficar. Portanto, crie o arquivo na pasta, no meu caso, /site2, com o seguinte conteúdo:

RewriteEngine On
RewriteBase /site2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [L]

Finalizando

Por fim, faça o upload dos arquivos da pasta dist do seu projeto para a sua pasta no Apache. Não se esqueça dos arquivos na pasta assets.

Considerações

Espero que seja útil para alguém, nem que seja só para teste também.

Posteriormente, quero testar uma plataforma completa. Na verdade duas:

  • utilizando o Express e operações CRUD com PHP
  • e outra utilizando recursos do Firebase (auth, firestore, etc)

Se alguém aqui já testou isto, por favor, compartilha.

Obrigado por ler e sejam gentis nos comentários 😝

Carregando publicação patrocinada...
2

Minha hospedagem compartilhada na hostgator até me liberou acesso ssh, mas não conseguia instalar npm pra rodar o vite e compilar o tailwind, entre uma outra série de dificuldades. Compartilhada nunca mais, montei meu próprio servidor de hospedagem/email em uma vps com aapanel. Só me arrependo de não ter feito isso muito tempo antes. Meus projetinhos em Laravel estão lá lindos e formosos.

1

Cara, um tempo atrás até tinha pensado nesta hospedagem compartilhada, mas não tinha muitas referências. Bom ter o teu comentário.
Como você montou o teu servidor?

4

Adquiri uma VPS da Contabo (baratinha, 5,50 dólares por mês +- 30 reais) e hoje inclusive não está cobrando o setup fee, o dia ideal para comprar, o link pra vps é esse aqui. Escolhi o bom e velho Ubuntu 22, instalei o Aapanel como gerenciador, estilo cpanel. Dentro do Aapanel, instalei as versões no npm e php que uso, instalei mail server, mysql e postgres e escolhi o lamp server com apache2. Tem que dar uma fuçada, mas tem vários tutoriais recentes no youtube sobre o aapanel.

1
1

Ah um tempo atrás eu tive um problema pra subir um site pra um cliente, e foi justamente nessa configuração do vite, funciona que é uma maravilha, espero que ajude mais alguém também.

0