GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar Factura Ninja en CentOS 7

Invoice Ninja es un software gratuito y de código abierto basado en la web para facturación, pagos, seguimiento del tiempo y mucho más. Puede crear facturas en línea en segundos, integrarlas con pasarelas de pago como Stripe, PayPal y WePay. Invoice Ninja puede mostrar su factura en vivo como archivo PDF, puede configurar el logotipo de su propia empresa y usar plantillas de factura personalizadas. Invoice Ninja está basado en PHP, construido con Laravel Framework y se puede instalar en Linux, Windows y Mac.

En este tutorial, le mostraré cómo instalar y configurar Invoice Ninja en un servidor CentOS 7. Usaré Nginx como servidor web y MariaDB como sistema de base de datos.

Requisito previo

  • Servidor CentOS 7
  • Privilegios de raíz

Paso 1:instalar Nginx

En este paso, instalaremos el servidor web Nginx. Conéctese a su servidor con su cuenta ssh rot.

ssh [email protected]

Antes de instalar Nginx, debe instalar el repositorio Epel en su sistema CentOS.

yum -y install epel-release

Ahora puede instalar Nginx con el siguiente comando yum desde el repositorio de epel:

yum -y install nginx

Cuando finalice la instalación, inicie Nginx y habilítelo para que se inicie en el momento del arranque.

systemctl start nginx
systemctl enable nginx

Asegúrese de que Nginx se esté ejecutando comprobando el puerto utilizado por Nginx (puerto 80).

netstat -plntu

Nota:

Si no encuentra el comando netstat, puede instalar herramientas de red como esta:

yum -y install net-tools

Paso 2:instalar y configurar el servidor MariaDB

Después de instalar Nginx, necesitamos instalar el servidor mariadb en el sistema. Está disponible en el repositorio de CentOS. Instale mariadb-server y todos los paquetes necesarios para MariaDB con el siguiente comando.

yum install -y mariadb-server

Inicie el servicio mariadb y habilítelo para que se inicie en el momento del arranque con el comando systemctl.

systemctl start mariadb
systemctl enable mariadb

Se inició MariaDB, ahora puede configurar la contraseña raíz para MariaDB con el comando 'mysql_secure_installation'.

mysql_secure_installation

Configure su contraseña raíz de MariaDB.

Set root password? [Y/n] Y
New password:
Re-enter new password:

Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Si todo está listo, puede intentar conectarse con el shell de MySQL y el usuario root.

mysql -u root -p
TYPE YOUR ROOT PASSWORD

Verá el shell de MySQL.

A continuación, debemos crear una nueva base de datos y un nuevo usuario para Invoice Ninja en el shell de MySQL que abrimos. Crearemos una nueva base de datos llamada 'ninjadb ', un nuevo usuario 'ninja ' con contraseña 'aqwe123 '. Elija una contraseña segura diferente para su instalación.

Cree todo con las consultas de MySQL a continuación:cree una nueva base de datos, cree un nuevo usuario y contraseña, otorgue acceso a la base de datos al nuevo usuario con contraseña.

create database ninjadb;
create user [email protected] identified by 'aqwe123';
grant all privileges on ninjadb.* to [email protected] identified by 'aqwe123';
flush privileges;

Se instaló MariaDB y se creó una nueva base de datos y un usuario para Invoice Ninja.

Paso 3:instalar y configurar PHP7.0-FPM

Invoice Ninja está basado en PHP, por lo que debemos instalarlo en el sistema. Usaré PHP7.0-FPM para la instalación de Invoice Ninja.

No hay PHP7.0 en el repositorio predeterminado de CentOS, por lo que debemos agregar un nuevo repositorio PHP7.0 al sistema. Usaré el repositorio webtatic.

Agregue el repositorio PHP7.0 al sistema.

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Ahora puede instalar PHP7.0-FPM y otras extensiones de PHP que necesita Invoice Ninja desde el repositorio webtatic.

yum -y install php70w-fpm php70w-cli php70w-pear php70w-gd php70w-xml php70w-mysql php70w-zip php70w-mbstring php70w-mcrypt php70w-curl php70w-gmp php70w-pdo

Cuando finalice la instalación, edite el archivo de configuración php.ini con vim.

vim /etc/php.ini

Descomente la línea cgi.fix_pathinfo a continuación y cambie el valor a 0.

cgi.fix_pathinfo=0

Guarde el archivo y salga de vim.

Luego edite el archivo de configuración de PHP-FPM.

vim /etc/php-fpm.d/www.conf

Cambie el usuario y el grupo en las líneas 8 y 10 a 'nginx ' grupo.

user = nginx
group = nginx

En lugar de un puerto, usaremos un archivo de socket para php-fpm. Cambie la línea de escucha a '/var/run/php/php-fpm.sock '.

listen = /var/run/php/php-fpm.sock

Descomente la configuración, el propietario, el grupo y el permiso del archivo de socket.

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Descomente las variables de entorno de php-fpm en la línea 366-370.

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Guarde el archivo y salga del editor.

Ahora necesitamos crear un nuevo directorio de sesión PHP y cambiar el propietario al usuario y grupo nginx.

mkdir -p /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session/

Cree un nuevo directorio para el archivo de socket y cambie el permiso al usuario y grupo nginx.

mkdir -p /var/run/php/
chown -R nginx:nginx /var/run/php/

A continuación, inicie PHP7.0-FPM y agréguelo para que comience en el momento del arranque.

systemctl start php-fpm
systemctl enable php-fpm

Se ha iniciado PHP-FPM. Ahora puede comprobarlo con el siguiente comando y verá el archivo de socket de PHP.

netstat -pl

PHP7.0-FPM y todas las extensiones que necesita Invoice Ninja están instaladas.

Paso 4:instalar y configurar Invoice Ninja

En este paso, descargaremos y configuraremos Invoice Ninja. Primero, instale unzip en su sistema.

yum -y install unzip

Cree un nuevo directorio para los archivos webroot de Invoice Ninja.

mkdir -p /var/www/
cd /var/www/

Descarga Invoice Ninja con el comando wget.

wget https://download.invoiceninja.com/ninja-v3.1.0.zip

Extraiga el archivo zip de Invoice Ninja y vaya a 'ninja ' directorio.

unzip ninja-v3.1.0.zip
cd ninja/

Para el proyecto Laravel, necesitamos instalar composer, un administrador de dependencias para PHP.

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer

Ahora puedes usar el comando composer.

A continuación, instale las dependencias de Invoice Ninja con el siguiente comando composer.

composer install --no-dev -o
  • --sin desarrollo: Deshabilita la instalación de paquetes require-dev.
  • -o: Optimice el cargador automático durante el volcado del cargador automático.

Cuando termine la instalación de la dependencia, copie el archivo .env y edítelo con vim.

cp .env.example .env
vim .env

Cambie el valor de la configuración de la base de datos a continuación.

DB_DATABASE=ninjadb
DB_USERNAME=ninja
DB_PASSWORD=aqwe123

Guardar y salir.

A continuación, edite la configuración de la base de datos en el directorio de configuración.

vim config/database.php

Estamos usando la base de datos MariaDB/MySQL, vaya a la configuración de MySQL en la línea 55.

'database'  => env('DB_DATABASE', 'ninjadb'),
'username'  => env('DB_USERNAME', 'ninja'),
'password'  => env('DB_PASSWORD', 'aqwe123'),

Guardar y salir.

Se editan todos los archivos de configuración, luego prepare la base de datos con el siguiente comando.

php artisan migrate

Se le pedirá que ejecute el comando, escriba 'sí' y presione Entrar.

A continuación, sembrar la base de datos con todos los registros.

php artisan db:seed

Escribe 'sí' y presiona Enter para confirmar.

Genere la clave de la aplicación.

php artisan key:generate

Verá la clave de la aplicación.

Edite el archivo app.php con vim.

vim config/app.php

Vaya a la línea 85 de APP_KEY y pegue la clave generada (la clave a continuación es un ejemplo, use la clave que obtuvo del comando anterior en su lugar).

'key' => env('APP_KEY', 'base64:0o5QLWbNeDCNer064+600Hl8oJ20OPCIymadKJQ1RGo='),

Guardar y salir.

Finalmente, cambie el propietario del directorio '/var/www/ninja' al usuario y grupo 'nginx'.

cd /var/www/
chown -R nginx:nginx ninja/

Factura Ninja ha sido configurado y está listo para la instalación.

Paso 5:configurar SSL y el host virtual

En este paso, generaremos un archivo de certificado SSL con el comando openssl y crearemos una nueva configuración de host virtual para Invoice Ninja. Si está en un servidor en vivo, también puede usar un SSL gratuito de Let's Encrypt.

Cree un nuevo directorio 'cert' para los archivos SSL.

mkdir -p /etc/nginx/cert/

Ejecute el siguiente comando OpenSSL para generar los archivos de certificado.

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/ninja.crt -keyout /etc/nginx/cert/ninja.key

Cambie el permiso de los archivos de certificado a '600'.

chmod 600 /etc/nginx/cert/*

A continuación, vaya al directorio Nginx y cree un nuevo archivo de configuración de host virtual llamado 'ninja.conf '.

cd /etc/nginx/
vim conf.d/ninja.conf

Pegue la configuración del host virtual a continuación.

server {
    # Your Domain Name - hakase-labs.co
    listen      80;
    server_name ninja.co www.ninja.co;

    # Rewrite redirect to https
    add_header Strict-Transport-Security max-age=2592000;
    rewrite ^ https://$server_name$request_uri? permanent;
}

server {
    # Your Domain Name - hakase-labs.co
    listen      443 default;
    server_name ninja.co www.ninja.co;

    # Enable SSL for Invoice Ninja
    ssl on;
    ssl_certificate     /etc/nginx/cert/ninja.crt;
    ssl_certificate_key /etc/nginx/cert/ninja.key;
    ssl_session_timeout 5m;

    ssl_ciphers               'AES128+EECDH:AES128+EDH:!aNULL';
    ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    # Invoice Ninja web root files
    root /var/www/ninja/public;

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    # Access and Error Log for Invoice Ninja
    access_log  /var/log/nginx/ininja.access.log;
    error_log   /var/log/nginx/ininja.error.log;

    sendfile off;

    # Handle PHP Applications
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    location ~ /\.ht {
        deny all;
    }
}

Guardar y salir.

Ahora pruebe la configuración de Nginx y asegúrese de que no haya errores.

nginx -t

Reinicie el servidor web Nginx.

systemctl restart nginx

Se ha creado la configuración del host virtual de Invoice Ninja.

Paso 6:configurar SELinux y Firewalld

Si su SELinux está apagado, puede omitir este paso y comenzar a configurar Firewalld. En este paso, configuraremos SELinux y Firewalld para Invoice Ninja. Verifique el estado de su SELinux y asegúrese de que el firewalld esté instalado.

Verifique el estado de SELinux con el siguiente comando.

getenforce

Si su SELinux está activado, verá los resultados 'Obligatorio' o 'Permisivo'.

Ahora instale las herramientas de administración de SELinux desde el repositorio.

yum -y install policycoreutils-python

Y ejecute los comandos a continuación para permitir que Invoice Ninja se ejecute bajo SELinux en modo de Cumplimiento.

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/public(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/storage(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/app(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/bootstrap(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/database(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/resources(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/vendor(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/tests(/.*)?'
restorecon -Rv '/var/www/ninja/'

A continuación, debemos abrir el puerto del servidor para poder acceder a Invoice Ninja desde el exterior.

Asegúrese de que firewalld esté instalado en su sistema, o puede instalarlo con el comando yum.

yum -y install firewalld

Inicie firewalld y habilítelo para que se inicie en el momento del arranque.

systemctl start firewalld
systemctl enable firewalld

Ahora necesitamos abrir los puertos HTTP y HTTPS para Invoice Ninja. Ejecute los siguientes comandos para abrir los puertos.

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

SELinux y Firewalld están configurados.

Paso 7 - Prueba

Abra su navegador web y escriba la URL de Factura Ninja, en mi caso:ninja.co.

Será redirigido a una conexión https y a la página de configuración.

Ingrese los detalles de configuración solicitados, la configuración de la aplicación, la conexión de la base de datos, la configuración del correo electrónico, los detalles del usuario y verifique los TOS de Invoice Ninja.

Haga clic en 'Enviar ' y será redirigido a la página de inicio de sesión de Invoice Ninja.

Escriba su correo electrónico y contraseña, luego presione 'INICIAR SESIÓN '.

Verá el panel Ninja de facturas.

Página de configuración de Ninja de facturas.

Invoice Ninja se instaló con Nginx y MariaDB en CentOS 7.

Referencias

  • https://calyrium.org/post/install-invoiceninja-archlinux-nginx/
  • https://github.com/Lykegenes/vps-toolkit/blob/master/apps/invoice-ninja-nginx

Cent OS
  1. Cómo instalar y configurar Nginx en CentOS 7

  2. Cómo instalar Nginx en CentOS 7

  3. Cómo instalar R en CentOS 7

  4. Cómo instalar phpMyAdmin con Nginx en CentOS 7

  5. Cómo instalar Factura Ninja en Debian 9

Cómo instalar Factura Ninja en CentOS 7

Cómo instalar Factura Ninja en CentOS 8

Cómo instalar Nginx en CentOS 7

Cómo instalar Factura Ninja en Debian 10

¿Cómo instalar Nginx en CentOS 7?

Cómo instalar Nginx en CentOS 8