Archivo de la etiqueta: ubuntu

Cómo instalar Node.js en Ubuntu 13.04

Node.js es una plataforma construida sobre el JavaScript runtime de Chrome, útil para crear aplicaciones de red rápidas y escalables.

Veamos como instalarlo en Ubuntu:

sudo apt-get install python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Prueba que esté todo bien revisando las versiones de node y npm:

node -v #v0.10.5
npm -v #1.2.18

Ya con Node.js instalado, podemos echarle un ojo al tutorial de AngularJS ¿no? ;)

Referencia

Installing from package managers

Sin sonido HDMI en laptop con ATI Radeon HD 4200 RS880 en Ubuntu

Si tienes sonido en las bocinas de tu laptop pero al conectar el cable HDMI a una televisión no se oye nada, hay varias cosas que puedes probar: ajustar el volumen y verificar que no esté en mute la salida.

Si a pesar de todo sigues sin sonido, espero esto te ayude.

Abre una terminal y teclea:

gksudo gedit /etc/default/grub

Busca esta línea:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Y cámbiala por esta otra:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.audio=1"

Por último:

sudo update-grub

¡Reinicia y listo!

Referencia

Fast video playback with no sound

Mi Ubuntu Desktop — Puesta a punto de una Alienware M11x R2

¿Qué hacer con una Alienware M11x R2 que trae por defecto Windows 7?

Instalarle Ubuntu, por supuesto. Je.
Estos son mis apuntes.

Ubuntu recién instalado

Para comenzar, no me late que aparezcan resultados de Amazon en mi menú de aplicaciones. Esto lo soluciona:

sudo apt-get remove unity-lens-shopping

Activa el firewall:

sudo ufw enable

Buscar e instalar actualizaciones

Ya sea con la aplicación de Actualización de software o con:

sudo apt-get update
sudo apt-get upgrade

Navegador

El que considero el mejor navegador en este momento: Google Chrome (en Ubuntu 13.04 al momento de su lanzamiento es necesario instalar la versión de desarrollo)
Configurar software para reuniones en línea: Chat de vídeo y voz de Google
Instalar un color browser útil : Chroma
Instalar un color picker útil : Eye Dropper
Y una app para leer feeds: Feedly
Si tienes problemas con la instalación, sigue esta guía: Cómo instalar Google Chrome en Ubuntu

Misceláneos

Algunas cosas útiles que he encontrado a través de los años y que siempre termino instalando:

sudo apt-get install byobu comix gimp gnote calibre youtube-dl unrar curl nmap
sudo apt-get install denyhosts logwatch alpine testdisk mlock chkrootkit
sudo apt-get install pdftk wkhtmltopdf imagemagick

Configuración básica

Abre una terminal y teclea:

echo "export EDITOR=nano" >> ~/.bashrc

Esto pone a nano como el editor por defecto, en lugar de vi.

Activa TRIM para un mejor rendimiento de tu disco de estado sólido

Si cuentas con un SSD, lo más recomendable es que pongas un trabajo cron a realizar las tareas de mantenimiento que necesita tu disco duro:
Enable TRIM on SSD in Ubuntu for better performance (Using a daily cron job – recommended)

Ubuntu desktop y entretenimiento

La Alienware M11x R2 cuenta con la tecnología Optimus de nVidia y Ubuntu no trae soporte para esta tecnología, por lo tanto es necesario instalar un software que nos ayude a tomar control sobre la tarjeta de video (y de paso que no consuma tanta energía cuando no está siendo usada): Instala Bumblebee

Si tienes algún problema con los drivers y/o la pantalla, es posible que encuentres la solución aquí o aquí.

Para escuchar música

Un reproductor de música decente: Clementine
Puedes descargar la versión más reciente de Clementine para Ubuntu desde el PPA oficial:

sudo add-apt-repository ppa:me-davidsansome/clementine
sudo apt-get update
sudo apt-get install clementine

Ubuntu para desarrollo de software

git es mi herramienta predilecta para control de versiones, y la necesito para poder instalar otras cosas como Ruby y rbenv: Cómo instalar git

Ruby, qué puedo decir, es mi lenguaje favorito en estos momentos, el que me abrió los ojos a la programación funcional, hasta que llegue otro que me permita ser más productivo: Cómo instalar Ruby.

Si te interesa el gamedev en Ruby, checa los prerequisitos para Ubuntu: Getting Started on Linux

Y estas las gemas necesarias para darle rienda suelta al hobby:

gem install gosu chipmunk texplay lotu

Otro ambiente con el que me estoy involucrando últimamente es Node.js, aquí la guía de cómo instalarlo en Ubuntu.

PostgreSQL es una base de datos sólida y robusta: Cómo instalar PostgreSQL

emacs era mi editor de código favorito, aquí la guía para instalarlo: Cómo instalar emacs

Cómo instalar Google Chrome en Ubuntu 13.04

En estos momentos la versión estable no se puede instalar en una máquina con Ubuntu 13.04.

La causa es una dependencia que no puede cumplirse, ya que los archivos necesarios no se encuentran en los repositorios de Raring Ringtail.

La solución es sencilla, instala la versión beta o la de desarrollo. A manera personal, prefiero la versión de desarrollo, que he de decir, es bastante estable ;)

Selecciona de aquí la que gustes: Chrome Release Channels

Después de que descargues el .deb, da doble clic sobre él, te aparecerá el Centro de software de Ubuntu, da clic sobre instalar y listo.

Ubuntu 12.10 y anteriores

Instala dependencias

Abre una terminal y teclea:

sudo apt-get install libxss1 libnss3-1d libgconf2-4

Descarga el navegador

Bájalo de aquí Navegador Chrome, o teclea en una terminal:

Para la versión de 64bit:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

Para la versión de 32bit:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb

Ahora, sigue con la instalación dándole doble clic al .deb que descargaste o teclea en la terminal:

sudo dpkg -i google-chrome-stable_current_amd64.deb

¡Listo, ya cuentas con Google Chrome en tu máquina! ;)

Error: El paquete es de mala calidad

Si al tratar de instalar Google Chrome en Ubuntu te aparece un diálogo que dice:

El paquete es de mala calidad
 
No se permite la instalación de cualquier paquete que viole los estándares de calidad.
Eso podría causar problemas serios a su equipo. Contacte con la persona u organización
que le proporcionó este archivo de paquete e incluya los detalles a continuación.
 
Detalles:
Lintian check results for /home/victor/Descargas/google-chrome-stable_current_amd64.deb:
E: google-chrome-stable: file-in-etc-not-marked-as-conffile etc/cron.daily/google-chrome

Instálalo con el procedimiento manual descrito arriba, usando sudo dpkg -i …

Referencia

Install Latest Google Chrome in Ubuntu 12.10/12.04/11.10/Linux Mint

No es posible cargar el complemento — Problema con Flash en Google Chrome Linux

Desde el día de ayer me dejó de funcionar el complemento Flash que viene con Google Chrome. Esto se debe a que Chrome maneja su propia extensión Flash y alguien metió la pata con las versiones del plugin o algo. ;)

La forma de solucionar esto de manera rápida es con un:

rm -rf ~/.config/google-chrome/PepperFlash/

Cierra y abre tu navegador y ya está.

Referencias

No es posible cargar el complemento – Problema con Flash en Chrome bajo Linux
flashplayer plugin not loading

Cómo compilar e instalar Emacs 24.3 en Ubuntu 13.04

Emacs se ha convertido en mi editor de código favorito, aquí presento los pasos necesarios para compilarlo e instalarlo en Ubuntu a partir del código fuente (ya sabes, la versión más reciente aún no se encuentra en los repositorios oficiales). ;)

El procedimiento para hacernos con la versión más reciente de Emacs es descargar el código fuente, descomprimir el archivo, instalar las dependencias necesarias para compilarlo, compilar el código fuente e instalar.

Al momento de editar este artículo, la última versión disponible era la 24.3
Revisa cuál es la más reciente aquí.

Instalación

Abre una terminal, ingresa al directorio en donde se va a descargar el código fuente de Emacs (por ejemplo ~/tmp), luego teclea lo siguiente:

1
2
3
4
5
6
wget http://ftp.gnu.org/pub/gnu/emacs/emacs-24.3.tar.gz
tar -xzvf emacs-24.3.tar.gz
sudo apt-get install xorg-dev libjpeg-dev libpng-dev libgif-dev libtiff-dev autoconf automake libgconf2-dev libgpm-dev libtool libdbus-1-dev libgtk2.0-dev libm17n-dev libncurses-dev libotf-dev librsvg2-dev libXpm-dev texinfo
cd emacs-24.3
./configure
make

Prueba si se compiló bien:

src/emacs -q

Si no hubo problemas para ejecutarlo, instálalo con:

sudo make install

Listo, para probar tu instalación teclea esto:

emacs &

Cierra la aplicación, cerrando la ventana o con la combinación Control+x+c, que usualmente se denota así:

C-x-c

Un ambiente más amigable: emacs-starter-kit

Primero debemos agregar el repositorio donde se encuentra el starter-kit:

gedit ~/.emacs.d/init.el

Y agrega estas líneas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
;; Agrega el repositorio de paquetes Marmalade para poder instalar el starter-kit
(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-initialize)
 
;; Instala automáticamente paquetes que hagan falta
(when (not package-archive-contents)
  (package-refresh-contents))
 
;; Agrega los paquetes que desees a esta lista, en mi caso los que ocupo son estos:
(defvar my-packages '(starter-kit ruby-mode ruby-end haml-mode sass-mode scss-mode coffee-mode)
  "A list of packages to ensure are installed at launch.")
 
(dolist (p my-packages)
  (when (not (package-installed-p p))
    (package-install p)))

Inicia Emacs y… ¡Listo, a programar!

Configuración

Para personalizar Emacs, abre una terminal y teclea:

gedit ~/.emacs.d/$USER.el

A continuación presento el contenido del mío:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
; tab width to two spaces
(setq-default indent-tabs-mode nil)
(setq-default tab-width 2)
 
; move across buffers
; http://stackoverflow.com/questions/91071/emacs-switch-active-window
(global-set-key (kbd "S-<up>") 'windmove-up)
(global-set-key (kbd "S-<down>") 'windmove-down)
(global-set-key (kbd "S-<right>") 'windmove-right)
(global-set-key (kbd "S-<left>") 'windmove-left)
 
; resize buffers
; http://www.emacswiki.org/emacs/WindowResize
(global-set-key (kbd "S-C-<left>") 'shrink-window-horizontally)
(global-set-key (kbd "S-C-<right>") 'enlarge-window-horizontally)
(global-set-key (kbd "S-C-<down>") 'shrink-window)
(global-set-key (kbd "S-C-<up>") 'enlarge-window)
 
; default theme
(load-theme 'wombat)
 
; default global mode
; http://stackoverflow.com/questions/6378831/emacs-globally-enable-whitespace-mode
(global-whitespace-mode 1)
(column-number-mode 1)
 
; font settings
;(set-face-attribute 'default nil :height 110)
(if (eq window-system 'x)
  (set-default-font "DejaVu Sans Mono-13"))
 
; incrementar/decrementar el tamaño de la fuente
(defun sacha/increase-font-size ()
  (interactive)
  (set-face-attribute 'default
                      nil
                      :height
                      (ceiling (* 1.10
                                  (face-attribute 'default :height)))))
(defun sacha/decrease-font-size ()
  (interactive)
  (set-face-attribute 'default
                      nil
                      :height
                      (floor (* 0.9
                                  (face-attribute 'default :height)))))
(global-set-key (kbd "C-+") 'sacha/increase-font-size)
(global-set-key (kbd "C--") 'sacha/decrease-font-size)
 
 
; Agregar modo CSS para abrir así los archivos .scss
(add-to-list 'auto-mode-alist '("\\.scss$" . scss-mode))
 
; Agregar modo coffeescript para abrir así los archivos .coffee.erb
(add-to-list 'auto-mode-alist '("\\.coffee.erb$" . coffee-mode))
 
;; https://github.com/bbatsov/emacs-dev-kit/blob/master/ruby-config.el
;; Rake files are ruby, too, as are gemspecs, rackup files, and gemfiles.
(add-to-list 'auto-mode-alist '("\\.rake$" . ruby-mode))
(add-to-list 'auto-mode-alist '("Rakefile$" . ruby-mode))
(add-to-list 'auto-mode-alist '("\\.gemspec$" . ruby-mode))
(add-to-list 'auto-mode-alist '("\\.ru$" . ruby-mode))
(add-to-list 'auto-mode-alist '("Gemfile$" . ruby-mode))
(add-to-list 'auto-mode-alist '("Guardfile$" . ruby-mode))
(add-to-list 'auto-mode-alist '("\\.rabl$" . ruby-mode))
 
;; We never want to edit Rubinius bytecode
(add-to-list 'completion-ignored-extensions ".rbc")
 
;; Load ruby-end minor mode when ruby-mode is loaded
;; http://stackoverflow.com/questions/4767557/how-do-i-get-hs-minor-mode-to-load-automatically-on-php-mode-in-emacs
(add-hook 'ruby-mode-hook (lambda () (ruby-end-mode 1)))
;(add-to-list 'load-path "/home/victor/.emacs.d")
;(require 'ruby-end)
 
;transparent emacs!
(defun djcb-opacity-modify (&optional dec)
  "modify the transparency of the emacs frame; if DEC is t,
    decrease the transparency, otherwise increase it in 5%-steps"
  (let* ((alpha-or-nil (frame-parameter nil 'alpha)) ; nil before setting
         (oldalpha (if alpha-or-nil alpha-or-nil 100))
         (newalpha (if dec (- oldalpha 5) (+ oldalpha 5))))
    (when (and (>= newalpha frame-alpha-lower-limit) (<= newalpha 100))
      (modify-frame-parameters nil (list (cons 'alpha newalpha))))))
 
;; C-8 will increase opacity (== decrease transparency)
;; C-9 will decrease opacity (== increase transparency
;; C-0 will returns the state to normal
(global-set-key (kbd "C-8") '(lambda()(interactive)(djcb-opacity-modify)))
(global-set-key (kbd "C-9") '(lambda()(interactive)(djcb-opacity-modify t)))
(global-set-key (kbd "C-0") '(lambda()(interactive)
                               (modify-frame-parameters nil `((alpha . 100)))))

Referencias

Installing Emacs from Source on Ubuntu
Emacs Starter Kit

Cómo instalar Ruby 2.0 con rbenv en Ubuntu 13.04

Después de haber pasado de instalar Ruby a mano, a instalarlo usando el cómodo RVM, me he ido ahora por rbenv. Es menos intrusivo, y se siente más pulido que el propio RVM.

Preliminares

Necesitas git, puedes instalarlo siguiendo esta guía.

Instalación de rbenv

¿Instalación local o en un VPS?

Si vas a instalar Ruby para desplegar aplicaciones en un VPS (Virtual Private Server, tipo Linode), es recomendable crear un usuario específico para ello.

Si deseas una instalación local, sáltate este paso y pasa a clonar el repositorio directamente en tu $HOME

sudo adduser deployer
sudo usermod -a -G sudo deployer
sudo su deployer

Clona el repositorio de rbenv en ~/.rbenv

cd
git clone git://github.com/sstephenson/rbenv.git .rbenv

Agrega ~/.rbenv/bin al $PATH para tener acceso al comando rbenv.

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

Agrega rbenv init a tu shell para habilitar los shims y la función de autocompletar.

echo 'eval "$(rbenv init -)"' >> ~/.bashrc

Reinicia tu shell para que los cambios surtan efecto.

exec $SHELL

El mejor amigo de rbenv: ruby-build

ruby-build es un plugin que te permite instalar las diferentes versiones de Ruby de una manera sencilla y accesible.

El proyecto ruby-build nos permite usar el comando rbenv install para instalar nuevas versiones de Ruby.

mkdir -p ~/.rbenv/plugins
cd ~/.rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git

Instalación de Ruby

Instala los prerequisitos (sacados de los que lista RVM como requisitos para Ubuntu):

sudo apt-get install bison libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf texinfo libncurses-dev automake libssl-dev

Ahora, para instalar Ruby versión 2.0.0-p195, y ponerlo como la versión por defecto, teclea en la terminal:

rbenv install 2.0.0-p195
rbenv rehash
rbenv global 2.0.0-p195

Con Ruby instalado y configurado, al escribir esto:

ruby -v

Debe aparecer algo como:

ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-linux]

Verifica si hay actualizaciones para el administrador de paquetes gem:

gem update --system

También verifica si hay actualizaciones para las gemas que vienen instaladas por defecto:

gem update

¡Listo, ya puedes ejecutar código Ruby en tu máquina!

Instalación de Rails

Para instalar la versión estable más reciente de Rails, ejecuta:

gem install rails
rbenv rehash

Teclea:

rails --version

Debe aparecer algo como:

Rails 3.2.13

Recuerda usar rbenv rehash

Después de instalar una nueva versión de Ruby, o cualquier gema que provea ejecutables, teclea:

rbenv rehash

Esto pondrá a tu disposición los ejecutables instalados por Ruby y las gemas.

Cómo descargar videos de YouTube en Ubuntu con youtube‑dl

Es muy fácil, primero hay que instalar el programa youtube-dl, abre una terminal y teclea:

sudo apt-get install youtube-dl

Para usarlo sólo ve al directorio donde desees que se guarde el archivo, copia la URL de algún video de YouTube y ponlo delante del comando youtube-dl, de esta manera:

youtube-dl http://www.youtube.com/watch?v=I1c9KGbgxck

Espera a que finalize la descarga y listo, ¡un video más para la colección!

Cómo ver las resoluciones y formatos soportados

youtube-dl --list-formats http://www.youtube.com/watch?v=I1c9KGbgxck

Lo cual muestra:

[youtube] Setting language
[youtube] I1c9KGbgxck: Downloading video webpage
[youtube] I1c9KGbgxck: Downloading video info webpage
[youtube] I1c9KGbgxck: Extracting video information
Available formats:
37      :       mp4     [1080x1920]
46      :       webm    [1080x1920]
22      :       mp4     [720x1280]
45      :       webm    [720x1280]
35      :       flv     [480x854]
44      :       webm    [480x854]
34      :       flv     [360x640]
18      :       mp4     [360x640]
43      :       webm    [360x640]
5       :       flv     [240x400]
17      :       mp4     [144x176]

Digamos que te interesa bajar el video en formato, webm en resolución 720×1280, que viene siendo el número 45, entonces teclea en tu terminal:

youtube-dl -f 45 http://www.youtube.com/watch?v=I1c9KGbgxck
Si no se le especifica un formato, youtube-dl automáticamente descargará el archivo con la más alta calidad, es decir el que aparece hasta arriba en la lista de formatos.

¿Qué otros proveedores soporta youtube-dl?

youtube-dl --list-extractors

En la versión utilizada aquí (2012.09.27) aparecen estos:

youtube:playlist
youtube:user
youtube:search
youtube
metacafe
dailymotion
video.google
video.google:search
photobucket
video.yahoo
video.yahoo:search
DepositFiles
facebook
blip.tv:user
blip.tv
vimeo
myvideo
comedycentral
escapist
collegehumor
xvideos
soundcloud
infoq
mixcloud
stanfordoc
mtv
Youku
xnxx
generic

Cómo arreglar el infame ERROR: unable to download video

Si al tratar de descargar algún video te aparece algo como esto:

youtube-dl http://www.youtube.com/watch?v=I1c9KGbgxck
[youtube] Setting language
[youtube] I1c9KGbgxck: Downloading video webpage
[youtube] I1c9KGbgxck: Downloading video info webpage
[youtube] I1c9KGbgxck: Extracting video information
 
ERROR: unable to download video

Seguramente es porque necesitas una actualización, abre una terminal y teclea lo siguiente:

sudo youtube-dl -U

Y listo, happy downloading! ;)

Ayuda

El programa cuenta con muchas opciones, para verlas teclea:

youtube-dl -h

Cómo instalar LEMP en Ubuntu 13.04 — Linux nginx MySQL PHP

Instalación de nginx

Ligero, estable, buena arquitectura, rápido para servir contenido estático y le está comiendo el mandado a Apache.

Aquí la guía para instalar nginx en Ubuntu:

nginx=development # usa nginx=stable para la versión estable
sudo add-apt-repository ppa:nginx/$nginx
sudo apt-get update
sudo apt-get install nginx

Al momento de escribir este artículo nginx -v reporta:

nginx version: nginx/1.5.0

Inicia el servidor

sudo service nginx start

Ahora en tu navegador ve hacia: http://localhost

Deberías ver algo como esto:

Welcome to nginx!

En caso de error: invalid parameter “ipv6_only=on”

Si nginx no se inicia y en /var/log/nginx/error.log aparece una línea como:

[emerg] 3748#0: invalid parameter "ipv6_only=on" in /etc/nginx/sites-enabled/default:22

Se debe a un error de dedo la configuración por defecto de nginx. Abre el archivo de configuración:

sudo gedit /etc/nginx/sites-enabled/default

Y en la línea 22, cambia ipv6_only por ipv6only (quítale el guión bajo).

Inicia nginx y ahora todo debe funcionar correctamente.

Siguiente, MySQL.

Instalación de MySQL

sudo apt-get install mysql-server mysql-client libmysqlclient-dev

Prueba si todo funciona bien:

mysql -uroot -pxxx

Donde xxx es la contraseña que especificaste durante la instalación de MySQL.

Para cambiar la contraseña de la cuenta root, ejecuta el siguiente comando después de ingresar a MySQL:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yyy');

Sustituye yyy por la nueva contraseña.

Si en algún momento necesitas resetear la contraseña del root del servidor MySQL, ejecuta el siguiente comando:

sudo dpkg-reconfigure mysql-server-5.5

Puede que la versión cambie, si es así, puedes ver información sobre el paquete mysql-server con:

dpkg -s mysql-server

Mejorando la seguridad

Ejecuta el siguiente comando y contesta a todas las preguntas:

mysql_secure_installation

Listo, vamos por PHP.

Instalación de PHP

Necesito PHP para algunos sitios que utilizan WordPress y los foros de Simple Machines.

Así que, si hay que instalar PHP, hay que hacerlo con lo mejor: PHP-FPM

Sin más, dale:

sudo apt-get install php5-fpm

Establece algunos valores sanos para nginx en:

sudo nano /etc/nginx/nginx.conf

Y cambia:

keepalive_timeout 65;

Por:

keepalive_timeout 5;

Esto le indica a nginx que corte cualquier petición hecha por algún cliente que dilate más de 5 segundos.

Configura nginx para que pueda servir archivos .php, modifica:

sudo nano /etc/nginx/sites-available/default

Y asegúrate de que estas líneas se vean así:

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
        root /usr/share/nginx/html;
}
 
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
        try_files $uri =404;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
 
        # With php5-cgi alone:
        #fastcgi_pass 127.0.0.1:9000;
        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}
 
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /.ht {
        deny all;
}

Reinicia nginx para que los cambios en la configuración surtan efecto:

sudo service nginx restart

Lectura recomendada: Nginx Pitfalls

Mejorando la seguridad

Elimina un hueco de seguridad que se presenta en la configuración por defecto de nginx con php, sólo necesitas modificar una línea en php.ini:

sudo nano /etc/php5/fpm/php.ini

Aségurate de quitar el punto y coma del frente de la línea y cambiar el 1 por un 0, de tal manera que luzca así (el número de línea es 765 aprox):

cgi.fix_pathinfo=0

Reinicia php-fpm con:

sudo service php5-fpm restart

Comunicación por medio de un socket UNIX

Normalmente, PHP-FPM escucha en el puerto 9000 en 127.0.0.1.
Dado que php-fpm y nginx están en la misma máquina, se puede mejorar el rendimiento si se comunican a través de un socket UNIX en vez de usar TCP.
Get High Performance PHP-FPM with socket connections

Para indicarle a php-fpm que escuche en un socket UNIX en lugar de uno TCP, modifica:

sudo nano /etc/php5/fpm/pool.d/www.conf

Y asegúrate de que aparezcan las siguientes líneas (en este caso, el punto y coma se utiliza para comentar):

;listen = 127.0.0.1:9000
listen = /var/run/php5-fpm.sock
...
listen.owner = www-data
listen.group = www-data
listen.mode = 0666

Reinicia php-fpm con:

sudo service php5-fpm restart

Ahora, para probar que PHP está funcionando perfectamente a través de nginx, crea un archivo de ejemplo:

sudo nano /usr/share/nginx/html/info.php

Y ponle este contenido:

1
2
3
<?php 
  phpinfo();
?>

Guarda el archivo y en tu navegador ve a: http://localhost/info.php

Debes ver una página con información sobre PHP.

Instala soporte para MySQL

sudo apt-get install php5-mysql

Reinicia php-fpm:

sudo service php5-fpm restart

Instala Xcache

Xcache cachea y optimiza código intermedio PHP. En pocas palabras es bueno para tu servidor, ya que acelera la generación de tus páginas PHP.

sudo apt-get install php5-xcache

Reinicia php-fpm:

sudo service php5-fpm restart

Más extensiones para PHP

Puedes encontrar más extensiones listas para instalar con el comando:

apt-cache search php5

Ejemplos:

php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Permitir uploads de archivos grandes

A veces requieres subir archivos grandes a tu sitio, ya sea para importar algún respaldo, video, audio, etc. Desgraciadamente la configuración que trae por defecto nginx y PHP sólo permite recibir cómo máximo archivos de 1MB y 2MB respectivamente.

A continuación se muestra como incrementar este límite.

Del lado de nginx

sudo nano /etc/nginx/nginx.conf

Dentro de la sección http ingresa el client_max_body_size deseado:

http {
        ...
        client_max_body_size 8m;
...

Reinicia nginx:

sudo service nginx restart

Del lado de PHP

sudo nano /etc/php5/fpm/php.ini

Estas son las líneas que te interesan:

post_max_size = 8M
...
upload_max_filesize = 8M

Reinicia php-fpm:

sudo service php5-fpm restart

¡Listo!

Referencias

Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support (LEMP) On Ubuntu 12.04 LTS
Setting up nginx maximum upload size

Cómo instalar gitolite en Ubuntu 12.10

Gitolite te permite hospedar repositorios git en un servidor central, con un fino control de acceso y muchas (¡muchas!) características poderosas.

Gitolite — Hospeda repositorios git en un servidor Ubuntu

Si deseas habilitar un servidor como repositorio central para tus proyectos git y de esa forma facilitar la colaboración con varias personas sin necesidad de recurrir a algo como github, entonces gitolite es para ti.

Escenario

  • Servidor: donde queremos hospedar los repositorios git, aquí se va a instalar gitolite.
    El URL del servidor de ejemplo es: servidor.com
    (también puedes usar una dirección IP)
    El usuario de ejemplo con privilegios de administrador es: admin
  • Cliente: la máquina local desde donde se van a administrar los usuarios, los repositorios y los accesos.

En el cliente

En tu máquina debes tener disponible tu llave pública en ~/.ssh/id_rsa.pub, si no es así genérala con:

ssh-keygen

Ya que cuentes con la llave pública ~/.ssh/id_rsa.pub, cópiala a tu servidor, la vas necesitar para la configuración inicial de gitolite.

Para copiarla puedes usar scp. El siguiente comando copiará nuestra llave pública al $HOME de la cuenta admin en el servidor, con el nombre de admin.pub:

scp ~/.ssh/id_rsa.pub admin@servidor.com:/home/admin/admin.pub

Sustituye los datos del ejemplo por los tuyos donde sea necesario.

En el servidor

Inicia sesión en el servidor con una cuenta que pueda usar sudo (en nuestro caso particular es admin):

ssh admin@servidor.com
Si sólo tienes la cuenta de root para administrar tu servidor, te recomiendo que leas esto: Securing Your Server

Instala git usando esta guía:
Cómo compilar e instalar git en Ubuntu desde código fuente

Después crea un usuario llamado git que va a fungir como el administrador de los repositorios:

sudo adduser 
    --system 
    --shell /bin/bash 
    --gecos 'git version control' 
    --group 
    --disabled-password 
    --home /home/git 
    git
No necesita contraseña ya que no pretendemos iniciar sesión con él directamente.

Accede al usuario git y ve a su $HOME:

sudo su git
cd

Asegúrate de que ~/.ssh/authorized_keys está vacío o no existe (para el usuario git).

Copia el archivo /home/admin/admin.pub a /home/git/admin.pub:

cp /home/admin/admin.pub $HOME

Ejecuta los siguientes comandos:

git clone git://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
echo "PATH=$HOME/bin:$PATH" > ~/.bashrc
source ~/.bashrc
gitolite setup -pk admin.pub

Listo, cierra la sesión del usuario git y después termina la del usuario admin.

Agregar usuarios y repositorios desde la máquina cliente

De regreso en tu máquina local, ahora vas a ver cómo crear repositorios y autorizar usuarios para que operen con ellos.

En gitolite, los usuarios, repositorios y reglas de acceso se administran haciendo cambios a un repositorio especial llamado gitolite-admin y surten efecto al subirlos (con un push) al servidor.

No debes agregar de forma manual en el servidor repositorios o usuarios.
Utiliza siempre el repositorio local para ese propósito.

Para administrar tu instalación de gitolite, clona el repositorio gitolite-admin a tu máquina:

git clone git@servidor.com:gitolite-admin.git
Si el comando anterior te solicita una contraseña, algo salió mal. Revisa los pasos con cuidado.

Ahora, si le das cd gitolite-admin, verás dos subdirectorios en él: conf y keydir

Para agregar a los usuarios juan, maria y pepe, obtén sus llaves públicas y mételas en keydir como juan.pub, maria.pub y pepe.pub respectivamente.

Para agregar un repositorio nuevo llamado foo y dar diferentes niveles de acceso a estos usuarios, modifica el archivo: conf/gitolite.conf, ejemplo:

repo gitolite-admin
    RW+     =   admin
 
repo foo
    RW+         =   juan
    RW          =   maria
    R           =   pepe

Después de hacer estos cambios en el cliente, hazlos efectivos en el servidor con:

git add conf
git add keydir
git commit -m 'Se creó el repositorio foo, se dio acceso a juan, maria y pepe'
git push

Cuando finalice el push, gitolite agregará los nuevos usuarios a /home/git/.ssh/authorized_keys en el servidor, así como también creará un nuevo repositorio vacío llamado foo.

Subir un repositorio existente al servidor

Para poner un repositorio local en el servidor, para que otras personas —a las que les des acceso— lo puedan clonar y trabajar, debes primero crear un espacio para él.

Esto lo haces modificando el archivo gitolite-admin/conf/gitolite.conf como se mostró arriba, haz commit de los cambios, y súbelos con push.

Después, entra al directorio del repositorio local en cuestión y teclea:

git remote rm origin
git remote add origin git@servidor.com:mi-nuevo-repositorio.git
git push origin master

Listo, ahora tu repositorio local ha sido clonado al servidor y otros usuarios pueden tener acceso a él con:

git clone git@servidor.com:mi-nuevo-repositorio.git

Más información

Para conocer más sobre las reglas de acceso y otras características de gitolite, recomiendo leer el README del proyecto y también la sección Git on the Server – Gitolite del git book.

Referencias

Setting up a gitolite server in Ubuntu