Este tutorial muestra cómo puede instalar y ejecutar un sitio web concrete5 en un sistema Debian Squeeze o Ubuntu 12.10 que tiene instalado nginx en lugar de Apache (LEMP =L inux + nginx (pronunciado "e motor x") + M ySQL + P HP). nginx es un servidor HTTP que usa muchos menos recursos que Apache y entrega páginas mucho más rápido, especialmente archivos estáticos. concrete5 es un sistema de gestión de contenido (CMS) gratuito y de código abierto.
¡No emito ninguna garantía de que esto funcione para usted!
1 nota preliminar
Quiero instalar concrete5 en un host virtual llamado www.example.com/example.com aquí con la raíz del documento /var/www/www.example.com/web.
Debería tener una instalación de LEMP en funcionamiento, como se muestra en estos tutoriales:
- Instalación de Nginx con compatibilidad con PHP5 y MySQL en Debian Squeeze
- Instalación de Nginx con soporte PHP5 (y PHP-FPM) y MySQL en Ubuntu 12.10
Una nota para los usuarios de Ubuntu:
Debido a que debemos ejecutar todos los pasos de este tutorial con privilegios de root, podemos anteponer todos los comandos en este tutorial con la cadena sudo, o convertirnos en root ahora mismo escribiendo
sudo su
2 Instalación de APC
APC es un caché de código de operación de PHP gratuito y abierto para almacenar en caché y optimizar el código intermedio de PHP. Es similar a otros cachés de código de operación de PHP, como eAccelerator y XCache. Se recomienda encarecidamente tener uno de estos instalados para acelerar su página PHP.
APC se puede instalar de la siguiente manera:
apt-get install php-apc
Si usa PHP-FPM como su demonio FastCGI (como en Instalación de Nginx con PHP5 (y PHP-FPM) y compatibilidad con MySQL en Ubuntu 12.10), reinícielo de la siguiente manera:
/etc/init.d/php5-fpm restart
Si usa el programa spawn-fcgi de lighttpd como su demonio FastCGI (como en Installing Nginx With PHP5 And MySQL Support On Debian Squeeze), debemos eliminar el proceso spawn-fcgi actual (que se ejecuta en el puerto 9000) y crear uno nuevo. Ejecutar
netstat -tap
para averiguar el PID del proceso actual de spawn-fcgi:
[email protected]:~# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:sunrpc *:* LISTEN 734/portmap
tcp 0 0 *:www *:* LISTEN 2987/nginx
tcp 0 0 *:ssh *:* LISTEN 1531/sshd
tcp 0 0 *:57174 *:* LISTEN 748/rpc.statd
tcp 0 0 localhost.localdom:smtp *:* LISTEN 1507/exim4
tcp 0 0 localhost.localdom:9000 *:* LISTEN 1542/php5-cgi
tcp 0 0 localhost.localdo:mysql *:* LISTEN 1168/mysqld
tcp 0 52 server1.example.com:ssh 192.168.0.198:2462 ESTABLISHED 1557/0
tcp6 0 0 [::]:www [::]:* LISTEN 2987/nginx
tcp6 0 0 [::]:ssh [::]:* LISTEN 1531/sshd
tcp6 0 0 ip6-localhost:smtp [::]:* LISTEN 1507/exim4
[email protected]:~#
En el resultado anterior, el PID es 1542, por lo que podemos eliminar el proceso actual de la siguiente manera:
kill -9 1542
Luego creamos un nuevo proceso spawn-fcgi:
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
3 Instalación de concrete5
La raíz del documento de mi sitio web www.example.com es /var/www/www.example.com/web; si no existe, créelo de la siguiente manera:
mkdir -p /var/www/www.example.com/web
Debido a que concrete5 viene como un archivo .zip, necesitamos instalar unzip:
apt-get install unzip
A continuación, descargamos concrete5 (http://www.concrete5.org/developers/downloads/) y lo colocamos en nuestro documento raíz:
cd /tmp
mkdir concrete5
cd concrete5
wget -O concrete5.6.0.2.zip http://www.concrete5.org/download_file/-/view/44326/8497/
unzip concrete5.6.0.2.zip
rm -f concrete5.6.0.2.zip
cd concrete5.6.0.2/
mv * /var/www/www.example.com/web/
Se recomienda hacer que la raíz del documento y los archivos concrete5 en él puedan ser escritos por el demonio nginx que se ejecuta como usuario www-data y grupo www-data:
chown -R www-data:www-data /var/www/www.example.com/web
Si aún no ha creado una base de datos MySQL para concrete5 (incluido un usuario de MySQL concrete5), puede hacerlo de la siguiente manera (llamo a la base de datos concrete5 en este ejemplo, y el usuario se llama concrete5_admin, y su contraseña es concrete5_admin_password):
mysqladmin -u root -p create concrete5
mysql -u root -p
GRANT ALL PRIVILEGES ON concrete5.* TO 'concrete5_admin'@'localhost' IDENTIFIED BY 'concrete5_admin_password';
GRANT ALL PRIVILEGES ON concrete5.* TO 'concrete5_admin'@'localhost.localdomain' IDENTIFIED BY 'concrete5_admin_password';
FLUSH PRIVILEGES;
quit;
A continuación, creamos una configuración de vhost de nginx para nuestro vhost de www.example.com en el directorio /etc/nginx/sites-available/ de la siguiente manera (he ajustado la ubicación de ubicación de PHP ~ \.php($|/) {} según a http://www.justasysadmin.net/en/practical/configuration-concrete-5-nginx/):
vi /etc/nginx/sites-available/www.example.com.vhost
server { listen 80; server_name www.example.com example.com; root /var/www/www.example.com/web; if ($http_host != "www.example.com") { rewrite ^ http://www.example.com$request_uri permanent; } index index.php index.html index.htm default.html default.htm; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac). location ~ /\. { deny all; access_log off; log_not_found off; } location / { try_files $uri $uri/ /index.php$request_uri /index.php; } location ~ \.php($|/) { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; # use this if PHP-FPM is running on Unix socket /var/run/php5-fpm.sock (Ubuntu 12.10 default) #fastcgi_pass 127.0.0.1:9000; # use this if PHP-FPM is running on TCP port 9000 (Debian Squeeze default) include /etc/nginx/fastcgi_params; fastcgi_index index.php; set $script $uri; set $path_info ""; if ($uri ~ "^(.+\.php)(/.+)") { set $script $1; set $path_info $2; } fastcgi_param URI $uri; fastcgi_param PATH_INFO $path_info; fastcgi_param SCRIPT_NAME $script; fastcgi_param SCRIPT_FILENAME $document_root$script; } } |