Tema: Web Server + PHP + iPhone
Bueno me pareció interesante compartirlo.
Desde el domingo pasado estoy probando servidores web para el iPhone y bueno llegué a la conclusión que el Lighttpd que se encuentra en Cydia es el mejor.
Es un servidor Web que soporta casi todo lo que soporta Apache, como auth, compression, rewrite, fastcgi, etc; pero es un servidor escrito desde 0 y orientado a la velocidad y al poco consumo de recursos, lo cual lo hace ideal para el iPhone.
Después de instalarlo tuve que crearle el archivo de configuración y el plist para lanzar el daemon los cuales no vienen con el paquete, y bueno, por medio de FastCGI le agregué php 5.2.8, pero se le podría agregar Perl, Phyton y Rubi (que también están todos disponibles en Cydia) y anda todo impecable.
Si quieren verlo, tengo un dominio en DynDNS apuntando al iPhone http://ibobx.is-a-geek.com con una versión de Drupal que soporta SQLite ya que esta versión de PHP no trae soporte para MySQL y bueno, compilar MySQL en el iPhone es una tarea de locos todavía; pero creo que SQLite anda muy bien de todas maneras...
También le agregue el Lighttpd al BossPrefs para poder Activarlo/Desactivarlo.
Conclusión, me parece una herramienta muy buena para los que programamos para web, ya que nos permite hacer pruebas locales directamente en el teléfono, pero además se puede usar para compartir ficheros, tanto por web, como por webdav (soporta webdav), y teniendo PHP y Dashcode nos dá otra variedad de posibilidades para hacer aplicaciones para el teléfono basadas en Web.
El procedimiento que seguí fue:
Instalar lighttpd de Cydia
Instalar PHP de Cydia
# Crear /var/log/lighttpd para grabar los archivos log
# Crear /var/www para los documentos del sitio web
# Crear/Copiar lighttpd.conf en /etc
# Crear /var/cache/lighttpd/compress/
# Crear/Copiar com.amcgregor.lighttpd.plist en /Library/LaunchDaemons para iniciar o detener el daemon.
# Y Crear/Copiar Lighttpd para poder arrancar o parar el server con el BossPrefs, copiando Lighttpd en /Applications/BossPrefs.app/services
A continuación les muestro lo que contiene cada fichero:
lighttpd.conf :
#---------------------------------------------------------------
server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_compress",
"mod_fastcgi",
"mod_rewrite",
)
mimetype.assign = (
".pdf" => "application/pdf",
".sig" => "application/pgp-signature",
".spl" => "application/futuresplash",
".class" => "application/octet-stream",
".ps" => "application/postscript",
".torrent" => "application/x-bittorrent",
".dvi" => "application/x-dvi",
".gz" => "application/x-gzip",
".pac" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".tar.gz" => "application/x-tgz",
".tgz" => "application/x-tgz",
".tar" => "application/x-tar",
".zip" => "application/zip",
".mp3" => "audio/mpeg",
".m3u" => "audio/x-mpegurl",
".wma" => "audio/x-ms-wma",
".wax" => "audio/x-ms-wax",
".ogg" => "application/ogg",
".wav" => "audio/x-wav",
".gif" => "image/gif",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".png" => "image/png",
".xbm" => "image/x-xbitmap",
".xpm" => "image/x-xpixmap",
".xwd" => "image/x-xwindowdump",
".css" => "text/css",
".html" => "text/html",
".htm" => "text/html",
".js" => "text/javascript",
".asc" => "text/plain",
".c" => "text/plain",
".cpp" => "text/plain",
".log" => "text/plain",
".conf" => "text/plain",
".text" => "text/plain",
".txt" => "text/plain",
".dtd" => "text/xml",
".xml" => "text/xml",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".mov" => "video/quicktime",
".qt" => "video/quicktime",
".avi" => "video/x-msvideo",
".asf" => "video/x-ms-asf",
".asx" => "video/x-ms-asf",
".wmv" => "video/x-ms-wmv",
".bz2" => "application/x-bzip",
".tbz" => "application/x-bzip-compressed-tar",
".tar.bz2" => "application/x-bzip-compressed-tar",
"" => "application/octet-stream",
)
fastcgi.server = (
".php" =>
((
"socket" => "/tmp/php.socket",
"bin-path" => "/usr/bin/php-cgi"
)),
)
server.document-root = "/var/www/"
server.errorlog = "/var/log/lighttpd/error.log"
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm",
"index.lighttpd.html" )
accesslog.filename = "/var/log/lighttpd/access.log"
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".fcgi" )
## bind to port (default: 80)
#server.port = 8080
## bind to localhost only (default: all interfaces)
#server.bind = "all"
server.pid-file = "/var/run/lighttpd.pid"
dir-listing.encoding = "utf-8"
server.dir-listing = "enable"
## change uid to (default: don't care)
#server.username = "www-data"
## change uid to (default: don't care)
#server.groupname = "www-data"
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ("text/plain", "text/html", "application/x-javascript", "text/css")
#### handle Debian Policy Manual, Section 11.5. urls
#### and by default allow them only from localhost
$HTTP["remoteip"] == "127.0.0.1" {
alias.url += (
"/doc/" => "/usr/share/doc/",
"/images/" => "/usr/share/images/"
)
$HTTP["url"] =~ "^/doc/|^/images/" {
dir-listing.activate = "enable"
}
}
#---------------------------------------------------------------
En com.amcgregor.lighttpd.plist tengo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.amcgregor.lighttpd</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/lighttpd</string>
<string>-f</string>
<string>/etc/lighttpd.conf</string>
<string>-D</string>
</array>
<key>StandardErrorPath</key>
<string>/dev/null</string>
</dict>
</plist>
Y por último, en el Lighttpd para el BossPrefs services tengo:
/bin/launchctl load -w /Library/LaunchDaemons/com.amcgregor.lighttpd.plist
/bin/launchctl unload -w /Library/LaunchDaemons/com.amcgregor.lighttpd.plist
com.amcgregor.lighttpd.plist
/Applications/BossPrefs.app/lighttpd.png
Si quieren ver un phpinfo: http://ibobx.is-a-geek.com/phpinfo.php
Algunos screen chotos
[frame]http://www.ibobx.com/iphonewebserver/[/frame]
[size=3]Nota: Estos procedimientos son solo para usuarios experimentados. No me hago responsable de los daños que le puedan causar a su teléfono móvil, ni tampoco me comprometo a darles soporte técnico ya que como dije esto es para usuarios experimentados y con buenos conocimientos del iPhone, unix, servidores web, scripting, etc...[/size]
Espero les sea útil.
Soy de Familia, Amigos, Animales, Espiritualidad, y si logicallymente Tecnología... Estoy pasado de peso si, pero también tengo buena fibra porque hago pesas...
Tengo MacBook Em-uan, aiFon Tuelv Prou Max, un aiPed prou segunda gen con pensol, unos erpads prou, an Apl Uach quinta gen, y para androide dev, una tablet Semsung es six, y un Nout Ten...
También una pí-sí AMD Ryzen 9 3900X 12-Core, GPU AMD Radeon RX 5700 XT con Windors y Línu y HTC Vive hooked to it...
Ah, muy importante: Me gusta la cerveza principalmente tipo IPA, y también el Whiskey re-viejo...