Implantação de produção básica (Ubuntu 18.04)
Todas as instruções abaixo assumem que você não está correndo como raiz, uma vez que dará um erro no marionete. Então vamos começar a criar um novo usuário e conceder privilégios sudo a ele:
adduser deploy
usermod -aG sudo deploy
Agora podemos fazer login com este novo usuário:
su deploy
Você precisará de dois subdomínios encaminhando para o seu VPS ip para seguir estas instruções. Usaremos para frontend e para retrodear no exemplo a
seguir.myapp.mydomain.comapi.mydomain.com
Atualize todos os pacotes do sistema:
sudo apt update && sudo apt upgrade
Instalar o nó e confirmar que o comando do nó está disponível:
curl -fsSL
https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v
npm -v
Instale o docker e adicione o usuário ao grupo docker:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL
https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64]
https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
sudo apt install docker-ce
sudo systemctl status docker
sudo usermod -Ag docker ${user}
su - ${user}
criar banco de dados mysql usando docker: nota: alterar mysql_database, mysql_password, mysql_user e mysql_root_password.
Docker run --name whaticketdb -e MYSQL_ROOT_PASSWORD=strongpassword -e MYSQL_DATABASE=whaticket -e MYSQL_USER=whaticket -e MYSQL_PASSWORD=whaticket --restart always -p 3306:3306 -d mariadb:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_bin
Clone este repositório:
cd ~
git clone
https://github.com/canove/whaticket whaticket
Crie arquivo backend .env e preencha com detalhes:
cp whaticket/backend/.env.example whaticket/backend/.env
nano whaticket/backend/.env
NODE_ENV=
Backend_url=
https://api.mydomain.com #use https here, we will add ssl latter
frontend_url=
https://myapp.Mydomain.com #use https here, we will add ssl latter, cors related!
proxy_port=443 #use nginx reverse proxy port here, we will configure it latter
port=8080
db_host=localhost
db_dialect=
db_user=
db_pass=
db_name=
jwt_secret=3123123213123
jwt_refresh_secret=75756756756
instale dependências de marionetes:
sudo apt-get install -y libgbm-dev wget unzip fontconfig locales gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils
Instale dependências de backend, construa aplicativo, execute migrações e sementes:
cd whaticket/backend
npm install
npm run build
npx sequelize db:migrate
npx sequelize db:seed:all
Comece com, você deve ver: no console. Bata na saí
da.npm startServer started on
port...CTRL + C
Instale pm2 com sudo, e comece a voltar com ele:
sudo npm install -g pm2
pm2 start dist/
server.js --name whaticket-backend
Faça o pm2 iniciar o afeter de partida automática:
pm2 startup ubuntu -u `YOUR_USERNAME`
Copie a última linha saída do comando previus e execute-a, é algo como:
sudo env path=\$path:/usr/bin pm2 startup ubuntu -u your_username --hp /home/your_usernam
vá para a pasta frontend e instale dependências:
cd ../Frontend
npm install
Editar arquivo .env e preenchê-lo com seu endereço backend, ele deve se parecer com este:
REACT_APP_BACKEND_URL =
https://api.mydomain.com/
Criar aplicativo frontend:
npm run build
Inicie frontend com pm2 e salve a lista de processos pm2 para iniciar automaticamente após a reinicialização:
pm2 start
server.js --name whaticket-frontend
pm2 save
Para verificar se está funcionando, corra, deve parecer:pm2 list
deploy@ubuntu-whats:~$ pm2 list
┌─────┬─────────────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ . │ Status │ cpu │ mem │ user │ watching │
├─────┼─────────────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 1 │ whaticket-frontend │ default │ 0.1.0 │ fork │ 179249 │ 12D │ 0 │ online │ 0.3% │ 50.2mb │ deploy │ disabled │
│ 6 │ whaticket-backend │ default │ 1.0.0 │ fork │ 179253 │ 12D │ 15 │ online │ 0.3% │ 118.5mb │ deploy │ disabled │
└─────┴─────────────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
Instale nginx:
sudo apt install nginx
Remover o site padrão nginx:
sudo rm /etc/nginx/sites-enabled/default
Crie um novo site nginx para o aplicativo frontend:
sudo nano /etc/nginx/sites-available/whaticket-frontend
Edite e preencha-as com essas informações, mudando para a sua equivalente
a:server_namemyapp.mydomain.com
server {
server_name
myapp.mydomain.com;
location / {
proxy_pass http://127.0.0.1:3333;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
}
Crie outro para retroceder a api, alterando para o seu equivalente a , e para o seu url de servidor de backend backend local:server_nameapi.mydomain.comproxy_pass
sudo cp /etc/nginx/sites-available/whaticket-frontend /etc/nginx/sites-available/whaticket-backend
sudo nano /etc/nginx/sites-available/whaticket-backend
server {
server_name
api.mydomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
......
}
Crie um link simbólico para sites enalbe nginx:
sudo ln -s /etc/nginx/sites-available/whaticket-frontend /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/whaticket-backend /etc/nginx/sites-enabled
Por padrão, nginx limitar o tamanho do corpo a 1MB, o que não é suficiente para alguns uploads de mídia. Vamos alterá-lo para 20MB adicionando uma nova linha para confundir arquivo:
sudo nano /etc/nginx/
nginx.conf
...
http {
...
Client_max_body_size 20m; # handle bigger uploads
}
teste a configuração nginx e o servidor de reinicialização:
sudo nginx -t
sudo service nginx restart
agora, habilite o ssl (https) em seus sites para usar todos os recursos do aplicativo, como notificações e envio de mensagens de áudio. Uma maneira fácil de fazer isso é usando Certbot:
Instale o certbot:
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install python-certbot-nginx
Habilite o SSL no nginx (Preencha / Aceite todas as informações solicitadas):
sudo certbot --nginx
Prazo de Entrega: Não estabelecido