One place for hosting & domains

      Utilizar

      Como Instalar e Utilizar o Docker no Debian 9


      Uma versão anterior deste tutorial foi escrita por finid.

      Introdução

      O Docker é um aplicativo que simplifica o processo de gerenciamento de processos de aplicação em containers. Os containers deixam você executar suas aplicações em processos isolados de recurso. Eles são semelhantes a máquinas virtuais, mas os containers são mais portáveis, mais fáceis de usar e mais dependentes do sistema operacional do host.

      Para uma introdução detalhada aos diferentes componentes de um container Docker, verifique O Ecossistema Docker: Uma Introdução aos Componentes Comuns.

      Neste tutorial, você irá instalar e usar a Edição da Comunidade do Docker (CE) no Debian 9. Você irá instalar o Docker, trabalhar com containers e imagens e enviar uma imagem para um Repositório do Docker.

      Pré-requisitos

      Para seguir este tutorial, você precisará do seguinte:

      Passo 1 — Instalando o Docker

      O pacote de instalação do Docker disponível no repositório oficial do Debian pode não ser a versão mais recente. Para garantir que tenhamos a versão mais recente, iremos instalar o Docker do repositório oficial do Docker. Para fazer isso, adicionaremos uma nova fonte de pacote, adicionaremos a chave GPG do Docker para garantir que os downloads sejam válidos, e então instalaremos o pacote.

      Primeiro, atualize sua lista existente de pacotes:

      Em seguida, instale alguns pacotes pré-requisito que deixam o apt usar pacotes pelo HTTPS:

      • sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

      Então, adicione a chave GPG para o repositório oficial do Docker no seu sistema:

      • curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

      Adicione o repositório do Docker às fontes do APT:

      • sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

      Em seguida, atualize o banco de dados do pacote com os pacotes do Docker do recém adicionado repositório:

      Certifique-se de que você está prestes a instalar do repositório do Docker ao invés do repositório padrão do Debian:

      • apt-cache policy docker-ce

      Você verá um resultado assim, embora o número da versão para o Docker possa ser diferente:

      Output of apt-cache policy docker-ce

      docker-ce:
        Installed: (none)
        Candidate: 18.06.1~ce~3-0~debian
        Version table:
           18.06.1~ce~3-0~debian 500
              500 https://download.docker.com/linux/debian stretch/stable amd64 Packages
      

      Observe que o docker-ce não está instalado, mas o candidato para a instalação é do repositório do Docker para o Debian 9 (stretch).

      Finalmente, instale o Docker:

      • sudo apt install docker-ce

      O Docker deve agora ser instalado, o daemon iniciado e o processo habilitado a iniciar no boot. Verifique se ele está funcionando:

      • sudo systemctl status docker

      O resultado deve ser similar ao mostrado a seguir, mostrando que o serviço está ativo e funcionando:

      Output

      ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2018-07-05 15:08:39 UTC; 2min 55s ago Docs: https://docs.docker.com Main PID: 21319 (dockerd) CGroup: /system.slice/docker.service ├─21319 /usr/bin/dockerd -H fd:// └─21326 docker-containerd --config /var/run/docker/containerd/containerd.toml

      Instalando o Docker agora não dá apenas o serviço do Docker (daemon), mas também o utilitário de linha de comando docker, ou o cliente do Docker. Vamos explorar como usar o comando docker mais tarde neste tutorial.

      Passo 2 — Executando o Comando Docker Sem Sudo (Opcional)

      Por padrão, o comando docker só pode ser executado pelo usuário root ou por um usuário no grupo docker, que é criado automaticamente no processo de instalação do Docker. Se você tentar executar o comando docker sem prefixar ele com o sudo ou sem estar no grupo docker, você terá um resultado como este:

      Output

      docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'.

      Se você quiser evitar digitar sudo sempre que você executar o comando docker, adicione seu nome de usuário no grupo docker:

      • sudo usermod -aG docker ${USER}

      Para inscrever o novo membro ao grupo, saia do servidor e logue novamente, ou digite o seguinte:

      Você será solicitado a digitar a senha do seu usuário para continuar.

      Confirme que seu usuário agora está adicionado ao grupo docker digitando:

      Output

      sammy sudo docker

      Se você precisar adicionar um usuário ao grupo docker com o qual você não está logado, declare esse nome de usuário explicitamente usando:

      • sudo usermod -aG docker username

      O resto deste artigo supõe que você esteja executando o comando docker como um usuário no grupo docker. Se você escolher não fazer isso, por favor preencha os comandos com sudo.

      Vamos explorar o comando docker a seguir.

      Passo 3 — Usando o Comando Docker

      Usar o docker consiste em passar a ele uma cadeia de opções e comandos seguidos de argumentos. A sintaxe toma esta forma:

      • docker [option] [command] [arguments]

      Para ver todos os subcomandos disponíveis, digite:

      No Docker 18, a lista completa de subcomandos disponíveis inclui:

      Output

      attach Attach local standard input, output, and error streams to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes to files or directories on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on Docker objects kill Kill one or more running containers load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container pause Pause all processes within one or more containers port List port mappings or a specific mapping for the container ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart one or more containers rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive (streamed to STDOUT by default) search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop one or more running containers tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE top Display the running processes of a container unpause Unpause all processes within one or more containers update Update configuration of one or more containers version Show the Docker version information wait Block until one or more containers stop, then print their exit codes

      Para visualizar as opções disponíveis para um comando específico, digite:

      • docker docker-subcommand --help

      Para visualizar informações de sistema sobre o Docker, use:

      Vamos explorar alguns desses comandos. Começaremos trabalhando com imagens.

      Os containers do Docker são construídos com imagens do Docker. Por padrão, o Docker puxa essas imagens do Docker Hub, um registro Docker gerido pelo Docker, a empresa por trás do projeto Docker. Qualquer um pode hospedar suas imagens do Docker no Docker Hub, então a maioria dos aplicativos e distribuições do Linux que você precisará terá imagens hospedadas lá.

      Para verificar se você pode acessar e baixar imagens do Docker Hub, digite:

      O resultado irá indicar que o Docker está funcionando corretamente:

      Output

      Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 9db2ca6ccae0: Pull complete Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...

      O Docker inicialmente não conseguiu encontrar a imagem hello-world localmente, então ele baixou a imagem do Docker Hub, que é o repositório padrão. Uma vez baixada a imagem, o Docker criou um container da imagem e executou o aplicativo no container, mostrando a mensagem.

      Você pode procurar imagens disponíveis no Docker Hub usando o comando docker com o subcomando search. Por exemplo, para procurar a imagem do Ubuntu, digite:

      O script irá vasculhar o Docker Hub e devolverá uma lista de todas as imagens cujo nome correspondam ao string de pesquisa. Neste caso, o resultado será similar a este:

      Output

      NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Ubuntu is a Debian-based Linux operating sys… 8320 [OK] dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 214 [OK] rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 170 [OK] consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 128 [OK] ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 95 [OK] ubuntu-upstart Upstart is an event-based replacement for th… 88 [OK] neurodebian NeuroDebian provides neuroscience research s… 53 [OK] 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 43 [OK] ubuntu-debootstrap debootstrap --variant=minbase --components=m… 39 [OK] nuagebec/ubuntu Simple always updated Ubuntu docker images w… 23 [OK] tutum/ubuntu Simple Ubuntu docker images with SSH access 18 i386/ubuntu Ubuntu is a Debian-based Linux operating sys… 13 1and1internet/ubuntu-16-apache-php-7.0 ubuntu-16-apache-php-7.0 12 [OK] ppc64le/ubuntu Ubuntu is a Debian-based Linux operating sys… 12 eclipse/ubuntu_jdk8 Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, … 6 [OK] darksheer/ubuntu Base Ubuntu Image -- Updated hourly 4 [OK] codenvy/ubuntu_jdk8 Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, … 4 [OK] 1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4 ubuntu-16-nginx-php-5.6-wordpress-4 3 [OK] pivotaldata/ubuntu A quick freshening-up of the base Ubuntu doc… 2 1and1internet/ubuntu-16-sshd ubuntu-16-sshd 1 [OK] ossobv/ubuntu Custom ubuntu image from scratch (based on o… 0 smartentry/ubuntu ubuntu with smartentry 0 [OK] 1and1internet/ubuntu-16-healthcheck ubuntu-16-healthcheck 0 [OK] pivotaldata/ubuntu-gpdb-dev Ubuntu images for GPDB development 0 paasmule/bosh-tools-ubuntu Ubuntu based bosh-cli 0 [OK] ...

      Na coluna OFFICIAL, o OK indica uma imagem construída e suportada pela empresa por trás do projeto. Uma vez que você tenha identificado a imagem que você gostaria de usar, você pode baixá-la para seu computador usando o subcomando pull.

      Execute o comando a seguir para baixar a imagem oficial ubuntu no seu computador:

      Você verá o seguinte resultado:

      Output

      Using default tag: latest latest: Pulling from library/ubuntu 6b98dfc16071: Pull complete 4001a1209541: Pull complete 6319fc68c576: Pull complete b24603670dc3: Pull complete 97f170c87c6f: Pull complete Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d Status: Downloaded newer image for ubuntu:latest

      Após o download de uma imagem, você pode então executar um container usando a imagem baixada com o subcomando run. Como você viu com o exemplo hello-world, caso uma imagem não tenha sido baixada quando o docker for executado com o subcomando run, o cliente do Docker irá primeiro baixar a imagem e então executar um container usando ele.

      Para ver as imagens que foram baixadas no seu computador, digite:

      O resultado deve ser semelhante ao seguinte:

      Output

      REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 16508e5c265d 13 days ago 84.1MB hello-world latest 2cb0d9787c4d 7 weeks ago 1.85kB

      Como você verá mais tarde neste tutorial, imagens que você usa para executar containers podem ser modificadas e usadas para gerar novas imagens, que podem então ser enviadas (*pushed *é o termo técnico) para o Docker Hub ou outros registros do Docker.

      Vamos ver como executar containers mais detalhadamente.

      Passo 5 — Executando um Container do Docker

      O container hello-world que você executou no passo anterior é um exemplo de um container que executa e finaliza após emitir uma mensagem de teste. Os containers podem ser muito mais úteis do que isso, e eles podem ser interativos. Afinal, eles são semelhantes a máquinas virtuais, apenas mais fáceis de usar.

      Como um exemplo, vamos executar um container usando a última imagem do Ubuntu. A combinação dos switches -i e -t dá a você um acesso de shell interativo no container:

      Seu prompt de comando deve mudar para refletir o fato de você agora estar trabalhando dentro do container e deve assumir esta forma:

      Output

      root@d9b100f2f636:/#

      Observe o id do container no prompt de comando. Neste exemplo, é d9b100f2f636. Você precisará do ID do container mais tarde para identificar o container quando você quiser removê-lo.

      Agora você pode executar qualquer comando dentro do container. Por exemplo, vamos atualizar o banco de dados do pacote dentro do container. Você não precisa prefixar nenhum comando com sudo, porque você está operando dentro do container como o usuário root:

      Então, instale qualquer aplicativo nele. Vamos instalar o Node.js:

      Isso instala o Node.js no container do repositório oficial do Ubuntu. Quando a instalação terminar, verifique se o Node.js está instalado:

      Você verá o número da versão exibido no seu terminal:

      Output

      v8.10.0

      Qualquer alteração que você faça dentro do container apenas se aplica a esse container.

      Para sair do container, digite exit no prompt.

      Vamos ver como gerenciar os containers no nosso sistema a seguir.

      Passo 6 — Gerenciando os Containers do Docker

      Após usar o Docker por um tempo, você terá muitos containers ativos (executando) e inativos no seu computador. Para visualizar os ativos, use:

      Você verá um resultado similar ao seguinte:

      Output

      CONTAINER ID IMAGE COMMAND CREATED

      Neste tutorial, você iniciou dois containers; um da imagem hello-world e outro da imagem ubuntu. Ambos os containers já não estão funcionando, mas eles ainda existem no seu sistema.

      Para ver todos os containers — ativos e inativos, execute docker ps com o switch -a:

      Você verá um resultado similar a este:

      d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Exited (0) 8 minutes ago                           sharp_volhard
      01c950718166        hello-world         "/hello"            About an hour ago   Exited (0) About an hour ago                       festive_williams
      
      

      Para ver o último container que você criou, passe o switch -l:

      • CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      • d9b100f2f636 ubuntu "/bin/bash" About an hour ago Exited (0) 10 minutes ago sharp_volhard

      Para iniciar um container parado, use o docker start, seguido do ID do container ou nome do container. Vamos iniciar o container baseado no Ubuntu com o ID do d9b100f2f636:

      • docker start d9b100f2f636

      O container irá iniciar e você pode usar o docker ps para ver seu status:

      CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
      d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Up 8 seconds                            sharp_volhard
      
      

      Para parar um container em execução, use o docker stop, seguido do ID ou nome do container. Desta vez, usaremos o nome que o Docker atribuiu ao container, que é sharp_volhard:

      • docker stop sharp_volhard

      Uma vez que você tenha decidido que você já não precisa mais de um container, remova ele com o comando docker rm, novamente usando o ID do container ou o nome. Use o comando docker ps -a para encontrar o ID ou nome do container associado à imagem hello-world e remova-o.

      • docker rm festive_williams

      Você pode iniciar um novo container e dar a ele um nome usando o switch --name. Você também pode usar o switch --rm para criar um container que remove a si mesmo quando ele é parado. Veja o comando docker run help para obter mais informações sobre essas e outras opções.

      Os containers podem ser transformados em imagens que você pode usar para criar novos containers. Vamos ver como isso funciona.

      Passo 7 —Enviando Alterações em um Container para uma Imagem do Docker

      Quando você iniciar uma imagem do Docker, você pode criar, modificar e deletar arquivos assim como você pode com uma máquina virtual. As alterações que você faz apenas se aplicarão a esse container. Você pode iniciá-lo e pará-lo, mas uma vez que você o destruir com o comando docker rm, as alterações serão perdidas para sempre.

      Esta seção mostra como salvar o estado de um container como uma nova imagem do Docker.

      Após instalar o Node.js dentro do container do Ubuntu, você agora tem um container executando uma imagem, mas o container é diferente da imagem que você usou para criá-lo. Mas você pode querer reutilizar este container Node.js como a base para novas imagens mais tarde.

      Então, envie as alterações a uma nova instância de imagem do Docker usando o comando a seguir.

      • docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

      O switch *-m *é para a mensagem de envio que ajuda você e outros a saber quais as alterações que você fez, enquanto *-a *é usado para especificar o autor. O container_id é aquele que você anotou anteriormente no tutorial quando você iniciou a sessão interativa do Docker. A menos que você tenha criado repositórios adicionais no Docker Hub, repository é normalmente seu nome de usuário do Docker Hub.

      Por exemplo, para o usuário sammy, com o ID do container d9b100f2f636, o comando seria:

      • docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

      Quando você *envia *uma imagem, a nova imagem é salva localmente no seu computador. Mais tarde neste tutorial, você aprenderá como empurrar uma imagem para um registro do Docker para que outros possam acessá-la.

      Listando as imagens do Docker novamente irá mostrar a nova imagem, além da antiga da qual ela foi derivada:

      Você verá um resultado como esse:

      Output

      REPOSITORY TAG IMAGE ID CREATED SIZE sammy/ubuntu-nodejs latest 7c1f35226ca6 7 seconds ago 179MB ubuntu latest 113a43faa138 4 weeks ago 81.2MB hello-world latest e38bc07ac18e 2 months ago 1.85kB

      Neste exemplo, o ubuntu-nodejs é a nova imagem, que foi derivada da imagem ubuntu existente do Docker Hub. A diferença de tamanho reflete as alterações que foram feitas. E neste exemplo, a mudança foi que o NodeJS foi instalado. Então, da próxima vez que você precisar executar um container usando o Ubuntu com o NodeJS pré-instalado, você pode apenas usar a nova imagem.

      Você também pode construir Imagens de um Dockerfile, que permite a você automatizar a instalação de software em uma nova imagem. No entanto, isso está fora do âmbito deste tutorial.

      Agora vamos compartilhar a nova imagem com outros para que eles possam criar containers a partir dela.

      Passo 8 — Empurrando Imagens do Docker para um Repositório do Docker

      O próximo passo lógico após criar uma nova imagem de uma imagem existente é compartilhá-la com alguns de seus amigos, todo o mundo no Docker Hub, ou outro registro do Docker que você tenha acesso. Para empurrar uma imagem para o Docker Hub ou qualquer outro registro do Docker, você deve ter uma conta lá.

      Esta seção mostra como empurrar uma imagem do Docker para o Docker Hub. Para aprender a criar seu próprio registro privado do Docker, verifique Como Configurar um Registro Privado do Docker no Ubuntu 14.04.

      Para empurrar sua imagem, primeiro logue no Docker Hub.

      • docker login -u docker-registry-username

      Você será solicitado a autenticar-se usando sua senha do Docker Hub. Se você especificou a senha correta, a autenticação deve ser bem sucedida.

      Nota: Se seu nome de usuário de registro do Docker for diferente do nome de usuário local que você usou para criar a imagem, você terá que anexar sua imagem com seu nome de usuário de registro. Para o exemplo dado no último passo, você digitaria:

      • docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs

      Então você pode empurrar sua própria imagem usando:

      • docker push docker-registry-username/docker-image-name

      Para empurrar a imagem ubuntu-nodejs no repositório sammy, o comando seria:

      • docker push sammy/ubuntu-nodejs

      O processo pode levar algum tempo para se completar uma vez que ele envia as imagens, mas quando finalizado, o resultado se parecerá com este:

      Output

      The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Pushed 5f70bf18a086: Pushed a3b5c80a4eba: Pushed 7f18b442972b: Pushed 3ce512daaf78: Pushed 7aae4540b42d: Pushed ...

      Após empurrar uma imagem para um registro, ela deve estar listada no painel da sua conta, como mostrado na imagem abaixo.

      New Docker image listing on Docker Hub

      Se uma tentativa de empurrar resultar em um erro deste tipo, então você provavelmente não logou:

      Output

      The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Preparing 5f70bf18a086: Preparing a3b5c80a4eba: Preparing 7f18b442972b: Preparing 3ce512daaf78: Preparing 7aae4540b42d: Waiting unauthorized: authentication required

      Logue com docker login e repita a tentativa de empurrar. Então verifique se ela existe na sua página de repositório do Docker Hub.

      Você agora pode usar o docker pull sammy/ubuntu-nodejs para puxar a imagem para uma nova máquina e usá-la para executar um novo container.

      Conclusão

      Neste tutorial você instalou o Docker, trabalhou com imagens e containers, e empurrou uma imagem modificada para o Docker Hub. Agora que você sabe o básico, explore os outros tutoriais do Docker na Comunidade DigitalOcean.



      Source link

      Como Instalar e Utilizar o PostgreSQL no Ubuntu 18.04


      Introdução

      Sistemas de gerenciamento de banco de dados relacionados são um componente fundamental de muitos sites e aplicativos. Eles fornecem uma maneira estruturada de armazenar, organizar e acessar informações.

      O PostgreSQLou Postgres é um sistema de gerenciamento de banco de dados relacionados que fornece uma implementação da linguagem estruturada SQL. É uma escolha popular para muitos projetos pequenos e grandes e tem a vantagem de ser compatível com padrões e ter muitas funcionalidades avançadas como transações confiáveis e simultaneidade sem bloqueios de leitura.

      Este guia demonstra como instalar o Postgres em uma instância Ubuntu 18.04 VPS e também fornece instruções para a administração básica de banco de dados.

      Pré-requisitos

      Para acompanhar este tutorial, você precisará de um servidor Ubuntu 18.04 que tenha sido configurado seguindo nosso guia Configuração Inicial de Servidor para Ubuntu 18.04[. Após concluir este tutorial pré-requisito, seu servidor deve ter um usuário não-root com permissões sudo e um firewall básico.

      Passo 1 — Instalando o PostgreSQL

      Os repositórios padrão do Ubuntu contêm pacotes Postgres, para que você possa instalar esses usando o sistema de empacotamento apt.

      Uma vez que essa é a primeira vez que você usa o apt nesta sessão, atualize seu índice de pacotes local. Então, instale o pacote Postgres jutamente com um pacote -contrib que adiciona alguns serviços e funcionalidade adicionais:

      • sudo apt update
      • sudo apt install postgresql postgresql-contrib

      Agora que o software está instalado, podemos examinar como ele funciona e como ele pode ser diferente de sistemas similares de gerenciamento de banco de dados que você possa ter usado.

      Passo 2 — Usando as Roles PostgreSQL e Bancos de Dados

      Por padrão, o Postgres usa um conceito chamado “roles” para lidar com a autenticação e autorização. Essas são, de certa forma, semelhantes a contas regulares estilo Unix, mas o Postgres não distingue entre os usuários e os grupos e, ao invés disso, prefere o termo “role” mais flexível.

      Após a instalação, o Postgres é configurado para usar a autenticação ident, o que significa que ele associa os roles com uma conta do sistema Unix/Linux que combine. Se um role existe no Postgres, um nome de usuário Unix/Linux com o mesmo nome é capaz de fazer login como aquele role.

      O procedimento de instalação criou uma conta de usuário chamada postgres que está associada ao role padrão do Postgres. Para utilizar o Postgres, você pode logar naquela conta.

      Existem algumas maneiras de utilizar essa conta para acessar o Postgres.

      Mudando para a Conta postgres

      Mude para a conta postgres no seu servidor digitando:

      Agora você pode acessar um prompt Postgres imediatamente digitando:

      Isso irá logar você no prompt do PostgreSQL, e daqui você está livre para interagir com o sistema de gerenciamento de banco de dados imediatamente.

      Saia do prompt do PostgreSQL digitando:

      Isso irá trazer você de volta ao prompt de comando do Linux postgres.

      Acessando um Prompt do Postgres Sem Mudar de Contas

      Você também pode executar o comando que você quiser com a conta postgres diretamente com o sudo.

      Por exemplo, no último exemplo, você foi instruído a ir ao prompt do Postgres trocando primeiramente para o usuário postgres e então executando o psql para abrir o prompt do Postgres. Você poderia fazer isso em um passo executando o comando único psql como usuário postgres com sudo, dessa forma:

      Isso irá logar você diretamente no Postgres sem o shell bash intermediário.

      Novamente, você pode sair da sessão interativa Postgres digitando:

      Muitas formas de uso requerem mais de um role Postgres. Leia para aprender a configurá-los.

      Passo 3 — Criando um Novo Role

      Atualmente, você tem o role postgres configurado no banco de dados. Você pode criar novos roles na linha de comando com o comando createrole. A flag --interactive irá te solicitar o nome do novo role e também perguntar se ele deveria ter permissões de superusuário.

      Se você estiver logado com a conta postgres, você pode criar um novo usuário digitando:

      Se, ao invés disso, você preferir usar o sudo para cada comando sem mudar da sua conta usual, digite:

      • sudo -u postgres createuser --interactive

      O script irá te solicitar algumas escolhas e, com base nas suas respostas, executar os comandos corretos do Postgres para criar um usuário nas suas especificações.

      Output

      Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y

      Você pode ter mais controle passando algumas bandeiras adicionais. Verifique as opções olhando para a página man:

      Sua instalação do Postgres agora tem um novo usuário, mas você ainda não adicionou nenhum banco de dados. A próxima seção descreve este processo.

      Passo 4 — Criando um Novo Banco de Dados

      Outra suposição que o sistema de autenticação do Postgres faz por padrão é que para qualquer role usado para logar, esse role terá um banco de dados com o mesmo nome que ele pode acessar.

      Isso significa que, se o usuário que você criou na última seção for chamado sammy, esse role irá tentar se conectar a um banco de dados que também seja chamado “sammy” por padrão. Você pode criar o banco de dados apropriado com o comando createdb.

      Se você estiver logado com a conta postgres, você digitaria algo como:

      Se, ao invés disso, você preferir usar o sudo para cada comando sem mudar da sua conta usual, você digitaria:

      • sudo -u postgres createdb sammy

      Esta flexibilidade proporciona vários caminhos para a criação de bancos de dados conforme necessário.

      Passo 5 — Abrindo um Prompt do Postgres com o Novo Role

      Para logar com a autenticação baseada no ident, você precisará de um usuário Linux com o mesmo nome que seu role e banco de dados do Postgres.

      Se você não tiver um usuário do Linux que combine disponível, você pode criar um com o comando adduser. Você terá que fazer isso através da sua conta não-root com privilégios sudo (ou seja, não logado como o usuário postgres):

      Uma vez que essa nova conta estiver disponível, você pode ou mudar e se conectar ao banco de dados digitando:

      Ou você pode fazer isso em linha:

      Este comando irá logar você automaticamente, supondo que todos os componentes tenham sido configurados corretamente.

      Se você quiser que seu usuário se conecte a um banco de dados diferente, você pode fazer isso especificando o banco de dados dessa forma:

      Uma vez logado, você pode verificar sua informação de conexão atual digitando:

      Output

      You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

      Isso é útil se você estiver se conectando a bancos de dados fora do padrão ou com usuários que não sejam padrão.

      Passo 6 — Criando e Deletando Tabelas

      Agora que você sabe se conectar ao sistema de banco de dados do PostgreSQL, você pode aprender algumas tarefas básicas de gerenciamento do Postgres.

      Primeiro, crie uma tabela para armazenar alguns dados. Como um exemplo, uma tabela que descreva alguns equipamentos do playground.

      A sintaxe básica para este comando é a seguinte:

      CREATE TABLE table_name (
          column_name1 col_type (field_length) column_constraints,
          column_name2 col_type (field_length),
          column_name3 col_type (field_length)
      );
      

      Como você pode ver, esses comandos dão à tabela um nome e então definem as colunas, além do tipo de coluna e o comprimento máximo dos dados do campo. Você também pode adicionar de modo opcional tabelas de restrições para cada coluna.

      Você pode aprender mais sobre como criar e gerenciar tabelas no Postgres aqui.

      Para fins demonstrativos, crie uma tabela simples como essa:

      CREATE TABLE playground (
          equip_id serial PRIMARY KEY,
          type varchar (50) NOT NULL,
          color varchar (25) NOT NULL,
          location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
          install_date date
      );
      

      Estes comandos criarão uma tabela que inventaria o equipamento do playground. Isso começa com um ID do equipamento que é do tipo serial. Este tipo de dado é um número inteiro de incremento automático. Você também deu a essa coluna a restrição da primary key, que significa que os valores devem ser únicos e não nulos.

      Para duas das colunas (equip_id e install_date), os comandos não especificam um comprimento de campo. Isso é porque alguns tipos de coluna não requerem um comprimento específico porque o comprimento é implícito pelo tipo.

      Os dois comandos seguintes criam colunas para o type e color do equipamento respectivamente, cada um dos quais não pode ser vazio. O comando seguinte a esses cria uma coluna location e cria uma restrição que exige que o valor seja um de oito valores possíveis. O último comando cria uma coluna de data que grava a data na qual você instalou o equipamento.

      Você pode ver sua nova tabela digitando:

      Output

      List of relations Schema | Name | Type | Owner --------+-------------------------+----------+------- public | playground | table | sammy public | playground_equip_id_seq | sequence | sammy (2 rows)

      Sua tabela do playground está aqui, mas também há algo chamado playground_equip_id_seq que é do tipo sequence. Esta é uma representação do tipo serial que você deu à sua coluna equip_id Isso mantém o rastro do próximo número na sequência e é criado automaticamente para colunas deste tipo.

      Se você quiser ver apenas a tabela sem a sequência, você pode digitar:

      Output

      List of relations Schema | Name | Type | Owner --------+------------+-------+------- public | playground | table | sammy (1 row)

      Passo 7 — Adicionando, Consultando e Deletando Dados em uma Tabela

      Agora que você tem uma tabela, você pode inserir alguns dados nela.

      Como um exemplo, adicione um slide e um swing chamando a tabela na qual você queira adicionar, nomeando as colunas e então fornecendo dados para cada coluna, desta forma:

      • INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
      • INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');

      Você deve tomar cuidado ao introduzir os dados para evitar alguns problemas comuns. Por exemplo, não envolva os nomes das colunas em aspas, mas os valores de coluna que você digitar precisam de aspas.

      Outra coisa para ficar atento é não digitar um valor para a coluna equip_id. Isso acontece porque isso é gerado automaticamente sempre que uma nova linha na tabela seja criada.

      Recupere a informação que você adicionou digitando:

      • SELECT * FROM playground;

      Output

      equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 1 | slide | blue | south | 2017-04-28 2 | swing | yellow | northwest | 2018-08-16 (2 rows)

      Aqui, você pode ver que seu equip_id foi preenchido com sucesso e que todos os seus outros dados foram organizados corretamente.

      Se o slide no playground falhar e você tiver que removê-lo, você também pode remover a linha da sua tabela digitando:

      • DELETE FROM playground WHERE type = 'slide';

      Consulte a tabela novamente:

      • SELECT * FROM playground;

      Output

      equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 2 | swing | yellow | northwest | 2018-08-16 (1 row)

      Você percebe que seu slide já não é uma parte da tabela.

      Passo 8 — Adicionando e Deletando Colunas de uma Tabela

      Após criar uma tabela, você pode modificá-la para adicionar ou remover colunas com facilidade. Adicione uma coluna para mostrar a última visita de manutenção para cada peça de equipamento digitando:

      • ALTER TABLE playground ADD last_maint date;

      Se você ver sua informação da tabela novamente, você verá que a nova coluna foi adicionada (mas nenhum dado foi adicionado):

      • SELECT * FROM playground;

      Output

      equip_id | type | color | location | install_date | last_maint ----------+-------+--------+-----------+--------------+------------ 2 | swing | yellow | northwest | 2018-08-16 | (1 row)

      Deletar uma coluna é também bastante simples. Se você descobrir que sua equipe de trabalho usa uma ferramenta separada para acompanhar o histórico de manutenção, você pode deletar da coluna digitando:

      • ALTER TABLE playground DROP last_maint;

      Isso apaga a coluna last_maint e quaisquer valores encontrados nela, mas deixa todos os outros dados intactos.

      Passo 9 — Atualizando os Dados em uma Tabela

      Até agora, você aprendeu a adicionar registros a uma tabela e como deletá-los, mas este tutorial ainda não cobriu como modificar os itens existentes.

      Você pode atualizar os valores de um item existente consultando o registro que você quiser e definindo a coluna para o valor que você deseja usar. Você pode consultar o registro “swing” (isto irá corresponder a cada swing na sua tabela) e alterar sua cor para “vermelho”. Isso pode ser útil se você der ao conjunto swing um trabalho de pintura:

      • UPDATE playground SET color = 'red' WHERE type = 'swing';

      Você pode verificar se a operação foi bem sucedida consultando os dados novamente:

      • SELECT * FROM playground;

      Output

      equip_id | type | color | location | install_date ----------+-------+-------+-----------+-------------- 2 | swing | red | northwest | 2010-08-16 (1 row)

      Como você pode ver, seu slide agora está registrado como sendo vermelho.

      Conclusão

      Você agora está com o PostgreSQL configurado no seu servidor Ubuntu 18.04. No entanto, ainda há muito mais a aprender com o Postgres. Aqui estão mais alguns guias que cobrem como usar o Postgres:



      Source link

      Cómo instalar y utilizar Composer en Ubuntu 18.04


      Brennen Bearnes escribió una versión anterior de este tutorial.

      Introducción

      Composer es una herramienta popular de administración de dependencias para PHP, creada principalmente para facilitar la instalación y actualización de dependencias de proyectos. Comprueba los demás paquetes de los que depende un proyecto específico y los instala utilizando las versiones apropiadas según los requisitos del proyecto.

      A través de este tutorial, instalará Composer y dará los primeros pasos con la herramienta en un sistema Ubuntu 18.04.

      Requisitos previos

      Para completar este tutorial, necesitará lo siguiente:

      Paso 1: Instalación de las dependencias

      Antes de descargar e instalar Composer, debe asegurarse de que su servidor tenga instaladas todas las dependencias.

      Primero, actualice la caché del administrador de paquetes ejecutando lo siguiente:

      A continuación, instalaremos las dependencias. Necesitaremos curl para descargar Composer y php-cli para instalarlo y ejecutarlo. El paquete php-mbstring es necesario para proporcionar funciones para una biblioteca que utilizaremos. Composer utiliza git para descargar las dependencias del proyecto y unzip para extraer paquetes comprimidos. Es posible instalar todo con el siguiente comando:

      • sudo apt install curl php-cli php-mbstring git unzip

      Con los requisitos previos cumplidos, ya podemos instalar Composer.

      Paso 2: Descarga e instalación de Composer

      Composer ofrece un instalador escrito en PHP. Lo descargaremos, comprobaremos que no esté dañado y lo utilizaremos para instalar Composer.

      Asegúrese de posicionarse en su directorio de inicio y recupere el instalador usando curl:

      • cd ~
      • curl -sS https://getcomposer.org/installer -o composer-setup.php

      A continuación, verifique que el instalador coincida con el hash SHA-384 para el instalador más reciente encontrado en la página Composer Public Keys/Signatures. Copie el hash de esa página y almacénelo como variable de shell:

      • HASH=544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061

      Asegúrese de sustituir el hash más reciente por el valor resaltado.

      Ahora, ejecute el siguiente script PHP para verificar que el script de instalación se ejecute de forma segura:

      • php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

      Verá el siguiente resultado:

      Output

      Installer verified
      

      Si ve el mensaje Installer corrupt, tendrá que revisar nuevamente si utilizó el hash correcto y volver a descargar el script de instalación. Luego, ejecute el comando para verificar el instalador nuevamente. Una vez que cuente con un instalador verificado, podrá continuar.

      Para instalar composer de manera global, utilice el siguiente comando que lo descargará e instalará en todo el sistema como un comando llamado composer, en /usr/local/bin:

      • sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

      Verá el siguiente resultado:

      Output

      All settings correct for using Composer Downloading... Composer (version 1.6.5) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer

      Para comprobar su instalación, ejecute lo siguiente:

      Verá que en este resultado se muestran la versión y los argumentos de Composer.

      Output

      ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ / __ `__ / __ / __ / ___/ _ / ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / ____/____/_/ /_/ /_/ .___/____/____/___/_/ /_/ Composer version 1.6.5 2018-05-04 11:44:59 Usage: command [options] [arguments] Options: -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --profile Display timing and memory usage information --no-plugins Whether to disable plugins. -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug . . .

      Esto comprueba que Composer se instaló con éxito y está disponible en todo su sistema.

      Nota: Si prefiere tener ejecutables de Composer separados para cada proyecto que aloje en este servidor, puede instalarlos localmente para cada proyecto. Los usuarios de NPM estarán familiarizados con este enfoque. Este método también es útil cuando su usuario del sistema no tiene permisos para instalar software en todo el sistema.

      Para ello, utilice el comando php composer-setup.php. Esto generará un archivo composer.phar en su directorio actual, que puede ejecutarse con el ./composer.phar command.

      Ahora, veamos el uso de Composer para administrar dependencias.

      Paso 3: Uso de Composer en un proyecto de PHP

      Los proyectos de PHP a menudo dependen de bibliotecas externas y la administración de estas dependencias y sus versiones puede ser complicada. Composer soluciona esto haciendo un seguimiento de sus dependencias y facilitando a otros su instalación.

      Para utilizar Composer en su proyecto, necesitará un archivo composer.json. El archivo composer.json indica a Composer las dependencias que debe descargar para su proyecto y las versiones de cada paquete cuya instalación está permitida. Esto es extremadamente importante para preservar la uniformidad de su proyecto y evitar la instalación de versiones inestables que podrían causar problemas de compatibilidad con versiones anteriores.

      No necesita crear este archivo de forma manual; hay muchas probabilidades de cometer errores de sintaxis al hacerlo. Composer genera de forma automática el archivo composer.json cuando añade una dependencia a su proyecto usando el comando require. Puede añadir dependencias adicionales de la misma manera, sin la necesidad de editar manualmente este archivo.

      Para usar Composer en la instalación de un paquete como dependencia en un proyecto, se deben seguir estos pasos:

      • Identifique el tipo de biblioteca que requiere la aplicación.
      • Busque una biblioteca de código abierto adecuada  en Packagist.org, el repositorio oficial de paquetes de Composer.
      • Elija el paquete que desea usar.
      • Ejecute composer require para incluir la dependencia en el archivo composer.json e instale el paquete.

      Probemos esto con una aplicación de demostración.

      El objetivo de esta aplicación es transformar una oración en una cadena compatible con un URL; un slug. Esto se utiliza comúnmente para convertir los títulos de páginas en rutas URL (como la parte final de la URL de este tutorial).

      Comencemos creando un directorio para nuestro proyecto. Lo llamaremos slugify:

      • cd ~
      • mkdir slugify
      • cd slugify

      Ahora será el momento de buscar en Packagist.org un paquete que puede servirnos para generar slugs. Si busca el término “slug” en Packagist, obtendrá un resultado similar a este:

      Búsqueda en Packagist: easy-slug/easy-slug, muffin/slug, ddd/slug, zelenin/slug, webcastle/slug, anomaly/slug-field_type

      Observará dos números en el lado derecho de cada paquete de la lista. El número de la parte superior representa la cantidad de veces que se instaló el paquete y el de la parte inferior la cantidad de veces que se destacó un paquete en GitHub. Puede reordenar los resultados de la búsqueda conforme a estos números (busque los dos íconos del lado derecho de la barra de búsqueda). En general, los paquetes con más instalaciones y más estrellas suelen ser más estables, ya que muchas personas los utilizan. También es importante revisar la descripción del paquete para asegurarse de que se adecue a lo que usted requiere.

      Necesitamos un convertidor de string a slug simple. Conforme a los resultados de la búsqueda, el paquete cocur/slugify parece ser una buena opción al ofrecer una cantidad razonable de instalaciones y estrellas. (El paquete está un poco más abajo de lo que se muestra en la captura de pantalla de la página).

      Los paquetes en Packagist tienen un nombre de proveedor y un nombre de paquete. Cada paquete tiene un identificador único (un espacio de nombres) en el mismo formato que GitHub utiliza para sus repositorios: vendor/package. La biblioteca que deseamos instalar utiliza el espacio de nombres cocur/slugif. Necesita el espacio de nombres para solicitar el paquete en su proyecto.

      Ahora que conoce exactamente los paquetes que desea instalar, ejecute composer require para incluirlo como una dependencia y generar también el archivo composer.json para el proyecto:

      • composer require cocur/slugify

      Verá este resultado mientras Composer descarga la dependencia:

      Output

      Using version ^3.1 for cocur/slugify ./composer.json has been created Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Installing cocur/slugify (v3.1): Downloading (100%) Writing lock file Generating autoload files

      Como se observa en el resultado, Composer automáticamente decidió la versión del paquete que utilizará. Si revisa el directorio de su proyecto, este contendrá dos nuevos archivos, composer.json y composer.lock, y un directorio vendor:

      Output

      total 12 -rw-rw-r-- 1 sammy sammy 59 Jul 11 16:40 composer.json -rw-rw-r-- 1 sammy sammy 2934 Jul 11 16:40 composer.lock drwxrwxr-x 4 sammy sammy 4096 Jul 11 16:40 vendor

      El archivo composer.lock se utiliza para almacenar información sobre las versiones de cada paquete que están instaladas y garantizar que se utilicen las mismas versiones si otra persona clona su proyecto e instala sus dependencias. En el directorio vendor se ubican las dependencias del proyecto. La carpeta vendor no requiere confirmación en el control de versión; solo debe incluir los archivos composer.json y composer.lock.

      Al instalar un proyecto que ya contenga un archivo composer.json, ejecute composer install para poder descargar las dependencias del proyecto.

      Veamos rápidamente las restricciones de versiones. Si verifica los contenidos de su archivo composer.json, verá algo parecido a lo siguiente:

      Output

      { "require": { "cocur/slugify": "^3.1" } } sam

      Posiblemente observe el carácter especial ^ antes del número de versión en composer.json. Con el fin de proporcionar flexibilidad y a su vez mantener la estabilidad de su proyecto, Composer admite diferentes restricciones y formatos para definir la versión requerida del paquete. El operador del símbolo de intercalación (^) utilizado por el archivo de generación automática composer.json es el operador recomendado para una máxima interoperabilidad, seguido del control de versión semántico. En este caso, define la versión 3.1 como la versión de compatibilidad mínima y permite actualizaciones a cualquier versión futura inferior a la 4.0.

      En general, no tendrá que alterar las restricciones de versión de su archivo composer.json. Sin embargo, en algunas situaciones posiblemente deba editar las restricciones manualmente; por ejemplo, cuando se lance una nueva versión importante de su biblioteca requerida y desee actualizarla, o cuando la biblioteca que desee utilizar no siga el control de versión semántico.

      Aquí se muestran algunos ejemplos para que comprenda mejor el funcionamiento de las restricciones de versiones de Composer:

      Restricción Significado Versiones de ejemplos permitidas
      ^1.0 >= 1.0 < 2.0 1.0, 1.2.3, 1.9.9
      ^1.1.0 >= 1.1.0 < 2.0 1.1.0, 1.5.6, 1.9.9
      ~1.0 >= 1.0 < 2.0.0 1.0, 1.4.1, 1.9.9
      ~1.0.0 >= 1.0.0 < 1.1 1.0.0, 1.0.4, 1.0.9
      1.2.1 1.2.1 1.2.1
      1.* >= 1.0 < 2.0 1.0.0, 1.4.5, 1.9.9
      1.2. * >= 1.2 < 1.3 1.2.0, 1.2.3, 1.2.9

      Para acceder a una perspectiva más detallada de las restricciones de versiones de Composer, consulte la documentación oficial.

      A continuación, veamos la forma de cargar las dependencias automáticamente con Composer.

      Paso 4: Inclusión del script de carga automática

      Dado que PHP no carga automáticamente las clases, Composer proporciona un script de carga automática que puede incluir en su proyecto para acceder a la carga automática de forma gratuita. Esto facilita mucho el trabajo con sus dependencias.

      Lo único que debe hacer es incluir el archivo vendor/autoload.php en sus scripts de PHP antes de cualquier instancia de clase. Composer genera este archivo de manera automática al añadir su primera dependencia.

      Vamos a probarlo en nuestra aplicación. Cree el archivo test.php y ábralo en su editor de texto:

      Añada el siguiente código que agrega el archivo vendor/autoload.php, carga la dependencia cocur/slugify y la utiliza para crear un slug:

      test.php

      <?php
      require __DIR__ . '/vendor/autoload.php';
      
      use CocurSlugifySlugify;
      
      $slugify = new Slugify();
      
      echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');
      

      Guarde el archivo y cierre el editor.

      Ahora ejecute el script:

      El resultado de esto es hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it.

      Las dependencias necesitan actualizaciones cuando se lanzan nuevas versiones. Veamos la forma de manejar eso.

      Paso 5: Actualización de dependencias del proyecto

      Cuando desee actualizar las dependencias de proyecto a versiones más recientes, ejecute el comando update:

      Con esto, se buscarán versiones más recientes de las bibliotecas que necesitó en su proyecto. Si se encuentra una versión más reciente y es compatible con la restricción de versión definida en el archivo composer.json, Composer sustituirá la versión anterior instalada. El archivo composer.lock se actualizará para reflejar estos cambios.

      También puede actualizar una o más bibliotecas determinadas especificándolas de la siguiente manera:

      • composer update vendor/package vendor2/package2

      Después de actualizar sus dependencias, asegúrese de verificar sus archivos composer.json y composer.lock para que otros puedan instalar estas versiones más recientes.

      Conclusión

      Composer es una herramienta poderosa que todo desarrollador de PHP debe tener entre sus recursos. A través de este tutorial, instaló Composer y lo utilizó en un proyecto sencillo. De esta manera, sabrá instalar y actualizar dependencias.

      Más allá de proporcionar una alternativa sencilla y segura para gestionar las dependencias de los proyectos, también establece una nueva norma de hecho para intercambiar y descubrir paquetes PHP creados por la comunidad.



      Source link