### Implementação servidor Nginx + Capistrano + Puma em modo producação ### Envio de chave ( Sua máquina) ```bash ssh-copy-id -i ~/.ssh/mykey xspdo@ip_novo_servidor # Ou # Dentro do servidor adicione vim /home/xspdo/.ssh/autorized_keys # insira sua chave e salve ``` #### Bibliotecas Instalação das bibliotecas necessárias. ```bash sudo apt-get -y install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev libffi-dev nginx mongodb ``` #### Usuario / Chave Adição de usuário e geração da chave ```bash # Crie usuário para deploy sudo adduser deploy sudo su deploy # Chave pública cd ~./ssh ssh-keygen -t rsa eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa # Adicione a chave a uma conta do gitlab com permissão de acesso ao projetos cat ~/.ssh/id_rsa.pub ``` #### Ruby 2.4.4 (RVM) Instalação do ruby versão 2.4.4 através do rvm ```bash gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB \curl -sSL https://get.rvm.io | bash source /home/deploy/.rvm/scripts/rvm rvm install 2.4.4 && rvm use --default 2.4.4 # Adicione o flag para não geração de doc e auto-update do rvm echo "gem: --no-document" > ~/.gemrc echo rvm_autoupdate_flag=2 >> ~/.rvmrc ``` #### NodeJS Instalação nodejs 8.11.1 ( NVM não trabalhou corretamente com capistrano! então siga rigorasamente as etapas abaixo) ```bash curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs npm install yarn -g ``` ### Restore a base Atenção! procedimento deve ser feito apenas no servidor alpha! ```bash # Função para puxar arquivo do Gdriver function gdrive_download () { CONFIRM=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=$1" -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p') wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$CONFIRM&id=$1" -O $2 rm -rf /tmp/cookies.txt } # Download do arquivo gdrive_download 1BzSzp87KfCRfChS72y5WR9eEza-VZ3iQ dump.tar.bz2 # Descompacte tar xjvf dump.tar.bz2 # Restaure a base mongorestore -d decision_makers_development decision_makers_development/ ``` ### Pastas e Arquivos de configurações ```bash # Diretório base capistrano mkdir -vp /var/www/ruby/app_front/shared/{tmp,config/environments} cd var/www/ruby/app_front/shared/ # Puxe as configurações do production scp deploy@app.speedio.com.br:/var/www/ruby/app_front/shared/config/* . cd config/enviroments/ scp deploy@app.speedio.com.br:/var/www/ruby/app_front/shared/config/environments/* . cd - # Modifique mongoid.yml para seu cenârio vim mongoid.yml ``` #### Nginx Configuração do servidor nginx ```bash cd ~ sudo mv /etc/nginx/sites-available/default ~/default_bkp # Arquivo principal nginx sudo cat <<EOF > /etc/nginx/nginx.conf user deploy; worker_processes auto; pid /run/nginx.pid; env PATH; events { worker_connections 768; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 70; types_hash_max_size 2048; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; # include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/speedio.conf; } EOF # Speedio.conf com redicionamento http para https sudo cat <<EOF > /etc/nginx/sites-enabled/speedio.conf upstream app { server unix:///var/www/ruby/app_front/shared/tmp/sockets/puma.sock fail_timeout=0; } server { listen 80 default_server; server_name _; return 301 https://$host$request_uri; } server { listen 443 ssl; sendfile off; server_name alpha.speedio.com.br; ssl_certificate /etc/letsencrypt/live/alpha.speedio.com.br/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/alpha.speedio.com.br/privkey.pem; # managed by Certbot root /example_site/current/public; try_files $uri/index.html $uri @app; location @app { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_read_timeout 30; proxy_connect_timeout 60; proxy_redirect off; proxy_pass http://app; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; } EOF ``` #### LetEncrypt Instalação certbot e adição do certificado ssl no nginx ```bash sudo add-apt-repository ppa:certbot/certbot apt-get update apt-get install python-certbot-nginx sudo certbot --nginx -d alpha.speedio.com.br # troque pelo nome do servidor ``` #### Permissões (IMPORTANTE!) Configure corretamente as permissões dos arquivos para 711 e mude o dono dos arquivos para o usuário `deploy` ```bash chmod -R 711 /var/www/ chown -r deploy:deploy /var/www/ # qualquer outro usuário que tentar acessar irá ter problemas # Exemplos: xspdo@alpha-server-2:/var/www$ ls ls: cannot open directory '.': Permission denied ``` ### Restart o nginx ```bash service nginx restart ``` ### Finalização Na sua máquina entre no diretório do projeto e execute ```bash cap alpha deploy cap alpha puma:restart ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up