CentOS7 に Snipe-IT を導入

# Snipe-IT とは
- 資産管理ツール
- OSS
- Laravel ベース
- hp : [https://snipeitapp.com/](https://snipeitapp.com/)
- git : [https://github.com/snipe/snipe-it](https://github.com/snipe/snipe-it)

# 環境

```bash
cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

uname -a
Linux hostname 3.10.0-693.5.2.el7.x86_64 
#1 SMP Fri Oct 20 20:32:50 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

nginx -v
nginx version: nginx/1.13.6

mysql --version
mysql  Ver 15.1 Distrib 10.1.28-MariaDB, for Linux (x86_64) using readline 5.1

rpm -qa | grep Mari
MariaDB-common-10.1.28-1.el7.centos.x86_64
MariaDB-client-10.1.28-1.el7.centos.x86_64
MariaDB-server-10.1.28-1.el7.centos.x86_64

php -v
PHP 7.0.25 (cli) (built: Oct 24 2017 18:17:05) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

php-fpm -v
PHP 7.0.25 (fpm-fcgi) (built: Oct 24 2017 18:18:32)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
```

# インストール手順
## step1 : nginx

```bash
# install
yum install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum --enablerepo=epel install nginx
 
# auto start
systemctl enable nginx
systemctl start nginx
```

- httpd(80番ポート) への通信を許可

```bash
sudo firewall-cmd --add-service=http --zone=public --permanent
success

sudo  firewall-cmd --reload
success
```

## step2 : php, php-fpm, php-process

- php71 はだめらしい

```bash
yum --enablerepo=remi-php70 install php php-fpm php-mbstring php-pdo php-mysqlnd php-mcrypt php-gd php-zip
```

- php-fpm の実行ユーザとグループの変更

```vim
" /etc/php-fpm.d/www.conf
user = nginx
group = nginx
```

- php-process
    - `php upgrade.php` するために必要

```bash
# 私の場合は 7.0.25-1.el7.remi だから
wget https://rpms.southbridge.ru/rhel7/php-7.0/x86_64/php-process-7.0.25-1.el7.remi.x86_64.rpm
sudo rpm -ivh php-process-7.0.25-1.el7.remi.x86_64.rpm
```

- サービス化

```bash
sudo systemctl enable php-fpm
sudo systemctl start php-fpm
```

## step3 : MariaDB

- 10.2 はダメらしい

```vim
" /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
```

- インストールとサービス自動化

```bash
# install
yum install mariadb mariadb-server

# auto start
sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service
```

- セットアップ

```bash
# setup
mysql_secure_installation
```

- DB と ユーザ作成

```mysql
# mysql -u root -p
MariaDB [(none)]< create database snipeit;
MariaDB [(none)]< grant all on snipeit.* to root@localhost identified by '*****';
MariaDB [(none)]< flush privileges;
MariaDB [(none)]< exit;
```

## step4 : Snipe-IT

- 公式推奨は `git clone`

```bash
sudo git clone https://github.com/snipe/snipe-it /var/www/snipe-it
```
### セットアップ

```bash
cd /var/www/snipe-it
sudo cp .env.example .env
```

- 変更した箇所のみ表示

```vim
" /var/www/snipe-it/.env

# REQUIRED: BASIC APP SETTINGS
" 不具合の原因調査に有効
APP_DEBUG=true

" Snipe-IT をインストールしたマシンのアドレス
APP_URL= null

APP_TIMEZONE='Asia/Tokyo'
fAPP_LOCALE=ja

# REQUIRED: DATABASE SETTINGS
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=snipeit
DB_USERNAME=root
DB_PASSWORD=****
DB_PREFIX=null
DB_DUMP_PATH='/usr/bin'
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
```

### パーミッション

```bash
# /var/www/snipe-it
chown -R nginx:nginx /var/www/snipe-it
chmod -R 755 storage
chmod -R 755 storage/private_uploads
chmod -R 755 public/uploads
```

## step5 : composer

- `/var/www/snipe-it` に直接ダウンロードできなかった

```bash
cd ~
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /var/www/snipe-it
sudo php composer.phar install --no-dev --prefer-source
```

## step6 : APP_KEY

```bash
# /var/www/snipe-it
sudo php artisan key:generate
```

## step7 : nignx.conf

```bash
# /etc/nignx/nginx.conf
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  snipeit;
        root         /var/www/snipe-it/public;
        index index.php index.html index.htm;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            try_files $uri $uri/ /index.php$is_args$args;   ← 追記
        }
        ↓ 追記
        location ~ \.php$ {
            try_files $uri $uri/ =404;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }
｝
```

```bash
sudo systemctl reload nginx
```

# Snipe-IT

- top page

![snipe_top.png](https://qiita-image-store.s3.amazonaws.com/0/78079/868e433f-a44d-8219-4fae-4700e1aacded.png)


- version

| Snipe-IT version           | php version         | Laravel version      |
| :-----------------         | ------------------: | :------------------: |
| v4.1.3 build 48 (g74aa562) | 7.0.25              | 5.4.29               |

# 課題
## 日本語で pdf 保存する際の注意点
- デフォルトでは文字化けした・・・
- pdf 化するときは jsPDF を使っているらしい

# 注意点

## パーミッション

- [laravel5のインストールで、ファイルパーミッションエラー - システムオペレータの週末](http://momoiro-tj.hateblo.jp/entry/2016/01/12/221657)

```bash
sudo chcon -R -t httpd_sys_rw_content_t /var/www/laravel/storage
sudo chcon -R -t httpd_sys_rw_content_t /var/www/laravel/bootstrap/cache
```

# メール

- [email - Connection could not be established with host smtp.gmail.com [Permission denied #13] - Stack Overflow](https://stackoverflow.com/questions/36937441/connection-could-not-be-established-with-host-smtp-gmail-com-permission-denied)

```bash
sudo setsebool -P httpd_can_network_connect on
sudo setsebool -P httpd_can_sendmail on
```


# 参考
- [Laravelベースで使いやすい!Snipe-IT(オープンソースIT資産管理) – ORATTA Labs Blog](https://labs.oratta.net/2017/03/985/)
- [オープンソースIT資産管理ツール Snipe-ITのインストール - bnote](http://www.bnote.net/centos/snipe-it.html)