Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Entornos LINUX para el desarrollo web

Entornos LINUX para el desarrollo web

El taller de ambientes de desarrollo Web Linux para PHP tiene como objetivo la configuración de un servidor LAMP, y otras herramientas que te permitirán optimizar tu proceso de desarrollo.

igasi

May 28, 2014
Tweet

More Decks by igasi

Other Decks in Programming

Transcript

  1. frecuentemente nos encontramos con la, muchas veces tediosa, tarea de

    configurar nuestro ambiente de desarrollo COMO DESARROLLADORES
  2. Una vez configurado tu ambiente debes saber tareas básicas de

    desarrollo web, desde cosas simples como cambiar los permisos de archivos y carpetas, copiar y pegar, saber donde están los archivos de configuración. Hasta cosas un poco más complejas como configurar un servicio, buscar y reemplazar cadenas de texto en archivos de código y logs, agregar/habilitar extensiones de PHP u otro software que requieras para tu proyecto. El taller de ambientes de desarrollo Web Linux para PHP tiene como objetivo la configuración de un servidor LAMP, y otras herramientas que te permitirán optimizar tu proceso de desarrollo. También aprenderemos las bases para automatizar el proceso de creación de entornos de desarrollo con Vagrant y Puppet. Introducción
  3. Comandos básicos de consola ▪ Sistema de archivos y permisos

    ▪ Compresión de archivos ▪ Búsqueda de cadenas con ack ▪ Uso de SSH, SCP y SFTP 1ª parte
  4. ¿Qué son los comandos? Los comandos, en su mayor parte,

    no son realmente más que pequeños programas incorporados en el sistema operativo. Técnicamente, lo único que diferencia los comandos de los programas (o de los scripts) es que los comandos siempre están en carpetas muy concretas (/bin, /usr/bin, y en el caso de haber iniciado sesión como superusuario, /sbin), así que no es necesario especificar dónde se encuentran. +info http://es.wikibooks.org/wiki/Introducci%C3%B3n_a_Linux/Comandos Comandos básicos de consola
  5. Cuando creamos una partición, todos los discos tienen al menos

    una, especificamos el sistema de archivos que vamos a utilizar. Un sistema de archivos define como se organizan los datos dentro de la partición y las operaciones que podemos realizar sobre ellos. Existen varios tipos de sistemas de archivos, los más comunes: FAT, FAT16, FAT32 NTFS EXT2 > EXT3 > EXT4 ReinserFS y XFS Sistema de archivos
  6. Cierto, todo en un sistema Linux es un archivo, tanto

    el Software como el Hardware. Desde el ratón, pasando por la impresora, el reproductor de DVD, el monitor, un directorio, un subdirectorio y un fichero de texto. Nota*
  7. Sintaxis general: command_name [options] parameter1 parameter2 ... +info http://www.investigacion.frc.utn.edu.ar/labsis/Publicaciones/apunte_linux/mmad.html http://blog.desdelinux.net/mas-de-400-comandos-para-gnulinux-que-deberias-conocer

    http://lafec.df.uba.ar/tutorial_18pag.pdf http://www.debianadmin.com/basic-linux-commands-with-man-pages.html http://en.wikibooks.org/wiki/Linux_Guide/Linux_commands http://www.ubuntuhispano.org/wiki/comandos-sintaxis-gnulinux Los comandos básicos
  8. En Linux hay diversas herramientas para empaquetar y comprimir archivos,

    tomando en cuenta que empaquetar es juntar dos o más archivos en un solo archivo (paquete) y comprimir es tomar este archivo-paquete y comprimirlo a continuación te muestro un resumen de las más comunes, de acuerdo a la extensión que comunmente se acostumbra ponerles. .tar tar cvf file.tar /path_file_or_folder/files_or_folder tar cvf file_or_folder.tar .tar.gz tar zcvf file.tar.gz /path_file_or_folder/files_or_folder tar zcvf file_or_folder.tar.gz +info http://www.linuxtotal.com.mx/index.php?cont=info_admon_004 Compresión de archivos
  9. ack es una herramienta como grep, diseñada para programadores con

    grantes árboles de código fuente heterogénea +info http://rkulla.blogspot.co.at/2011/09/better-than-grep.html http://beyondgrep.com/documentation/ http://www.perlmonks.org/?node_id=586862 Búsquedas de cadenas ack
  10. Los gestores de paquetes más comunes son: • yum (Yellowdog

    Updater, Modified) Basado en RPM ◦ Fedora, CentOS • apt-get (Advanced Packaging Tool) Basado en .deb ◦ Ubuntu, Debian, Elementary OS, Mint • pacman (Package Management System) .pkg.tar.xz ◦ ArchLinux • YAST (Yet Another Setup Tool) ◦ OpenSuse Gestores de paquetes
  11. • Instalar ◦ apt-get install paquete | yum install paquete

    • Actualizar todo ◦ apt-get upgrade | yum update • Eliminar ◦ apt-get remove paquete | yum remove paquete • Buscar ◦ apt-cache search paquete | yum search paquete • Documentación ◦ Pacman ◦ YAST Comandos básicos
  12. • Apache ◦ yum install httpd ◦ apt-get install apache2

    • Iniciar apache ◦ sudo service httpd start ◦ sudo /etc/init.d/apache2 • ArchLinux • OpenSuse Instalación LAMP
  13. • MySQL ◦ yum install mysql-server ◦ apt-get install mysql-server

    • Iniciar ◦ sudo service mysqld start ◦ sudo /etc/init.d/mysql start • Configuración inicial ◦ sudo mysql_secure_installation Instalación LAMP
  14. • PHP ◦ yum install php-mysql ◦ apt-get install php5-mysql

    • Instalar módulos ◦ Buscar ▪ yum search php~ ▪ apt-search php~ ◦ Información ▪ yum info módulo ▪ apt-cache show módulo ◦ Instalar ▪ yum install módulo ▪ apt-get install módulo Instalación LAMP
  15. • Archivos configuración Apache ◦ Fedora, Centos ▪ /etc/httpd/conf/httpd.conf ▪

    /etc/httpd/conf/conf.d/vhosts.conf ◦ Debian, Ubuntu ▪ /etc/apache2/apache2.conf ▪ /etc/apache2/sites-enabled/*.conf Instalación LAMP
  16. • Virtual Hosts ◦ sudo vim /etc/httpd/conf.d/vhosts.conf ◦ sudo cp

    /etc/apache2/sites-available/default /etc/apache2/sites- available/example.com Instalación LAMP
  17. • Ejemplo NameVirtualHost *:80 <VirtualHost *:80> ServerName example.com DocumentRoot /var/www/html/example.com/public

    <Directory "/var/www/html/example.com/public"> Options Indexes MultiViews FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> Instalación LAMP
  18. • sudo vim /etc/hosts ◦ 127.0.0.1 example.com • Reiniciar apache

    ◦ sudo service httpd restart ◦ sudo service apache2 restart ◦ sudo a2ensite example.com Instalación LAMP
  19. Git es un sistema de control de versiones distribuído (scvd)

    escrito en C. Un sistema de control de versiones permite la creación de una historia para una colección de archivos e incluye la funcionalidad para revertir la colección de archivos a otro estado. Otro estado puede significar a otra colección diferente de archivos o contenido diferente de los archivos. +info https://git.wiki.kernel.org/index.php/GitDocumentation ¿Qué es git?
  20. Un repositorio contiene la historia, las diferentes versiones en el

    tiempo y todas los distintos branch y etiquetas. En Git, cada copia del repositorio es un repositorio completo. El repositoro te permite obtener revisiones en tu copia actual. Terminología: Repositorio
  21. Es una línea separada de código con su propia historia.

    Es posible crear un nuevo branch a partir de uno existente y cambiar el còdigo independientemente de los branches. Terminología: Branch
  22. Apunta a un cierto punto en la historia en un

    branch especifico. Con un tag es posible tener un punto en el tiempo al cual siempre es posible revertir el código. Terminología: Tag
  23. Terminología: Commit Esto crea una revisión nueva la cual puede

    ser obtenida después, por ejemplo si quieres ver el código fuente de una versión anterior.
  24. Representa una versión del código fuente. Git identifica revisiones con

    un id SHA1. Los id son de 160 bits de largo y son representados en hexadecimal. La última versión puede ser direccionada a través de “HEAD”, la versión anterior mediante “HEAD-1” y así siguiendo. Terminología: Revisión
  25. # Configura el usuario que será usado por git #

    Obviamente deberías usar tu nombre git config --global user.name "Santiago Basulto" # Lo mismo para el correo electrónico git config --global user.email "[email protected]" # Configurar para que todos los cambios generen un push por defecto git config --global push.default "matching" Configuración inicial
  26. #Posicionamiento en home $ cd ~ # generar llave $

    ssh-keygen # imprimir llave cat ~/.ssh/id_rsa.pub # guardar en archivo cat ~/.ssh/id_rsa.pub > my_key.txt Generación de llaves (keygen)
  27. # clonar de un repositorio remoto git clone [email protected]:vogella/gitbook.git #

    agregar archivos a scv (sistema de control de versiones) git add path_files #agregar una revisión git commit -a -m “Mensaje de la versión” #optener cambios del repositorio remoto git pull origin master #empujar o subir los cambios de código gis push origin master Operaciones básicas
  28. Vim es un editor de textos, en contraposición a lo

    que se conoce como procesador de textos. Vim, se utiliza para editar texto. Lo importante no es el formato del texto sino el texto en sí mismo. Así, Vim se utiliza para programar, para escribir emails, para editar textos, código HTML, ficheros de configuración del sistema, etc. ¿VIM?
  29. Instalación y ejecución de vim Variante Sistema Comando Vim (modo

    texto) Red Had /Centos / Fedora yum install vim-enhanced vim-minimal gVim (modo gráfico) Red Had /Centos / Fedora yum install vim-X11 Vim (modo texto) Ubuntu / Debian / Mint apt-get install vim-nox gVim (modo gráfico) Ubuntu / Debian / Mint apt-get install vim-gtk Para lanzar vim, basta con ejecutar vim en una terminal de texto (lo que creará un buffer vacío en vim), o bien vim fichero (que partirá con el contenido del fichero en el buffer).
  30. Los 2 principales modos de trabajo son modo comando y

    modo inserción. Para selección de texto con los cursores, también disponemos del modo visual. Trabajando con vim
  31. Presionar ESC :w guardar :q salir :wq! forzar guardado y

    salir /string busca una cadena gg posicionarteal principio del archivo G posicionarte al final del archivo :num ir a la linea indicada :set number activar números de línea (:set nonumber desactivar) :sintax onactivar sintaxis +info http://www.sromero.org/wiki/linux/aplicaciones/manual_vim VIM comandos básicos
  32. ▪ snipMate → Implementa en Vim los populares “snippets” del

    editor TextMate. Permite definir en ficheros específicos de cada lenguaje de programación pequeñas porciones de código que serán insertadas en el fichero cuando las “lancemos” mediante palabras clave seguidas del tabulador. Por ejemplo, escribiendo en modo inserción “class” seguido del tabulador, se insertará en el documento el snippet (toda una clase con sus comentarios, métodos de inicio, etc). ▪ taglist → Utiliza ctags para generar una ventana vertical (que podemos mostrar u ocultar con un atajo de teclado) con la estructura del código fuente del proyecto y que permite saltar entre los diferentes métodos, funciones y ficheros de una Extendiendo VIM
  33. ▪ AutoComplPop → Cuando comenzamos a teclear una palabra en

    modo inserción, Vim saca un menu contextual con opciones de autocompletado que podemos seleccionar con los cursores y enter, o descartar al continuar escribiendo. ▪ The NERD tree → Este plugin habilita una ventana vertical (que podemos mostrar u ocultar con un atajo de teclado) con la estructura de directorios actual, para poder movernos entre ellos fácilmente. ▪ Para dotar a VIM con IDE para PHP podeis revisar este post: +info http://joncairns.com/2012/05/using-vim-as-a-php-ide/ Más plug-in para vim