$ sudo apt-get update
$ sudo fallocate -l 1G /swapfile
Verificamos que el espacio reservado sea el correcto:
$ ls -lh /swapfile
-rw-r--r-- 1 root root 1.0G Jun 16 15:43 /swapfile
Por seguridad cambiamos los permisos:
$ sudo chmod 600 /swapfile
Verificamos que el archivo tenga los permisos correctos:
$ ls -lh /swapfile
-rw------- 1 root root 1.0G Jun 16 15:43 /swapfile
Ahora podemos configurar nuestra swap
$ sudo mkswap /swapfile
Salida:
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=e2f1e9cf-c0a9-4ed4-b8ab-714b8a7d6944
$ sudo swapon /swapfile
Verificamos que el procedimiento fue exitoso comprobando que el sistema informa el espacio de intercambio:
$ sudo swapon -s
Filename Type Size Used Priority
/swapfile file 4194300 0 -1
Tenemos creado y habilitado el nuevo archivo swap, ahora podemos ejecutar el comando free y aparecera la Swap:
$ free -m
total used free shared buffers cached
Mem: 3953 101 3851 0 5 30
-/+ buffers/cache: 66 3887
Swap: 4095 0 4095
$ sudo apt-get install nginx
Para conocer la ip pública del servidor:
$ ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
o usar:
$ curl http://icanhazip.com
En el navegador verificamos que podemos ver la página por defecto de nginx desde el host (nombre del dominio o IP)
http://server_domain_name_or_IP
$ sudo apt-get install mysql-server
$ sudo mysql_install_db
A continuación configuramos mysql:
$ sudo mysql_secure_installation
Instalamos php-fpm y la extensión para mysql:
$ sudo apt-get install php5-fpm php5-mysql
Configuramos php:
$ sudo vim /etc/php5/fpm/php.ini
Descomentar la siguiente línea:
cgi.fix_pathinfo=0
Reiniciar el servicio de php-fpm:
$ sudo service php5-fpm restart
Respaldar el archivo default:
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default_bkp
Ahora lo editamos:
$ sudo vim /etc/nginx/sites-available/default
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
}
- En la directiva index agregamos como primer valor index.php
- En server_name, reemplazar localhost por el nombre del dominio o la IP
- Eliminar todos los comentarios
- Añadimos la directiva try_files para asegurarnos que Nginx no pasa malas peticiones al procesador de PHP.
Finalmente el archivo debe quedar así:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name server_domain_name_or_IP;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Reiniciamos Nginx:
$ sudo service nginx restart
Crear un archivo php de test para probar la configuración por defecto:
$ sudo vim /usr/share/nginx/html/info.php
Agregar las siguientes líneas al archivo:
<?php
phpinfo();
?>
Ahora podemos visitar la página en el navegador, ingresando el nombre del dominio o ip seguido de /info.php
http://server_domain_name_or_IP/info.php
Luego de verificar que todo esta ok eliminamos el archivo info.php:
$ sudo rm /usr/share/nginx/html/info.php
$ sudo apt-get install php5-cli
Ejecutar el siguiente comando:
$ cd ~
$ curl -sS https://getcomposer.org/installer | php
Esto descargará el archivo composer.phar en la carpeta del usuario. Este archivo tendría que ser ejecutado cada vez que queramos utilizar composer. Para instalarlo de manera global moveremos el archivo a la carpeta /usr/local/bin
$ sudo mv ~/composer.phar /usr/local/bin/composer
$ sudo apt-get install git
Luego de instalar Git copiamos a ~/.ssh las llaves ssh de nuestro usuario asociadas al repositorio que realizaremos el clone y cambiamos los permisos por 400.
1. Hacer un clone del repositorio en /var/www
Crear carpeta /var/www y cambiar propietario y grupo por ubuntu
$ sudo mkdir /var/www
$ chown ubuntu:ubuntu /var/www
Cambiamos de directorio a /var/www y realizamos el clone
$ cd /var/www
$ git clone SSH_URLs
2. A la carpeta storage y a sus subdirectorios cambiar propietario y grupo por www-data
$ cd miproyecto
$ sudo chown -Rvf www-data:www-data storage
3. Ejecutar composer update para descargar las dependencias del proyecto
$ composer update
4. Crear base de datos e importar dump
$ mysql -u root -p
Enter password:
mysql> CREATE DATABASE ejemplo
mysql> exit
$ cd /var/www/miproyecto/db_schema
$ mysql -u root -p ejemplo < dump.sql
5. Crear copia del archivo .env.example y renombrarla como .env
Cambiamos de directorio a la raiz del proyecto y listamos todos los archivos para ver los archivos ocultos
$ cd /var/www/miproyecto/
$ ls -a
Copiamos el archivo y lo renombramos a .env
$ cp .env.example .env
Comprobamos que el archivo se copio exitosamente
$ ls -a
Editamos el archivo .env y modificamos la clave de la base de datos
$ vim .env
DB_PASSWORD=CLAVE_BD
6. Instalar imagemagick e imagick
$ sudo apt-get install imagemagick
$ sudo apt-get install php5-imagick
Reiniciar el servicio php5-fpm
$ sudo service php5-fpm restart
Crear un nuevo archivo para nuestro virtual host en /etc/nginx/sites-available/
$ sudo vim /etc/nginx/sites-available/miproyecto
Ingresar lo siguiente:
limit_req_zone $cookie_PHPSESSID zone=twelve:10m rate=3r/s;
limit_req_zone $binary_remote_addr zone=thirteen:10m rate=10r/s;
server {
server_name ejemplo.miproyecto.cl;
root /var/www/miproyecto/public;
index index.html index.php;
access_log /var/log/miproyecto/access.log;
error_log /var/log/miproyecto/error.log;
# set expiration of assets to MAX for caching
location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
expires max;
log_not_found off;
}
location ~* \.(git|rb|inc|ht) {
deny all;
}
location / {
# Check if a file or directory index file exists, else route it to index.php.
try_files $uri $uri/ /index.php;
}
location ~* \.php$ {
limit_req zone=twelve burst=10;
limit_req zone=thirteen burst=10;
try_files $uri =404;
# fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}
}
Por ahora la configuración utilizará php-fpm por socket
Crear link simbólico del nuevo virtual host en /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/miproyecto /etc/nginx/sites-enabled/
Crear carpeta para almacenar los logs:
$ sudo mkdir /var/log/miproyecto
Finalmente reiniciar Nginx:
$ sudo service nginx restart
Tutoriales relacionados