Para eso necesitamos el paquete: python-mysqldb
Lo instalamos
apt-get install python-mysqldb
Aparte necesitamos mysql-server claro esta y mysql-client.
Y bueno solo es un apunte ya que no basta con instalar con pip MySQL-python.
Para eso necesitamos el paquete: python-mysqldb
Lo instalamos
apt-get install python-mysqldb
Aparte necesitamos mysql-server claro esta y mysql-client.
Y bueno solo es un apunte ya que no basta con instalar con pip MySQL-python.
Un error común al instalar mysql-python para usar mysql con django puede ser este:
pip install MySQL-python Downloading/unpacking MySQL-python Real name of requirement MySQL-python is MySQL-python Downloading MySQL-python-1.2.4.zip (113Kb): 113Kb downloaded Running setup.py egg_info for package MySQL-python Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.28.tar.gz Extracting in /tmp/tmpT2lFmq Now working in /tmp/tmpT2lFmq/distribute-0.6.28 Building a Distribute egg in /home/build/MySQL-python /home/build/MySQL-python/distribute-0.6.28-py2.7.egg sh: mysql_config: command not found Traceback (most recent call last): File "", line 14, in File "/home/build/MySQL-python/setup.py", line 18, in metadata, options = get_config() File "setup_posix.py", line 43, in get_config libs = mysql_config("libs_r") File "setup_posix.py", line 25, in mysql_config raise EnvironmentError("%s not found" % (mysql_config.path,)) EnvironmentError: mysql_config not found Complete output from command python setup.py egg_info: Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.28.tar.gz Extracting in /tmp/tmpT2lFmq Now working in /tmp/tmpT2lFmq/distribute-0.6.28 Building a Distribute egg in /home/build/MySQL-python /home/build/MySQL-python/distribute-0.6.28-py2.7.egg sh: mysql_config: command not found Traceback (most recent call last): File " ", line 14, in File "/home/build/MySQL-python/setup.py", line 18, in metadata, options = get_config() File "setup_posix.py", line 43, in get_config libs = mysql_config("libs_r") File "setup_posix.py", line 25, in mysql_config raise EnvironmentError("%s not found" % (mysql_config.path,)) EnvironmentError: mysql_config not found ---------------------------------------- Command python setup.py egg_info failed with error code 1 Storing complete log in /root/.pip/pip.log
La razón es falta de dependencias, tenemos que instalar el mysql-server y lo más importante para solucionar el error es instalar el paquete libmysqlclient-dev
Lo instalamos con apt:
apt-get install libmysqlclient-dev
También para evitar otros errores con pip necesitamos instalar el paquete de desarrollo de python:
apt-get install python-dev
Luego de eso ya podemos instalar mysql-python:
pip install MySQL-python Downloading/unpacking MySQL-python Running setup.py egg_info for package MySQL-python Installing collected packages: MySQL-python Running setup.py install for MySQL-python building '_mysql' extension gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,4,'final',1) -D__version__=1.2.4 -I/usr/include/mysql -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -g In file included from _mysql.c:44:0: /usr/include/mysql/my_config.h:422:0: warning: "HAVE_WCSCOLL" redefined [enabled by default] /usr/include/python2.7/pyconfig.h:890:0: note: this is the location of the previous definition gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-x86_64-2.7/_mysql.o -L/usr/lib/x86_64-linux-gnu -lmysqlclient_r -lpthread -lz -lm -lrt -ldl -o build/lib.linux-x86_64-2.7/_mysql.so Successfully installed MySQL-python Cleaning up...
Un post rápido..
Prevenir hotlink y enviar una imagen cualquier en vez de la original:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?dominio\.com/.*$ [NC] RewriteRule .*\.(gif|jpe?g|png)$ http://www.EnlaceANuevaImagenParaQueAparezcaEnvezDeLaQueEnlazan/no.jpg [R,NC,L]
Redirrección 301 de dominio (cambio de dominio)
RewriteEngine on RewriteRule (.*) http://www.dominio.com/$1 [R=301,L]
Notación simbólica;
--- Sin permiso --x Ejecución -w- Escritura -wx Escritura y Ejecución r-- Lectura r-x Lectura y Ejecución rw- Lectura y Escritura rwx Lectura, escritura y ejecución
Visto de forma numeral del 1 al 7.
0 --- Sin permiso 1 --x Ejecución 2 -w- Escritura 3 -wx Escritura y Ejecución 4 r-- Lectura 5 r-x Lectura y Ejecución 6 rw- Lectura y Escritura 7 rwx Lectura, escritura y ejecución
Bien esta es la explicación básica, luego lo de por que son 3 números (777) y demás es por que se da permisos al propietario, al grupo y a todos los demás, esto ya lo he explicado hace mucho tiempo en este enlace: como usar chmod
Es viejo todo esto y muy sencillo pero me dio por publicarlo.
Si usan el gmetrix o usan el page speed de google, puede que se tomen con un error como este
Esto lo que nos dice es que nuestra web no le dice al navegador que guarde el contenido estático, o sea cada vez que una visita vuelve a entrar a nuestra web carga las imágenes, al menos que le navegador tenga la opción de cachear activada por defecto.
Si tenemos mod_expires activado en nuestro servidor podemos usar este código:
<IfModule mod_expires.c> ExpiresActive on # Your document html ExpiresByType text/html "access plus 0 seconds" # Media: images, video, audio ExpiresByType audio/ogg "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType video/mp4 "access plus 1 month" ExpiresByType video/ogg "access plus 1 month" ExpiresByType video/webm "access plus 1 month" # CSS and JavaScript ExpiresByType application/javascript "access plus 1 year" ExpiresByType text/css "access plus 3 month" </IfModule>
Con esto forzamos al navegador a cachear nuestro contenido estático y dejarlo guardado por un mes, así que si una visita entra seguido a nuestra web no tendrá que descargar todo el contenido cada vez que entra y así navegará más rápido.
Sencillo código sin tener que editar la configuración de apache:
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon application/json </IfModule>
Otra variante:
<IfModule mod_deflate.c> BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4.0[678] no-gzip BrowserMatch bMSIE !no-gzip !gzip-only-text/html AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/atom_xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-httpd-php AddOutputFilterByType DEFLATE application/x-httpd-fastphp AddOutputFilterByType DEFLATE application/x-httpd-eruby AddOutputFilterByType DEFLATE text/html </IfModule>
Si da error 500 lo quitan, seguramente sea por que mod_deflate no este habilitado.
Con eso comprimimos todo el contenido, mod page speed de google nos nos dará el error, aceleramos la carga y reducimos el consumo de ancho de banda.
Bueno esto nos sirve para restringir accesos o bien permitirlos, tiene varias funciones, aquí lo dejo por que me sirve, supongo que a más de uno le servirá, listo para usar con nginx.
*.google.com *.google.ae *.google.com.af *.google.com.ag *.google.off.ai *.google.am *.google.com.ar *.google.as *.google.at *.google.com.au *.google.az *.google.ba *.google.com.bd *.google.be *.google.bg *.google.bi *.google.com.bo *.google.com.br *.google.bs *.google.co.bw *.google.com.bz *.google.ca *.google.cd *.google.cg *.google.ch *.google.ci *.google.co.ck *.google.cl *.google.com.co *.google.co.cr *.google.com.cu *.google.de *.google.dj *.google.dk *.google.dm *.google.com.do *.google.com.ec *.google.es *.google.com.et *.google.fi *.google.com.fj *.google.fm *.google.fr *.google.gg *.google.com.gi *.google.gl *.google.gm *.google.gr *.google.com.gt *.google.com.hk *.google.hn *.google.hr *.google.co.hu *.google.co.id *.google.ie *.google.co.il *.google.co.im *.google.co.in *.google.is *.google.it *.google.co.je *.google.com.jm *.google.jo *.google.co.jp *.google.co.ke *.google.kg *.google.co.kr *.google.kz *.google.li *.google.lk *.google.co.ls *.google.lt *.google.lu *.google.lv *.google.com.ly *.google.mn *.google.ms *.google.com.mt *.google.mu *.google.mw *.google.com.mx *.google.com.my *.google.com.na *.google.com.nf *.google.com.ni *.google.nl *.google.no *.google.com.np *.google.nr *.google.nu *.google.co.nz *.google.com.om *.google.com.pa *.google.com.pe *.google.com.ph *.google.com.pk *.google.pl *.google.pn *.google.com.pr *.google.pt *.google.com.py *.google.ro *.google.ru *.google.rw *.google.com.sa *.google.com.sb *.google.sc *.google.se *.google.com.sg *.google.sh *.google.sk *.google.sn *.google.sm *.google.com.sv *.google.co.th *.google.com.tj *.google.tm *.google.to *.google.tp *.google.com.tr *.google.tt *.google.com.tw *.google.com.ua *.google.co.ug *.google.co.uk *.google.com.uy *.google.uz *.google.com.vc *.google.co.ve *.google.vg *.google.co.vi *.google.com.vn *.google.vu *.google.ws *.google.co.za *.google.co.zm *.bing.com www.yahoo.com www.yahoo.es *.facebook.com *.twitter.com
Nos podemos topar con ese error en mysql y con otros errores de memoria en procesos.
El problema es como bien dice el error que el servidor no tiene memoria cosa que puede pasar, tal vez el servidor tenga 2 gigas de ram y el mysql tenga una configuración para usar más de 5 o 6gb y por eso el error, así que la solución sería agregar memoria el server, pero…
Si el server 24 gigas de ram, o 60 o 128 y no estamos usando ni ni el 40% de la ram significa que tenemos otro problema o alguna limitación.
Lo primero es ver la salida de ulimit -a
Si no tenemos todo en ulimited o valores altos por ahí viene la restricción.
El lugar para buscar la solución esta en: /etc/security/limits.d/ o /etc/security/limits.conf
Se que no es el post más agradable y detallado que han visto pero prometo mejorarlo ya que ahora no tengo tiempo para poner capturas ni nada por el estilo, pero con eso pueden solucionar el problema.
Luego pongo información más detallada del problema en cuanto acabe de trabajar.
Ispconfig aveces no envía correos y es por que las bases de datos están des actualizadas o bien por que el amavis no esta instalado, la solución es o bien actualizar las bases de datos, filtros y demás o directamente deshabilitar el amavis, clamav y spamassasin.
Si es un servidor propio y solo nosotros enviamos emails yo prefiero desabilitar todo ( amavis consube bastante memoria ram y clamav a veces también así que nos ahorramos algo de recursos quitandolos. )
Solo editamos el archivo:
/etc/postfix/main.cf
Comentamos estas dos lineas:
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
Reiniciamos postfix y eso es todo:
/etc/init.d/postfix restart
Lo otro es quitar amavis, lo hacemos con apt-get remove o solo lo dejamos apagado con service amavis stop y lo evitamos que inicie al reiniciar el servidor con:
update-rc.d -f amavis remove
Eso es todo.
Si tenemos un hosting pequeño o compartimos servidor con alguien y no queremos que use php.ini ya sea por que tenemos desabilitadas funciones y no queremos que las habilite o por lo que sea, podemos deshabilitar la creación del PHP.ini y solo hacer que use el nuestro:
Editamos el suphp.conf
/opt/suphp/etc/suphp.conf
Buscamos la linea:
[phprc_paths]
Y descomentamos estas 3 opciones:
;application/x-httpd-php=/usr/local/lib/
;application/x-httpd-php4=/usr/local/php4/lib/
;application/x-httpd-php5=/usr/local/lib/
O sea quitamos el punto y como del inicio, cerramos, reiniciamos apache y listo.
Esto lo que hace es decirle al php que solo puede usar el PHP.ini que esta en esas rutas.
Si usamos fastcgi, cgi o DSO lo dicho en este tema no servirá.