Sanoha Web System es un aplicación construida con el framework Laravel 5.1, la cual está programada según los requerimientos de los ingenieros y supervisores del área técnica de la empresa Sanoha LTDA en los procesos de gestión de reporte de labores mineras, novedades y órdenes de trabajo.
- Instalación
Para la instalación se supone un servidor con GNU/Linux Ubuntu Server 14.04 x64 bits debidamente configurado con los siguientes paquetes:
- LAMP o LEMP stack, con:
- PHP >= 5.5.9
- OpenSSL PHP Extension
- PDO PHP Extension
- Mbstring PHP Extension
- Tokenizer PHP Extension
- Composer
- Git
- Node.js
Para la instalación del proyecto se debe clonar este repositorio con Git, lo haremos en una carpeta llamada Test
en /var/www/
:
$ cd /var/www
$ git clone https://github.com/llstarscreamll/sanoha.git Test
Leer más sobre el uso de Git.
Modificamos los permisos de la carpeta storage
:
$ sudo chmod -R 775 storage
Leer más sobre permisos en Ubuntu.
Instalamos las dependencias con Composer entrando en la carpeta del proyecto:
$ cd Test
$ composer install
Leer más sobre uso de Composer.
Instalamos las dependencias con bower estando en la carpeta del proyecto:
$ bower install
Leer más sobre bower.
Se debe configurar el archivo .env
con las variables requeridas por la aplicación, para esto podemos seguir el archivo de ejemplo .env.example
:
APP_ENV=local
APP_DEBUG=true
APP_KEY=generate_key_with_artisan
DB_DEFAULT=mysql
DB_HOST=localhost
DB_DATABASE=dbName
DB_USERNAME=dbUser
DB_PASSWORD=dbPassword
DB_BACKUP_FOLDER=path/to/backup/destination/folder/
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=123456
MAIL_USERNAME=user@domain.com
MAIL_PASSWORD=mailPassword
Los nombres de las variables son descriptivos, se debe asignar el correspondiente valor a cada una.
Leer más sobre configuración de variables de entorno en Laravel.
Luego de ejecutar las migraciones, se debe elegir uno de dos caminos para terminar de configurar la base de datos:
- Sin backup, creando sólamente los datos base de la aplicación, como los permisos, roles, centros de costo, subcentros de costo, áreas, cargos, tipos de labores mineras y tipos de novedades, como no hay datos de usuarios se debe crear el usuario administrador manualmente.
- Con backup, importando datos de una instalación anterior del sistema al motor de base de datos mysql, con los datos que hayan sido creados en esa instalación como información de empleados, reportes de labores mineras, reportes de novedades, órdenes de trabajo, etc.
Corremos las migraciones de la base de datos:
$ php artisan migrate
Leer más sobre migraciones en Laravel.
Si no tenemos un backup de una base de datos de una instalación previa del sistema, corremos los seeders de la base de datos con los datos base de la aplicación:
$ php artisan db:seed
Leer más sobre los seeders en Laravel.
Si existe un backup de la base de datos de una instalación anterior, omitir este paso e ir al paso Restaurar Base de Datos.
Creamos el usuario administrador del sistema con tinker:
$ php artisan tinker
Psy Shell v0.6.1 (PHP 5.5.9-1ubuntu4.13 — cli) by Justin Hileman
>>> \sanoha\Models\User::create(
... [
... 'name' => 'Travis',
... 'lastname' => 'Orbin',
... 'email' => 'travis.orbin@example.com',
... 'password' => bcrypt('123456789'),
... 'activated' => 1,
... 'area_id' => null,
... 'area_chief' => false,
... 'created_at' => date('Y-m-d H:i:s'),
... 'updated_at' => date('Y-m-d H:i:s'),
... 'deleted_at' => null
... ])->attachRole(2); # 2 es el id del rol admin
=> null
>>> exit
Luego de la configuración del servidor web puedes añadir centros de costo, empleados o área al usuario a través de la interfaz de usuario.
Leer más sobre tinker en Laravel.
Si existe un backup de la base de datos de una instalación anterior, omitir este paso e ir al paso Restaurar Base de Datos.
Si existe un backup de la base de datos de una previa instalación del sistema, se debe hacer el proceso de restaurar base de datos en mysql a una tabla previamente configurada, tener en cuenta que si el archivo fue generado automáticamente por el sistema, se debe descomprimir primero.
Subimos el backup que tenemos en el disco local, a la carpeta deseada en el disco del servidor remoto mediante el comando scp:
$ scp backupFile user@123.123.1.123:/home/user/downloads
Donde backupFile
es el archivo que tiene el backup de la base de datos, user
es el usuario con el que inicia sesión en el servidor con ip 123.123.1.123
y :/homes/user/downloads
la ruta de la carpeta de usuario
del servidor remoto donde queremos copiar el archivo.
Ahora nos iniciamos sesión en le servidor remoto:
$ ssh user@123.123.1.123
Se pedirá digitar la contraseña de dicho usuario, luego vamos a la carpeta donde copiamos el archivo y restauramos los datos en la base de datos Test
:
$ cd /home/user/downloads
$ mysql -u db_user -p Test < backupFile
Dónde Test
es el nombre de la base de datos, db_user
es el usuario de la base de datos y backupFile
es el archivo del backup de la base de datos que copiamos en el servidor remoto. Con esto ya deben estar listos los datos de la aplicación en una instalación anterior.
Leer más sobre como restaurar base de datos en mysql.
Ahora configuramos la carpeta public
, para el caso de servidores LEMP:
$ sudo nano /etc/nginx/sites-available/default
Debemos dejar el archivo de la siguiente forma:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/Test/public;
index index.php index.html index.htm;
server_name server_domain_or_IP;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =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;
}
}
Guardamos y cerramos el archivo con CTRL + x
, y reiniciar nginx.
$ sudo service nginx restart
Aprende más sobre cómo configurar host virtual en Nginx.
Para el caso de servidores LAMP:
$ sudo nano ../etc/apache2/sites-available/000-default
Añadir las siguientes líneas al archivo:
DocumentRoot /var/www/Test/public
<Directory /var/www/Test/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Guardamos y cerramos el archivo con CTRL + x
, y reiniciar apache:
$ sudo service apache2 reload
Aprende más sobre cómo configurar host virtual en apache.
Para configurar el programador de tareas digitamos el siguiente comando con permisos de superusuario:
$ sudo crontab -e
Y añadimos las siguiente linea al final del archivo:
* * * * * php /var/www/Test/artisan schedule:run >> /dev/null 2>&1
Donde /var/www/Test/artisan
es la ruta a la carpeta donde clonamos el proyecto, guardamos y cerramos el archivo con Ctrl + x
e iniciamos el servicio cron
con el siguiente comando:
$ sudo cron start
Aprende más sobre las tareas programadas del framework.