Un programador PHP/web no está completo sin conocimientos de administración de servidores. Cuando buscas un trabajo, seguramente te encontrarás con el requerimiento de conocimientos para configurar un servidor (Linux, Apache, MySQL and PHP). Las posibilidades de que consigas ese trabajo son mayores si conoces sobre servidores.
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilidades sysadmin para PHP devs
1. Independizate de tu departamento IT:
Habilidades sysadmin para PHP devs
Pablo Godel @pgodel - 05/Oct/2013
Buenos Aires,Argentina
Saturday, October 5, 13
2. ¿Quién soy?
⁃ Argentino viviendo en Estados Unidos desde 1999
⁃ Desarrollador PHP & Symfony
⁃ Fundador de la primera lista de discusión de PHP de
habla hispana
- Socio fundador de ServerGrove
⁃ Amante de la parrilla
Saturday, October 5, 13
5. ⁃ Fundada en 2005
⁃ Proveedor de servicios de hosting especializado en PHP,
Symfony, ZendFramework, y otros
⁃ Servidores en Estados Unidos y Europa
⁃ Work with us! jobs@servergrove.com
ServerGrove!
Saturday, October 5, 13
6. La comunidad es nuestra guia
⁃ Muy activos en la comunidad de Open
Source contribuyendo con código o
patrocinando eventos y grupos de
usuarios
Saturday, October 5, 13
40. Otras
- Gentoo
- Slackware
- OpenSuse
- Archlinux
- y muchas más!
http://distrowatch.com/
http://en.wikipedia.org/wiki/Linux_distribution
Distros
Saturday, October 5, 13
41. Diferencias principales
- Archivos de configuración
- Administración de Paquetes
- Manejo de Servicios
- Versiones de software
- Actualizaciones
Distros
Saturday, October 5, 13
42. - Archivos de configuración
CentOS
Ubuntu
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/network/interfaces
Distros
Diferencias principales
Saturday, October 5, 13
43. - Administración de Paquetes
CentOS
Ubuntu
yum install php-cli
apt-get install php5
Distros
Diferencias principales
Saturday, October 5, 13
45. - Administración de Servicios
CentOS
Ubuntu
service restart httpd
chkconfig --list httpd
chkconfig httpd on
service restart apache2
sudo update-rc.d apache2 enable
Distros
Diferencias principales
Saturday, October 5, 13
46. - Versiones de Software
CentOS
Ubuntu
httpd-2.2.3
apache-2.2.17
Distros
Diferencias principales
Saturday, October 5, 13
50. - El que se sienta mejor
- Experiencia previa
- Elegido en el trabajo
- Amigo/compañero de trabajo
con conocimiento
Distros
¿Cuál elegir?
Saturday, October 5, 13
58. Primera Experiencia
#!/bin/bash
Comandos más comunes:
$ ls -l /path/
$ cd /path
$ pwd
$ cat /etc/passwd
$ less /etc/resolv.conf
$ tail -f /var/log/*
$ last
$ lastb
$ vi /etc/hosts
Saturday, October 5, 13
59. Primera Experiencia
#!/bin/bash
Archivos de configuración del usuario:
~/.bash_history
~/.bash_logout
~/.bash_profile
PATH=$PATH:$HOME/bin
export PATH
~/.bashrc
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
Saturday, October 5, 13
67. Desde código fuente
wget http://us2.php.net/get/php-5.5.4.tar.bz2/from/
www.php.net/mirror
tar jxvf php-5.5.4.tar.bz2
cd php-5.5.4
./configure
make && make install
Instalando PHP
Saturday, October 5, 13
72. cd ext/curl
phpize
./configure
make && make install
echo “extension=curl.so” >> php.ini
Compilando una extensión
(dinámicamente)
Saturday, October 5, 13
74. Compilando una extensión
(PECL)
pecl install apc
# or
pecl download apc
tar zxvf APC-3.1.13.tgz
cd APC-3.13
phpize
./configure
make && make install
echo “extension=apc.so” >> php.ini
Saturday, October 5, 13
87. Usuario del Servidor Web
- apache
- nobody
- www-data
- ftp / ssh user (a veces)
Posibles usuarios
¿Problemas con permisos?
Saturday, October 5, 13
88. Solución:
rm -rf app/cache/*
rm -rf app/logs/*
sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache
app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache
app/logs
http://symfony.com/doc/current/book/installation.html
¿Problemas con permisos?
Usuario del Servidor Web
Saturday, October 5, 13
90. Antes de salir al aire
Asegurate que ntpd
este instalado y
corriendo
yum install ntp
chkconfig ntpd on
ntpdate pool.ntp.org
Saturday, October 5, 13
91. - Deshabilitar PHP en lugares específicos
<Location /uploads>
php_admin_flag engine off
</Location>
Antes de salir al aire
Saturday, October 5, 13
92. - Limitar acceso por IP
<Location /admin>
Order Deny,Allow
Deny from all
Allow from 1.2.3.4
</Location>
Antes de salir al aire
Saturday, October 5, 13
93. - Agregar autenticación HTTP
<Location /admin>
Require valid-user
AuthType Basic
AuthName "SG"
AuthUserFile /path/users
</Location>
Antes de salir al aire
Saturday, October 5, 13
97. Effing Package Management
https://github.com/jordansissel/fpm
Crear paquetes para múltiples plataformas (deb, rpm, etc) con gran facilidad.
fpm -s dir -t rpm -n "sfapp" -v 1.0 /var/www/sfapp
fpm -s dir -t deb -a all -n sfapp -v 1.0 /etc/apache2/
conf.d/my.conf /var/www/sfapp
Saturday, October 5, 13
109. Registros DNS
dig -t A google.com
;; ANSWER SECTION:
google.com. 184 IN A 74.125.230.227
google.com. 184 IN A 74.125.230.228
google.com. 184 IN A 74.125.230.229
google.com. 184 IN A 74.125.230.230
google.com. 184 IN A 74.125.230.231
google.com. 184 IN A 74.125.230.232
google.com. 184 IN A 74.125.230.233
google.com. 184 IN A 74.125.230.238
google.com. 184 IN A 74.125.230.224
google.com. 184 IN A 74.125.230.225
google.com. 184 IN A 74.125.230.226
Saturday, October 5, 13
110. dig -t A servergrove.eu @ns1.servergrove.com
;; ANSWER SECTION:
servergrove.eu. 3600 IN A 149.5.47.100
Registros DNS
Saturday, October 5, 13
112. traceroute
traceroute google.com
traceroute to google.com (173.194.37.33), 30 hops max, 40 byte packets
1 2.69-195-222.static.servergrove.com (69.195.222.2) 0.360 ms 0.365 ms 0.432 ms
2 t0-1-0-5.br2.mia.terremark.net (66.165.161.45) 1.558 ms 1.546 ms 1.532 ms
3 core1-1-0-0.mia.net.google.com (198.32.124.133) 0.238 ms 0.224 ms 0.230 ms
4 209.85.253.74 (209.85.253.74) 0.266 ms 0.283 ms 0.312 ms
5 209.85.254.252 (209.85.254.252) 12.764 ms 12.757 ms 12.749 ms
6 64.233.175.92 (64.233.175.92) 14.177 ms 14.257 ms 14.359 ms
7 atl14s07-in-f1.1e100.net (173.194.37.33) 13.653 ms 13.606 ms 13.618 ms
Saturday, October 5, 13
129. Backups
No te olvides de
backupear tu DB!
http://blog.servergrove.com/2012/01/24/backup-your-mysql-
database-using-mysqldump/
Saturday, October 5, 13
130. Reading List
- Automating UNIX and Linux Administration
- Running Linux
- Learning the bash Shell: Unix Shell Programming
Saturday, October 5, 13