Acceder a WordPress en localhost desde tu red WIFI

Uno de los problemas a los que nos enfrentamos al desarrollar en responsive es que en local es difícil acceder a nuestro localhost desde móviles y tablets. Aunque con unos sencillos pasos podremos acceder sin problemas.

Primero tendremos que modificar nuestro vhosts de Apache para que acepte peticiones desde la red, añadiendo lo siguiente:

<VirtualHost [IP de nuestro ordenador en la red]>
    ServerAdmin [IP de nuestro ordenador en la red]
    DocumentRoot "[path a nuestro WP]"
    ServerName [IP de nuestro ordenador en la red]
    LogLevel debug
    ErrorLog "logs/wordpress-error.log"
    CustomLog "logs/wordpress-access.log" combined
</VirtualHost>

A continuación tenemos que modificar el wp-config.php para decirle el WP_SITEURL y el WP_HOME que variará si se accede desde nuestro ordenador o desde un móvil o tablet.

// Hay que ver si la IP desde la que accedemos es del rango de nuestra red que normalmente suele ser 192.168.1.x
if(preg_match('#^192\.168\.1\.\d+#', $_SERVER['HTTP_HOST'])) {
  define('WP_HOME', 'http://'.$_SERVER['HTTP_HOST'].'/');
  define('WP_SITEURL', 'http://'.$_SERVER['HTTP_HOST'].'/');
}

Y ya por último nos creamos un plugin que sustituirá toda referencia a la URL de local por la correspondiente que se encuentre en el contenido de los posts y que activaremos cuando trabajemos en local, o bien lo metemos en el functions.php, pero esto sería guarrear el código:

if(preg_match('#^192\.168\.1\.\d+#', $_SERVER['REMOTE_ADDR'])) {
  function replace_domain($buffer) {
    // modify buffer here, and then return the updated code
    return str_replace('http://localhost/', 'http://'.$_SERVER['HTTP_HOST'].'/', $buffer);
  }
  
  function buffer_start() { ob_start("replace_domain"); }
  
  function buffer_end() { ob_end_flush(); }
  
  add_action('wp', 'buffer_start');
  add_action('wp_footer', 'buffer_end');
}

Tienes el plugin disponible en mi repositorio de GitHub

Utilizar websockets con Apache

Creo que los websockets tienen futuro, aunque aún está un poco complicado el meterle mano a la hora de desarrollar. Para quienes quieran usarlo en sus proyectos junto a Apache tan solo tendrán que permitir ejecutar Python en Apache e instalar pywebshocket.

Primero es necesario indicar que Apache reconozca Python en nuestro virtual host:

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On

Despues instalar pywebshocket:

sudo python setup.py build
sudo python setup.py install

Y por último indicar en el httpd.conf añadirlo al Apache:

PythonPath "sys.path+['/usr/local/lib/python2.6/dist-packages/mod_pywebsocket']"
PythonOption mod_pywebsocket.handler_root /home/travis/Desktop/websock_handlers
PythonHeaderParserHandler mod_pywebsocket.headerparserhandler

How to set up apache to serve html5 websocket applications with pywebsocket

|

Redirigir iPhone, Blackberry y Palm desde .htaccess

Sencillo truco que nos puede ayudar a redireccionar nuestra web a la versión móvil cuando nos visite un usuario desde un iPhone, una Blackberry o una Palm

RewriteCond %{HTTP_USER_AGENT} ^.*iPhone.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]
RewriteCond %{HTTP_USER_AGENT} ^.*BlackBerry.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]
RewriteCond %{HTTP_USER_AGENT} ^.*Palm.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]

Redirect iPhone, Blackberry, & Palm Requests With .htaccess

Vía / @jlantunez

Sitellite: CMS en PHP, MySQL y Apache

Sitellite es un CMS realizado en PHP que accede a MySQL en Apache que ha sido probado en IE6+, Firefox 2+ y Safari 3, y que ofrece las siguientes características:

  • Multilenguaje
  • Editor WYSIWYG
  • Auto-save por si error en el navegador
  • Seguridad contra spam o ataques contra la sesión
  • Workflow de mensajes
  • Opciones SEO
  • y mucho más

Sitellite

Manual y ejemplos de mod_security

mod_security es un módulo de Apache que nos permitirá añadir seguridad a nuestro servidor web, detectando y previendo ataques. Para los que necesitemos usarlo, nos vendrá muy bien esta serie de tutoriales:

  • mod_security + mod_rewrite
  • Evitar spam en los campos POST de los formularios
  • Activar mod_security en DreamHost
  • Descativar mod_security para una determinada IP
  • Descativar mod_security con autorización en htaccess
  • Ejemplo de configuración para DreamHost
  • Bloquear spam
  • Forzar espera de ms en conexiones
  • Permitir ciertos REQUEST_METHODS
  • y más

mod_security Guide and Examples of use in .htaccess

mod_qos: prioridades para peticiones en Apache

QoS (calidad del servicio) se trata mecanismos de control para proveer diferentes prioridades a diferentes usuarios, aplicaciones y conexiones, realmente es más gestión de recursos que calidad del servicio. Cuando queremos limitar el uso de Apache y dar prioridades a diferentes peticiones podemos usar mod_qos.

Ofrece mecanismos para gestionar:

  • Número máximo de peticiones concurrentes a una URL o a un dominio virtual.
  • Limitación del ancho de banda, ya sea por número de peticiones por segundo o kilobytes por segundo.
  • Posibilidad de detectar usuarios especiales que no sufriran las restricciones o lo harán en menor grado.
  • Denegar operaciones no autorizadas
  • Limitaciones en el nivel TCP, por ejemplo el número máximo de conexiones permitidas desde una IP.

mod_qos

Vía / Apache-es

Evitar boots molestos mediante htaccess

La gente de AskApache nos ofrece un ejemplo de htaccess que nos permitirá evitar que nos lean boots molestos. La lista llega a más de 400 robots, lo cual puede suponer un enorme ahorro en ancho de banda y recursos.

ErrorDocument 403 /403.html
RewriteEngine On
RewriteBase /
# IF THE UA STARTS WITH THESE
RewriteCond %{HTTP_USER_AGENT} ^(aesop_com_spiderman|alexibot|backweb|bandit|batchftp|bigfoot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(black.?hole|blackwidow|blowfish|botalot|buddy|builtbottough|bullseye) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(cheesebot|cherrypicker|chinaclaw|collector|copier|copyrightcheck) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(cosmos|crescent|curl|custo|da|diibot|disco|dittospyder|dragonfly) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(drip|easydl|ebingbong|ecatch|eirgrabber|emailcollector|emailsiphon) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(emailwolf|erocrawler|exabot|eyenetie|filehound|flashget|flunky) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(frontpage|getright|getweb|go.?zilla|go-ahead-got-it|gotit|grabnet) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(grafula|harvest|hloader|hmview|httplib|httrack|humanlinks|ilsebot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(infonavirobot|infotekies|intelliseek|interget|iria|jennybot|jetcar) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(joc|justview|jyxobot|kenjin|keyword|larbin|leechftp|lexibot|lftp|libweb) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(likse|linkscan|linkwalker|lnspiderguy|lwp|magnet|mag-net|markwatch) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(mata.?hari|memo|microsoft.?url|midown.?tool|miixpc|mirror|missigua) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(mister.?pix|moget|mozilla.?newt|nameprotect|navroad|backdoorbot|nearsite) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(net.?vampire|netants|netcraft|netmechanic|netspider|nextgensearchbot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(attach|nicerspro|nimblecrawler|npbot|octopus|offline.?explorer) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(offline.?navigator|openfind|outfoxbot|pagegrabber|papa|pavuk) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(pcbrowser|php.?version.?tracker|pockey|propowerbot|prowebwalker) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(psbot|pump|queryn|recorder|realdownload|reaper|reget|true_robot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(repomonkey|rma|internetseer|sitesnagger|siphon|slysearch|smartdownload) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(snake|snapbot|snoopy|sogou|spacebison|spankbot|spanner|sqworm|superbot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(superhttp|surfbot|asterias|suzuran|szukacz|takeout|teleport) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(telesoft|the.?intraformant|thenomad|tighttwatbot|titan|urldispatcher) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(turingos|turnitinbot|urly.?warning|vacuum|vci|voideye|whacker) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(wget|widow|wisenutbot|wwwoffle|xaldon|xenu|zeus|zyborg|anonymouse) [NC,OR]
# STARTS WITH WEB
RewriteCond %{HTTP_USER_AGENT} ^web(zip|emaile|enhancer|fetch|go.?is|auto|bandit|clip|copier|master|reaper|sauger|site.?quester|whack) [NC,OR]
# ANYWHERE IN UA -- GREEDY REGEX
RewriteCond %{HTTP_USER_AGENT} ^.*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures).*$ [NC]
# ISSUE 403 / SERVE ERRORDOCUMENT
RewriteRule . - [F,L]

También nos ofrecen una alternativa con SetEnvIfNoCase

Blocking Bad Bots and Scrapers with .htaccess

Ejemplos de mod_security

La gente de Ask Apache nos ofrece una serie de ejemplos sobre el uso de mod_security, el cual da la posibilidad de escanear todos los mensajes recibidos en tu web, incluyendo POST, trackbacks, pings, Ajax, etc… y permite crear reglas que paren el spam y prevean ataques.

Algunos ejemplos están centrados en DreamHost, lo que es bueno para los usuarios de este hosting.

De los ejemplos que ofrece me gustaría destacar:

Bloquear el spam de WordPress


SecFilterSignatureAction deny,nolog,status:403
SecFilterSelective ARG_url "casino|ringtone|lyrics"
SecFilterSelective ARG_comment_post_ID "^$"
# reject blog spam from all POST and GET fields
SecFilterSelective ARGS "blockspam|blockspam|blockspam|blockspam|blockspam|blockspam|blockspam|blockspam \
blockspam|blockspam|blockspam|blockspam|blockspam|blockspam|blockspam|blockspam|blockspam|blockspam \
nomorespam|nospam"

La directiva FilesMatch indica que solo ha de ejecutarse en esos ficheros. La línea ARG_url indica que se tomará como spam las peticiones con un campo en el form que tenga name o id como url alguno de los valores que se indican. Algo parecido pasa con la línea ARG_comment_post_ID, que tomará como spam los mensajes que no envie en campo comment_post_ID. Y la última línea busca en todos los get y post alguna de las palabras que se indican.

mod_security Guide and Examples of use in .htaccess

|

Wapache: ejecuta tus aplicaciones web Windows

Si antes hablábamos sobre cómo ver aplicaciones web en el escritorio, ahora vamos a hablar sobre cómo ejecutar las aplicaciones web en el escritorio. ¿Qué diferencia hay entre una cosa y otra?, pues que en este caso el servidor se ejecuta en nuestra máquina. Se trata de Wapache, una aplicación que transforma nuestras aplicaciones web en un ejecutable de Windows, para lo cual hace uso de Apache e integra un navegador Internet Explorer en la ventana, el cual no tendrá menu, barra de herramientas o barra de direcciones.
wapache.png
Además permite tres tipos de ventanas, personalizar el drop-down, y el menú contextual. Integración con el System tray y es compatible con los módulos de Apache 2.
Wapache
Vía / Jaslabs: High performance Software

LiteSpeed Web Server

LiteSpeed Web Server es un servidor web con alto rendimiento y alta escalabilidad. Es compatible con Apache por lo que es fácilmente intercambiable.
Los resultados son bastante destacables, es 9 veces más rápido que Apache, se consigue un 50% más de rendimiento en PHP, mejor rendimiento con Ruby on Rails, 3 veces más rápido que Apache en SSL.
Además admite CGI, FastCGI, LSAPI, PHP, Servlet/JSP, Proxy, SSL, IPv4, IPv6, es compatible con el .htaccess, el mod_security y el mod_rewrite de Apache. La seguridad está muy bien implementada y la instalación es sencilla, disponiendo de un administrador GUI para facilitar la labor de mantenimiento.
Existen versiones comerciales, pero tambien hay disponible una versión gratuita que tiene ciertas limitaciones.
Estoy deseando probar que tal va, ¿alguien lo ha usado?.
LiteSpeed Web Server
Vía / International PHP Magazine