Pasos para configurar LAMP rápidamente en un VPS con Debian.
Para saber la versión actual
lsb_release -a || cat /etc/debian_version
Para actualizar a la última editar /etc/apt/sources.list
con los repos más nuevos (deb http://ftp.us.debian.org/debian stable main contrib non-free
) y ejecutar
apt-get update
apt-get upgrade
apt-get dist-upgrade
apt-get autoremove
Cuando acabe, si se ha actualizado el kernel ejecutar
reboot
Instalar programas típicos
apt-get install joe screen pydf htop atool nano colordiff
Locales
dpkg-reconfigure locales
Teclado
dpkg-reconfigure --priority=low console-data
Motd
cat /dev/null > /etc/motd
Hostname
echo "server" > /etc/hostname
echo "127.0.0.1 localhost" > /etc/hosts
echo "MY_PUBLIC_IP server.example.com server" >> /etc/hosts
hostname -F /etc/hostname
Zona horaria UTC
dpkg-reconfigure tzdata
Screen
joe ~/.screenrc
hardstatus alwayslastline "%{dw} .- %{dB} %-w%50>%{KY}[%t]%{dB}%+w %{dB}%<%>%=%C:%s %d/%m/%Y %{dw} -. "
Configurador de servicios ncurses
apt-get install rcconf
rcconf
Ver programas instalados
dpkg --get-selections
Para ejecutar comandos al iniciar añadirlos a /etc/rc.local
.
Ademas de los alias añadir
PS1='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
touch /root/firewall-on /root/firewall-off
chmod 750 /root/firewall-on /root/firewall-off
Contenido de /root/firewall-on
#!/bin/sh
#=== Flush/Reset ===========================================
iptables -F
iptables -X
iptables -F -t nat
iptables -X -t nat
#=== Defaults ==============================================
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#=== Table FILTER ==========================================
# Allow already established or related traffic
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow traffic from loopback
iptables -A INPUT -i lo -j ACCEPT
# Allow ICMP ping
iptables -A INPUT -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT
# Allow connecting to servers in this computer
iptables -A INPUT -p tcp -m state --state NEW -m multiport --dport http,ssh,mysql -j ACCEPT
#==== Save and show rules ==================================
iptables-save > /etc/iptables.up.rules
echo === FILTER =========================================
echo
iptables -L -n -v
echo
echo ==== NAT ===========================================
echo
iptables -L -n -v -t nat
Contenido /root/firewall-off
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -X
iptables -F -t nat
iptables -X -t nat
echo === FILTER =========================================
echo
iptables -L -n -v
echo
echo ==== NAT ===========================================
echo
iptables -L -n -v -t nat
Para que se ejecute al iniciar
touch /etc/network/if-pre-up.d/iptables
chmod +x /etc/network/if-pre-up.d/iptables
joe /etc/network/if-pre-up.d/iptables
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules
apt-get install mysql-server mysql-client
apt-get install apache2-mpm-prefork
La configuración general del servidor está en /etc/apache2/apache2.conf
y no deberiamos cambiarla.
En caso de querer cambiar la configuración global usar /etc/apache2/conf.d/httpd.conf
.
Es interesante activar muchas de las restricciones de /etc/apache2/conf.d/security
.
Para activar o desactivar módulos de Apache
a2enmod module
a2dismod module
(estos programas en realidad lo único que hacen es crear o eliminar enlaces entre /etc/apache2/mods-enabled/
y /etc/apache2/mods-available/
).
Para activar SSL
a2enmod ssl
a2ensite default-ssl
Para activar mod_rewrite
a2enmod rewrite
Para ver todos los módulos activados
apache2ctl -l
Para crear hosts virtuales añadirlos a /etc/apache2/sites-enabled/
. Para activar o desactivar un host virtual usar
a2ensite site
a2dissite site
(estos programas en realidad lo único que hacen es crear o eliminar enlaces entre /etc/apache2/sites-enabled/
y /etc/apache2/sites-available/
).
apt-get install php5 php5-mysql php5-tidy libapache2-mod-php5
Configurar /etc/php5/apache2/php.ini
y /etc/php5/cli/php.ini
.
El PHP incluido en Debian 7 (wheezy) no incluye el parche Suhosin pero el php.ini trata de cargarlo y por tanto produce errores. Para solucionarlo editar /etc/php5/conf.d/suhosin.ini
y comentar la línea extension=suhosin.so.
Para que los cambio tenga efecto
/etc/init.d/apache2 restart
apt-get install phpmyadmin
Si el paquete ya estaba instalado para configurarlo
dpkg-reconfigure phpmyadmin
En fichero /etc/apache2/conf.d/phpmyadmin.conf
crean un alias para poder acceder añadiendo '/phpmyadmin' a la URL de cualquiera de nuestros vhosts.
Por motivos de seguridad se recomienda borrar /usr/share/phpmyadmin/setup/
.
Para instalar Postfix (SMTP), Courier (POP3 e IMAP) y Squirrelmail (webmail) con dominios/usuarios virtuales mediante MySQL usar este manual.
echo "none /dev/pts devpts defaults 0 0" >> /etc/fstab
rm -rf /dev/ptmx
mknod /dev/ptmx c 5 2
chmod 666 /dev/ptmx
umount /dev/pts
rm -rf /dev/pts
mkdir /dev/pts
mount /dev/pts