Fique a vontade para contribuir!
- Verificando emulators instalados pelo Android Studio
flutter emulators
- Executando Emulator:
flutter emulators --launch "Xaiomi_4GB_API_29_Android_10"
- Verificando ID do emulator conectado
flutter devices
- Executando aplicativo com o ID do device conectado:
flutter run -d "emulator-5554"
- Cria o arquivo package.json -> Guarda as dependências do projeto em package.json
> npm init -y
- Cria primeira dependência. Express é um microframework que trata rodas e views
> npm install express
- Executar a aplicação, criando um servidor.
> node server.js
- Dependencia de desenvolvimento -D, nodemon faz que não precise reiniciar o server cada vez que altera ele, por isso a dependência de desenvolvimento
> npm install -D nodemon
- Criado em package.json uma dependencia que só roda em dev, e criada a tag "dev" em "scripts"
> npm run dev
- Se você tem mais de uma versão do python instalada no Linux e quer ter uma padrão ou precisa ficar mudando, basta utilizar o comando abaixo de acordo com a versão que você deseja:
> sudo ln -sf /usr/bin/python3.6 /usr/bin/python
- Baixa a ultima versão do mongodb
> docker pull mongo
- Configurando container para rodar na porta 27017 (Porta Local : Porta do Container) com o nome 'mongodb'. Veja os parâmetros utilizados abaixo no comando
docker run
:
--name
= nome da container que esta sendo criado.
-p
= redirecionamento de porta, toda a vez que acessar a porta 27017 da minha maquina acessa a porta 27017 mongodb.
-d
= qual imagem se deseja utilizar (No caso baixamos a imagem do mongo).
> docker run --name mongodb -p 27017:27017 -d mongo
- Testando se os container foram criados com sucesso. O comando abaixo retorna todas as imagens do docker, inclusive as que estão paradas:
> docker ps -a
- Para iniciar ou parar um container bastar usar os seguintes comandos respectivamente:
> docker start 'nomecontainer'
> docker stop 'nomecontainer'
- Para testar o mongo, basta ir em https://robomongo.org/ e fazer download do robo3t.
- Instalando dependencia no projeto NodeJs para conectar o mongodb:
> npm install mongoose
- Faz o papel do require em um diretorio em todos os arquivos automaticamente. Muito útil:
> npm install require-dir
- Modulo para paginar registros do mongo:
> npm install mongoose-paginate
- Modulo de autenticação no mongo:
> npm install cors
- no terminal (Windows ou Linux) execute o seguinte comando:
> docker exec -it nomedocontainer bash
- no terminal (Windows ou Linux) execute o seguinte comando:
> docker logs -f --tail=100 nomedocontainer
-f
= fica escutando o arquivo de logs.
--tail=100
= Mostra os 100 últimos registros de logs.
- no terminal (Windows ou Linux) execute o seguinte comando:
> docker volume inspect nomedocontainer
- no terminal (Windows ou Linux) execute o seguinte comando:
- Copiando Diretório Completo
docker cp nomeimagem:/home/repositorioRemoto /home/repositorioLocal
- Copiando Arquivo
docker cp nomeimagem:/home/arquivoRemoto.csv /home/repositorioLocal
https://yarnpkg.com/ - Ferramenta parecida com npm para gestão de pacotes mais veloz.
- Criando uma aplicação reactenative. Também resolve os problemas por navegadores que não suportam novas alterações no versionamento do javascript.
> npm install -g create-react-app
- Da um nome para o projeto criado chamado 'nomeprojeto'. Utilizar sem aspas:
> create-react-app 'nomeprojeto'
- Startar aplicação:
> npm start
- Biblioteca para acessar uma api do react native para o backend:
> yarn add axios
- Adiciona biblioteca para trabalhar com rotas
> yarn add react-router-dom
Configurando postgres com docker, entendendo todos os parâmetros que são passados ao container docker com a imagem do postgres.
> docker run --name rede-postgres -e "POSTGRES_PASSWORD=Postgres2020!" -itd --shm-size=1g -p 5432:5432 -v E:\Users\daniel\apps\postgres\db:/var/lib/postgresql/data -d postgres
- O atributo
name
especifica o nome do container a ser gerado (teste-postgres); - No atributo
POSTGRES_PASSWORD
foi indicada a senha do administrador (para o usuário default postgres); - O atributo
-p
indica a porta (5432) em que se dará a comunicação com o PostgreSQL, a qual será mapeada para a porta default (5432) deste SGBD dentro do container, ou seja, porta externa(localhost) para porta interna (Dentro do container); - Através do atributo
-v
foi criado um volume, especificando assim o diretório no Ubuntu Desktop em que serão gravados os arquivos de dados (E:\Users\daniel\apps\postgres\db); - Quanto ao atributo
-d
, este parâmetro determina que o container em questão será executado como um serviço em background; - Temos indicada ainda a imagem utilizada como base para a geração do container (postgres).
- Acesse o servidor com o usuário root e crie um usuário. Por exemplo usuário deploy.
adduser deploy
- Dando permissão de sudo para o usuário deploy.
usermod -aG sudo deploy
- Configurando sua chave SSH em sua máquina para acessar o servidor linux por meio do terminal linux:
ssh-keygen -t rsa
- (Opcional) Se você quiser acessar um usuário específico sem ter a senha com o modo root, use:
sudo su deploy
Depois de inserir este comando, algumas novas perguntas aparecerão:
Insira o arquivo no qual deseja salvar a chave (/home/user/.ssh/id_rsa):
Geralmente, recomenda-se simplesmente deixá-lo como está (pressione ENTER sem digitar nada) para que o gerador de chaves possa criar o par de chaves no local padrão (neste tutorial eu inseri um nome diferente tut_id para evitar chaves duplicadas, (o dispositivo já tinha um id_rsa chaves geradas). As duas primeiras perguntas que aparecerão:
Introduza a frase de acesso (empty for no passphrase). Então introduza a mesma frase novamente.
Agora por razões de conveniência, eu gosto de deixar os vazios também. Dessa forma, depois de definir as teclas para cima com o seu servidor remoto, você não precisará usar qualquer tipo de senha para o login. Você simplesmente digita o comando ssh user@serverip e ele irá fazer o login enquanto as chaves são corretamente configuradas. Mas se você precisar de mais segurança, digite uma frase-senha nesta seção. Se escolher esta opção, terá de introduzir a palavra-passe sempre que ligar ao dispositivo remoto.
IMPORTANTE! Existem duas chaves criadas aqui (PRIVATE e PUBLIC): tut_id e tut_id.pub (no seu caso, deve ser id_rsa e id_rsa.pub). Tome muito cuidado com o arquivo chamado id_rsa (esta é a chave PRIVATE), tenha apenas em seu dispositivo local e não dê a NINGUÉM. 4. Copiando a chave pública para o servidor remoto Depois de gerar o par de chaves RSA, temos que colocar nossa chave pública no servidor virtual remoto. Há um comando simples que colocará sua chave pública diretamente no arquivo do authorized_keys do servidor remoto (este arquivo mantém todas as chaves públicas:
ssh-copy-id user@serverip
- Configurando permissões (no servidor com o usuário deploy). Na pasta /home/user/.ssh de as permissões da seguinte forma:
chmod 600 authorized_keys
cd ..
chmod 700 .ssh
- Instalando o docker no Linux. Realizar este comando com o usuário deploy.
sudo apt install docker.io
- Dando permissão para o usuário deploy trabalhar com o docker. Realizar este comando com o usuário deploy.
usermod -aG docker deploy
- Criando máquina docker postgresdb com o nome 'database' (Guarde a senha passada e nunca utilize ela)
docker run --name database -e POSTGRES_PASSWORD=senha -p 17863:5432 -v /docker/postgresql:/var/lib/postgresql/data --restart always -d -itd --shm-size=1g postgres
- Acessando máquina docker criada, criando primeiro banco de dados e configurando usuario para o banco.
docker exec -it database /bin/bash
su postgres
psql
CREATE DATABASE empresas;
CREATE USER appemp WITH ENCRYPTED PASSWORD='senha';
GRANT ALL PRIVILEGES ON DATABASE empresas TO appemp;
9.1 Permitindo função 'unaccent' no database Postgres: Acessando a máquina onde o postgres esta instalado, executar o seguinte comando:
psql
\c database //Conectando o database que se deseja instalar a função
CREATE EXTENSION unaccent;
- Se necessário copiar arquivos do servidor para a máquina docker. Duvidas, documentação do docker.
docker cp /home/deploy/file.csv database:/dados/file.csv
- Se necessário copiar arquivos de sua máquina para o servidor:
rsync -avzP -e 'ssh -p22' arquivo.csv deploy@ipservidor:/home/deploy
- Instalando o PM2: O PM2 é um gerenciador de processos para nodejs. Para instalar, basta:
sudo npm install -g pm2
Pegar o endereço bin do node:
npm global bin
Editar o arquivo de inicialização do Linux
vim ~/.bashrc
Adicione o código abaixo na última linha do script:
export PATH="$(npm bin):$PATH"
Rodar a alteração salva
source ~/.bashrc
Abaixo Segue os comandos para rodar para que sempre que o servidor reiniciar, o PM2 reinicie juntamente com o servidor.
pm2 startup ubuntu -u deploy
sudo env PATH=$PATH:/usr/bin pm2 startup ubuntu -u deploy --hp /home/deploy
- Inslando o NGINX O NGINX é um servidor de proxy reverso. Ele serve para redirecionar um endereço para um local ou porta especifico. Para instalar, com o usuário root:
apt install nginx
cd /etc/nginx/sites-available/
Configuração Padrão NGINX
server {
server_name testdeploy.rocketseat.com.br;
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;
}
}
14.Instalando um certificado SSL Gratuito: Acessar o site: https://letsencrypt.org/ e o site https://certbot.eff.org/ em outra aba.
Informe o servidor e o sistema operacional (NGINX e UBUNTU Versão)
- Instalando o redis com docker --appendonly yes: Configuração para redis persistente.
sudo docker run --restart=always -p 6379:6379 -v /docker/redis:/data --name redis -d redis redis-server --requirepass Redis2019! --appendonly yes
- Instalando o apenas o redis-cli no seu Linux
sudo apt-get install redis-tools
- Instalando o wordpress com mysql, via docker-compose:
- Crie o arquivo docker-compose.yml conforme exemplo abaixo:
version: '2'
services:
db:
image: mysql:latest
volumes:
- /home/user/docker/mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
- Salve arquivo, depois, no diretório onde foi criado, digite o comando:
docker-compose up -d
Pronto!!!
https://www.youtube.com/watch?v=ICIz5dE3Xfg
Resolvendo problema com "pq: could not resize shared memory segment. No space left on device" no postgre:
- Se você já tentou de tudo e não conseguiu resolver seu problema com pacotes quebrados no linux, utilize o comando abaixo, removendo os pacotes recursivamente (Do último para o primeiro em termos de dependência).
sudo dpkg --remove --force-remove-reinstreq nome_pacote
sudo apt update
sudo apt install ghostscript
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed_PDF_file.pdf input_PDF_file.pdf
dPDFSETTINGS Description
/prepress (default) Higher quality output (300 dpi) but bigger size
/ebook Medium quality output (150 dpi) with moderate output file size
/screen Lower quality output (72 dpi) but smallest possible output file size
- Instale os seguintes aplicativos.
git https://git-scm.com/download/win
jdk https://www.oracle.com/technetwork/ja...
Visual Studio Code https://code.visualstudio.com/
Visual Studio Code Extensions
git clone git clone <url-do-repositorio-do-projeto>
git clone -b minhaBranch git@github.com:user/myproject.git
git checkout -b <nome-do-seu-branch-local> origin/<nome-do-branch-remoto>
git checkout -b <nome-do-seu-branch-local>
git restore --source DEV -- caminho/arquivo/arquivo.txt
Remova a pasta .git do diretório principal do repostório, em seguida, execute os seguintes comandos.
git init
git remote add origin https://github.com/placidodaniel/REPOSITORIO.git
git add .
git commit -m "first commit"
git branch -M main
git push -u origin main
Caso queriam estudar como fazer uma plublicação de uma aplicação desenvolvida com nodejs, basta seguir a explicação abaixo:
https://devcenter.heroku.com/articles/getting-started-with-nodejs
heroku ps:scale web=0
heroku ps:scale web=1
Para instalar via docker:
mkdir -p /docker/rabbitmq/data
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 --restart=always --hostname rabbitmq-master -v /docker/rabbitmq/data:/var/lib/rabbitmq rabbitmq
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_shovel rabbitmq_shovel_management
Instalando Versão com gerenciador web
docker run -d --name rabbitmq -p 2672:5672 -p 25672:15672 --restart=always --hostname rabbitmq-master -v /docker/rabbitmq/data:/var/lib/rabbitmq rabbitmq:3-management
- Instalando o apache no Ubuntu:
sudo apt install apache2=2.4.29-1ubuntu4.21
sudo a2enmod ssl
sudo a2enmod rewrite
- Instalando o php no ubuntu:
sudo apt -y install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt -y install php7.4 libapache2-mod-php7.4 php7.4-mysql php7.4-xml php7.4-mbstring unzip php7.4-zip
- Instalando o composer no Ubuntu:
curl -sS https://getcomposer.org/installer -o composer-setup.php
HASH=`curl -sS https://composer.github.io/installer.sig`
echo $HASH #conferir se o hash bate com o site do composer, evitando possíveis versões hackeadas ou corrompidas
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer #testar se esta executando o composer via comando.
- Supervisor no Ubuntu:
sudo apt update && sudo apt install supervisor
sudo systemctl status supervisor
- Permissão do projeto Laravel:
sudo addgroup ci web
sudo addgroup www-data web
sudo chmod www-data:web storage/ -R
- Criando um projeto com Laravel no Ubuntu, setando uma versão especifica:
composer create-project --prefer-dist laravel/laravel:^7.0 nome-projeto
- Entendendo o projeto do Laravel.
6.1. Pasta app
é onde tudo acontece;
6.1.1. Pasta middleware
é a funcionalidade que fica entre o backend e o frontend, podem ser feitas validações aqui, como validações de acesso;
6.1.2. Pasta controllers
é onde ficam os controllers do projeto;
6.2. Pasta resources
é onde ficam as views
do projeto;
6.2.1. O blade
é uma ferramenta para escrever o PHP na página do frontend. Facilita muito para utilização por meio de designers escreverem o código HTML junto com as rotinas de desenvolvimento.
- Rodando o projeto em Laravel. Dentro do diretório do projeto, execute o seguinte comando:
php artisan serve
-
Rotas no Laravel: As rotas são configuradas no diretório
routes
. 8.1. Arquivoapi.php
configura as rotas de api, exemplo: APIs do Google. 8.2. Arquivoweb.php
configura as rotas de endereços web. Exemplo: Site de usuários -
Instalando o Laravel 5 - Repository
composer require prettus/l5-repository
sudo apt-get --only-upgrade install google-chrome-stable^
sudo pg_dump --host localhost --port 5863 --username username --format c -d empresas --file /home/deploy/backup_db_29062021.backup
Caso tenham dúvidas ou sugerirem dicas ou correções, sintam-se a vontade em abrir uma ISSUE AQUI. Assim que possível, estarei respondendo as todas as dúvidas que tiverem!