웹사이트 검색

CentOS 7에 인보이스 닌자를 설치하는 방법


이 페이지에서

  1. 1단계 - Nginx 설치
  2. 2단계 - MariaDB 서버 설치 및 구성
  3. 3단계 - PHP7.0-FPM 설치 및 구성
  4. 4단계 - Invoice Ninja 설치 및 구성
  5. 5단계 - SSL 및 가상 호스트 구성\n
  6. 6단계 - SELinux 및 방화벽 구성\n
  7. 7단계 - 테스트
  8. 참조

Invoice Ninja는 송장 발행, 결제, 시간 추적 등을 위한 무료 오픈 소스 웹 기반 소프트웨어입니다. 몇 초 만에 온라인으로 인보이스를 생성하고 스트라이프, PayPal 및 WePay와 같은 결제 게이트웨이와 통합할 수 있습니다. Invoice Ninja는 라이브 인보이스를 PDF 파일로 표시할 수 있으며, 자신의 회사 로고를 설정하고 맞춤 인보이스 템플릿을 사용할 수 있습니다. Invoice Ninja는 PHP를 기반으로 하고 Laravel 프레임워크로 빌드되며 Linux, Windows 및 Mac에 설치할 수 있습니다.

이 튜토리얼에서는 CentOS 7 서버에서 Invoice Ninja를 설치하고 구성하는 방법을 보여줍니다. Nginx를 웹 서버로 사용하고 MariaDB를 데이터베이스 시스템으로 사용하겠습니다.

전제 조건

  • CentOS 7 서버
  • 루트 권한\n

1단계 - Nginx 설치

이 단계에서는 Nginx 웹 서버를 설치합니다. ssh rot 계정으로 서버에 연결하십시오.

ssh 

Nginx를 설치하기 전에 CentOS 시스템에 Epel 리포지토리를 설치해야 합니다.

yum -y install epel-release

이제 epel 저장소에서 아래의 yum 명령으로 Nginx를 설치할 수 있습니다.

yum -y install nginx

설치가 완료되면 Nginx를 시작하고 부팅 시 시작되도록 활성화합니다.

systemctl start nginx
systemctl enable nginx

Nginx에서 사용하는 포트(포트 80)를 확인하여 Nginx가 실행 중인지 확인합니다.

netstat -plntu

메모:

netstat 명령을 찾을 수 없는 경우 다음과 같이 net-tools를 설치할 수 있습니다.

yum -y install net-tools

2단계 - MariaDB 서버 설치 및 구성

Nginx를 설치한 후 시스템에 mariadb-server를 설치해야 합니다. CentOS 저장소에서 사용할 수 있습니다. 아래 명령을 사용하여 mariadb-server 및 MariaDB에 필요한 모든 패키지를 설치합니다.

yum install -y mariadb-server

mariadb 서비스를 시작하고 systemctl 명령어로 부팅 시 시작되도록 설정합니다.

systemctl start mariadb
systemctl enable mariadb

MariaDB가 시작되었으므로 이제 mysql_secure_installation 명령을 사용하여 MariaDB의 루트 암호를 설정할 수 있습니다.

mysql_secure_installation

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

모두 완료되면 MySQL 셸 및 루트 사용자로 연결을 시도할 수 있습니다.

mysql -u root -p
TYPE YOUR ROOT PASSWORD

MySQL 셸이 표시됩니다.

다음으로, 우리가 연 MySQL 셸에서 Invoice Ninja에 대한 새 데이터베이스와 새 사용자를 생성해야 합니다. 암호가 aqwe123인 새 사용자 ninja인 ninjadb라는 새 데이터베이스를 생성합니다. 설치를 위해 다른 보안 암호를 선택하십시오.

아래의 MySQL 쿼리로 모든 것을 생성합니다. 새 데이터베이스 생성, 새 사용자 및 암호 생성, 암호를 사용하여 새 사용자에게 데이터베이스 액세스 권한 부여.

create database ninjadb;
create user identified by 'aqwe123';
flush privileges;

MariaDB가 설치되었고 Invoice Ninja를 위한 새 데이터베이스와 사용자가 생성되었습니다.

3단계 - PHP7.0-FPM 설치 및 구성

Invoice Ninja는 PHP를 기반으로 하므로 시스템에 설치해야 합니다. Invoice Ninja 설치에 PHP7.0-FPM을 사용하겠습니다.

CentOS 기본 리포지토리에는 PHP7.0이 없으므로 시스템에 새 PHP7.0 리포지토리를 추가해야 합니다. webtatic 저장소를 사용하겠습니다.

시스템에 PHP7.0 리포지토리를 추가합니다.

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

이제 webtatic 저장소에서 Invoice Ninja에 필요한 PHP7.0-FPM 및 기타 PHP 확장을 설치할 수 있습니다.

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

설치가 완료되면 vim으로 php.ini 구성 파일을 편집합니다.

vim /etc/php.ini

아래 cgi.fix_pathinfo 행의 주석을 제거하고 값을 0으로 변경하십시오.

cgi.fix_pathinfo=0

파일을 저장하고 vim을 종료합니다.

그런 다음 PHP-FPM 구성 파일을 편집합니다.

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

8행과 10행의 사용자 및 그룹을 nginx 그룹으로 변경합니다.

user = nginx
group = nginx

포트 대신 php-fpm용 소켓 파일을 사용합니다. 수신 라인을 /var/run/php/php-fpm.sock으로 변경합니다.

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

소켓 파일 구성, 소유자, 그룹 및 권한의 주석을 제거하십시오.

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

366-370행에서 php-fpm 환경 변수의 주석 처리를 제거하십시오.

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

파일을 저장하고 편집기를 종료합니다.

이제 새로운 PHP 세션 디렉토리를 생성하고 소유자를 nginx 사용자 및 그룹으로 변경해야 합니다.

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

소켓 파일의 새 디렉토리를 만들고 nginx 사용자 및 그룹에 대한 권한을 변경합니다.

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

다음으로 PHP7.0-FPM을 시작하고 부팅 시 시작하도록 추가합니다.

systemctl start php-fpm
systemctl enable php-fpm

PHP-FPM이 시작되었습니다. 이제 아래 명령으로 확인할 수 있으며 PHP 소켓 파일이 표시됩니다.

netstat -pl

PHP7.0-FPM 및 Invoice Ninja에 필요한 모든 확장이 설치됩니다.

4단계 - Invoice Ninja 설치 및 구성

이 단계에서는 Invoice Ninja를 다운로드하고 구성합니다. 먼저 시스템에 unzip을 설치합니다.

yum -y install unzip

Invoice Ninja 웹루트 파일을 위한 새 디렉토리를 생성합니다.

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

wget 명령으로 Invoice Ninja를 다운로드합니다.

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

Invoice Ninja zip 파일을 추출하고 ninja 디렉토리로 이동합니다.

unzip ninja-v3.1.0.zip
cd ninja/

Laravel 프로젝트의 경우 PHP용 종속성 관리자인 작곡가를 설치해야 합니다.

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

이제 작곡가 명령을 사용할 수 있습니다.

다음으로 아래의 작성기 명령을 사용하여 Invoice Ninja 종속 항목을 설치합니다.

composer install --no-dev -o

  • --no-dev: require-dev 패키지 설치를 비활성화합니다.\n
  • -o: 오토로더 덤프 중에 오토로더를 최적화합니다.\n

종속성 설치가 완료되면 .env 파일을 복사하고 vim으로 편집합니다.

cp .env.example .env
vim .env

아래 데이터베이스 설정 값을 변경하십시오.

DB_DATABASE=ninjadb
DB_USERNAME=ninja
DB_PASSWORD=aqwe123

저장 및 종료.

다음으로 config 디렉토리에서 데이터베이스 구성을 편집합니다.

vim config/database.php

우리는 MariaDB/MySQL 데이터베이스를 사용하고 있습니다. 55행의 MySQL 설정으로 이동합니다.

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

저장 및 종료.

모든 구성 파일을 편집한 다음 아래 명령으로 데이터베이스를 준비합니다.

php artisan migrate

명령을 실행하라는 메시지가 표시되면 yes를 입력하고 Enter 키를 누릅니다.

다음으로 모든 레코드로 데이터베이스를 시드합니다.

php artisan db:seed

yes를 입력하고 Enter 키를 눌러 확인합니다.

애플리케이션 키를 생성합니다.

php artisan key:generate

응용 프로그램 키가 표시됩니다.

vim으로 app.php 파일을 편집합니다.

vim config/app.php

APP_KEY 라인 85로 이동하여 생성된 키를 붙여넣습니다(아래 키는 예시이며 대신 위 명령에서 얻은 키 사용).

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

저장 및 종료.

마지막으로 /var/www/ninja 디렉토리의 소유자를 nginx 사용자 및 그룹으로 변경합니다.

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

Invoice Ninja가 구성되었으며 설치할 준비가 되었습니다.

5단계 - SSL 및 가상 호스트 구성

이 단계에서는 openssl 명령을 사용하여 SSL 인증서 파일을 생성하고 Invoice Ninja에 대한 새 가상 호스트 구성을 생성합니다. 라이브 서버에 있는 경우 Lets Encrypt의 무료 SSL도 사용할 수 있습니다.

SSL 파일에 대한 새 인증서 디렉토리를 작성하십시오.

mkdir -p /etc/nginx/cert/

아래의 OpenSSL 명령을 실행하여 인증서 파일을 생성하십시오.

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

인증서 파일의 권한을 600으로 변경합니다.

chmod 600 /etc/nginx/cert/*

다음으로 Nginx 디렉터리로 이동하여 ninja.conf라는 새 가상 호스트 구성 파일을 만듭니다.

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

아래에 가상 호스트 구성을 붙여넣으십시오.

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;
    }
}

저장 및 종료.

이제 Nginx 구성을 테스트하고 오류가 없는지 확인하십시오.

nginx -t

Nginx 웹 서버를 다시 시작합니다.

systemctl restart nginx

Invoice Ninja 가상 호스트 구성이 생성되었습니다.

6단계 - SELinux 및 Firewalld 구성

SELinux가 꺼져 있으면 이 단계를 건너뛰고 방화벽 구성을 시작할 수 있습니다. 이 단계에서는 Invoice Ninja에 대한 SELinux 및 Firewalld를 구성합니다. SELinux 상태를 확인하고 firewalld가 설치되어 있는지 확인하십시오.

아래 명령으로 SELinux 상태를 확인하십시오.

getenforce

SELinux가 켜져 있으면 Enforcing 또는 Permissive 결과가 표시됩니다.

이제 저장소에서 SELinux 관리 도구를 설치하십시오.

yum -y install policycoreutils-python

그리고 Enforcing 모드에서 SELinux에서 실행 중인 Invoice Ninja를 허용하려면 아래 명령을 실행하십시오.

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/'

다음으로 Invoice Ninja가 외부에서 액세스할 수 있도록 서버 포트를 열어야 합니다.

방화벽이 시스템에 설치되어 있는지 확인하거나 yum 명령으로 설치할 수 있습니다.

yum -y install firewalld

방화벽을 시작하고 부팅 시간이 시작되도록 활성화하십시오.

systemctl start firewalld
systemctl enable firewalld

이제 Invoice Ninja용 HTTP 및 HTTPS 포트를 열어야 합니다. 아래 명령을 실행하여 포트를 엽니다.

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

SELinux 및 Firewalld가 구성됩니다.

7단계 - 테스트

웹 브라우저를 열고 Invoice Ninja URL을 입력합니다. 제 경우에는 ninja.co입니다.

https 연결 및 설정 페이지로 리디렉션됩니다.

요청된 구성 세부 정보, 애플리케이션 설정, 데이터베이스 연결, 이메일 설정, 사용자 세부 정보를 입력하고 Invoice Ninja TOS를 확인하십시오.

제출을 클릭하면 Invoice Ninja의 로그인 페이지로 리디렉션됩니다.

이메일과 비밀번호를 입력하고 LOGIN을 누릅니다.

인보이스 닌자 대시보드가 표시됩니다.

인보이스 닌자 설정 페이지.

Invoice Ninja는 CentOS 7에 Nginx 및 MariaDB와 함께 설치되었습니다.

참조

  • https://github.com/Lykegenes/vps-toolkit/blob/master/apps/invoice-ninja-nginx