nekyo のすべての投稿
Ubuntu環境構築
UbuntuのOSは入っている前提で
SELinuxオフ
1 2 3 4 |
$ vi /etc/selinux/config - SELINUX=enforcing + SELINUX=disabled |
アップデート・アップグレード
1 2 3 |
$ sudo apt-get update $ sudo apt-get upgrade |
Webサーバー
apache2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ apt-get -y install apache2 root@www:~# vi /etc/apache2/conf-enabled/security.conf # 25行目:変更 ServerTokens Prod $ vi /etc/apache2/mods-enabled/dir.conf # 2行目:ディレクトリ名のみでアクセスできるファイル名を設定 DirectoryIndex index.html index.htm $ vi /etc/apache2/apache2.conf # 70行目:サーバー名追記 ServerName xxx.xxx.xxx $ vi /etc/apache2/sites-enabled/000-default.conf # 11行目:管理者アドレス変更 ServerAdmin xxx@xxx.xxx + <Directory /var/www/html> + Options FollowSymLinks + AllowOverride all + </Directory> $ a2enmod rewrite $ systemctl restart apache2 |
https も使うなら SSL のモジュールを有効にする。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ sudo a2enmod ssl $ sudo a2ensite default-ssl $ vi /etc/apache2/sites-available/default-ssl.conf + ServerName localhost:443 DocumentRoot /var/www/html : + <Directory /var/www/html> ← .htaccess とか使うならこれも必要 + Options FollowSymLinks + AllowOverride all + </Directory> $ sudo service apache2 restart |
ファイヤーウォール設定
1 2 3 4 5 |
$ ufw status $ ufw allow to any port 80 $ ufw allow to any port 443 ← https も使うなら設定する。 $ ufw reload |
DB
MySQL
インストール
1 2 3 4 5 6 |
$ sudo apt-get install mysql-server # 途中で root のパスワードを聞いてくるので入力して控えておく $ systemctl enable mysql $ systemctl start mysql $ mysql_secure_installation |
ユーザ作成
1 2 3 4 5 6 7 8 9 |
$ mysql -p Enter password: mysql> CREATE USER ユーザ名; mysql> CREATE USER user IDENTIFIED BY [PASSWORD] ‘パスワード’; MySQL> CREATE DATABASE DB名 CHARACTER SET utf8; MySQL> GRANT ALL ON DB名.* to ユーザ名; MySQL> FLUSH PRIVILEGES; mysql> \q |
PHP7
リポジトリインストール
PHP 7.0 インストール
1 2 3 4 5 |
$ sudo apt-get install php7.0 php7.0-opcache php7.0-mbstring php7.0-xml php7.0-gd php7.0-mysqli php7.0-zip php7.0-curl $ sudo apt-get install libapache2-mod-php7.0 $ a2enmod php7.0 $ systemctl restart apache2 |
トラシュー
Composer で
Composer で何かやろうとしたとき以下の様なエラーが出る
1 2 3 4 |
[Composer\Downloader\TransportException] The "http://packagist.org/p/provider-2017-07%248509dd1d7587d7cde6c580bdbac4c49c3f3b373f243c953dfce84ed8916a4c5a .json" file could not be downloaded (HTTP/1.1 404 Not Found) |
diag を実行するとどこでエラーかわかるので、見てみると pubkeys でエラーになっていた。
1 2 3 4 5 6 7 |
$ composer diag : Checking pubkeys: FAIL Missing pubkey for tags verification Missing pubkey for dev verification Run composer self-update --update-keys to set them up |
こんなときは pubkey を入れなおす。update-keys を実行すると以下の様に聞いてくるので
1 2 3 4 |
$ composer self-update --update-keys Enter Dev / Snapshot Public Key (including lines with -----): Enter Tags Public Key (including lines with -----): |
https://composer.github.io/pubkeys.html の —–BEGIN PUBLIC KEY—– から —–END PUBLIC KEY—– までを全て入力する。
GPGエラー
apt-get update で以下の様なエラーが出る場合
1 2 |
W: GPG エラー: http://ftp.debian.org jessie-backports InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010 |
1 2 3 |
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553 $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010 |
の様にキーを追加してやる。debian.org とかあるけれど keyserver.ubuntu.com で良いらしい。
Laravel 権限追加
1 2 |
$ php artisan make:migration modify_users_admin_column |
これで空のマイグレーションファイルを作ってから、それを編集してフィールドを追記する。
database/migrations/YYYY_MM_DD_HHIISS_modify_users_admin_column.php
1 2 3 4 5 6 7 |
public function up() { + Schema::table('users', function ($table) { + $table->boolean('role')->default(0)->after('remember_token'); + }); } |
app/User.php に追加した権限に対応する処理を追加する。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class User extends Authenticatable { : + /** + * 管理者か? + * @return bool true:管理者 + */ + public function isAdmin() + { + return $this->role == 1; + } } |
ポリシーの設定
モデル依存の場合は個別にPolicyファイルを作るが、全体の場合は、app/Providers/AuthServithProvider.php の boot() に直接記述する。
app/Providers/AuthServiceProvider.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
- use Illuminate\Support\Facades\Gate; : - public function boot() - { - parent::registerPolicies(); + use Illuminate\Contracts\Auth\Access\Gate; : + public function boot(Gate $gate) + { + parent::registerPolicies($gate); + + // user + $gate->define('user', function($user) { + return true; + }); + + // admin + $gate->define('admin', function($user) { + return $user->isAdmin() ? true : false; + }); } |
これで blade 内で
1 2 3 4 |
@can('admin') : @endcan |
で制御できるようになる。
Laravel メアド以外でログインしたい
Vagrant(CentOS7編)
Vagrant環境構築
Centos7のボックス追加から立ち上げ
1 2 3 4 5 6 7 |
> vagrant box add Centos/7 > cd \vagrant\centos7 > vagrant init Centos/7 > vagrant up > vagrant ssh $ sudo su - |
SELinuxオフ
1 2 3 4 |
$ vi /etc/selinux/config - SELINUX=enforcing + SELINUX=disabled |
アップデート・アップグレード
1 2 3 |
$ yum update $ yum upgrade |
Webサーバー
apache2
1 2 |
$ yum install httpd |
ファイヤーウォール設定
1 2 3 4 |
$ firewall-cmd --add-service=http --zone=public --permanent $ firewall-cmd --add-service=https --zone=public --permanent $ firewall-cmd --reload |
DB
MySQL
mariaDBライブラリとデータフォルダの削除
1 2 3 |
$ yum remove -y mariadb-libs $ rm -rf /var/lib/mysql/ |
リポジトリ追加
1 2 |
$ yum localinstall –y http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm |
インストール
1 2 3 4 5 6 7 8 9 |
$ yum -y install mysql-community-server $ systemctl enable mysqld $ systemctl start mysqld /var/log/mysqld.log に root の初期パスワードが出力される。 $ cat /var/log/mysqld.log | grep root [Note] A temporary password is generated for root@localhost: ********** ********* 部分を控えて、下記を実行する。 $ mysql_secure_installation |
ユーザ作成
1 2 3 4 5 6 7 8 9 |
$ mysql -p Enter password: mysql> CREATE USER ユーザ名; mysql> CREATE USER user IDENTIFIED BY [PASSWORD] ‘パスワード’; MySQL> CREATE DATABASE DB名 CHARACTER SET utf8; MySQL> GRANT ALL ON DB名.* to ユーザ名; MySQL> FLUSH PRIVILEGES; mysql> \q |
PHP
リポジトリインストール
1 2 3 |
$ yum install -y epel-release $ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm |
PHP 7.2 インストール
1 2 |
$ yum install --enablerepo=remi,remi-php72 php php-opcache php-mbstring php-xml php-gd php-mysqli php-fpm php-zip |
トラシュー
MySQLのパスワードを変更しようとしたらエラー
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements mysql> SHOW VARIABLES LIKE 'validate_password%'; # 再度パスワードの設定を確認 +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | MEDIUM | | validate_password_special_char_count | 1 | +--------------------------------------+--------+ 6 rows in set (0.01 sec) mysql> SET GLOBAL validate_password_length=4; mysql> SET GLOBAL validate_password_policy=LOW; |
Vagrant 1.9.8 から vagrant up が固まる。
Vagrantのバージョンの問題。
1.9.7 から PowerShell5.x が必要なので(Windows7 に入っているのは PowerShell2) PowerShell5.x を入れる。
Cygwinを使っている場合は、Vagrantを1.9.6、VirtualBoxを5.1.30にダウングレードするか、Cygwinターミナルを使わず、コマンドプロンプトを使う。
Implementation of the USB 2.0 controller not found!
Extention Packが必要
1. 最新のVirtual Boxをインストール。
http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html#vbox
2. VirtualBox Extension PackをVirtual Boxに追加。
http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp#extpack
Authentication failure. Retrying…
- Vagrantfile に以下を追記して上書きされないようにする。
1 2 |
+ config.ssh.insert_key = false |
- vagrant ssh でゲストOSに入って、デフォルトの公開キーを上書き、属性も変更しておく。
1 2 3 4 5 6 |
$ mkdir -p /home/vagrant/.ssh $ wget --no-check-certificate https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -O /home/vagrant/.ssh/authorized_keys $ chmod 0700 /home/vagrant/.ssh $ chmod 0600 /home/vagrant/.ssh/authorized_keys $ chown -R vagrant /home/vagrant/.ssh |
- VMを再起動して確認
1 2 |
$ vagrant reload |
参考:vagrant upコマンド実行時にAuthentication failure.エラーが発生する
Laravelとか
Laravel環境構築
Composer インストール
1 2 3 4 |
$ curl -sS https://getcomposer.org/installer | php $ mv composer.phar /usr/local/bin/composer $ composer self-update |
laravelインストール
1 2 |
$ composer global require "laravel/installer" |
プロジェクト作成(インストールバージョンを指定したい場合は –prefer-dist を使う)
1 2 3 |
$ composer create-project laravel/laravel プロジェクト名 $ composer create-project laravel/laravel プロジェクト名 --prefer-dist 5.4 |
Packagist
Composer でインストールできるパッケージのリポジトリ
https://packagist.org/
日本語化
インストールしても日本語化しなきゃいけない。ここら辺を使えば良さそう
1 2 3 4 |
$ composer global require laravel-ja/comja5 $ comja5 -a $ /home/XXX/.config/composer/vendor/laravel-ja/comja5/bin/comja5 -a パスが効いていなかったらフルパスで実行 |
参照:https://github.com/laravel-ja/comja5
デバッグバーを使用する方法
インストールしても日本語化しなきゃいけない。ここら辺を使えば良さそう
1 2 |
$ composer require barryvdh/laravel-debugbar |
.env で APP_DEBUG=true にする。
ユーザー管理
〇が付いているのは入れてみたもの。
リポジトリ | 名前 | 説明 | |
---|---|---|---|
backpack/permissionmanager | backpackを使ったユーザー管理 | ユーザー管理以外の管理画面も入ってしまう| | |
〇 | jeremykenedy/laravel-users | ユーザー管理 | ユーザー情報のCRUD。 権限不要ならこれで十分。 要ローカライズ。 でも結局自作した。 |
swancreative/laravel-users | |||
kiwi/laravel5-usermanager | ユーザー管理 | 登録、プロファイル、パスワードの編集/リセット、ログイン、ログアウト | |
helori/laravel-admin | ユーザー管理 | 管理者権限によるユーザー管理画面追加 | |
highideas/laravel-users-online | ユーザーのオンライン状態 | ||
jrean/laravel-user-verification | Laravel 5.* のユーザーメール確認 | ||
edvinaskrucas/laravel-user-email-verification | より簡単なユーザーメール確認 | Laravel5.5ではエラーが出る。※1 | |
bican/roles | 役割と権限を処理するパッケージ | ||
mressex/laravel-auth-profile | プロフィール | メールアドレス編集はない | |
berkayoztunc/laravel-profile | プロフィール | メアド編集はあるが画面が多い | |
〇 | werneckbh/profile | プロフィール | 名前、メアド、パスワード、アイコン(Gravater)、削除が可能。 でも結局自作した。 |
※1
1 2 |
Trait 'Illuminate\Console\AppNamespaceDetectorTrait' not found |
のエラーが出たら、該当するソースを開いて以下の様に修正する。
1 2 3 |
- use Illuminate\Console\AppNamespaceDetectorTrait; + use Illuminate\Console\DetectsApplicationNamespace; |
モジュール化
リポジトリ | 説明 | |
---|---|---|
nwidart/laravel-modules | AsgardCMSで使用されている | |
caffeinated/modules | ||
pingpong/modules | nwidart/laravel-modulesのベース |
CMS
CMSを使うとそちらに引っ張られるので自前でサービスを組む場合は注意が必要
リポジトリ | 名前 | 説明 | |
---|---|---|---|
october/october | October CMS | ここら辺を参考に https://qiita.com/pikanji/items/ac05bbfbab955bf7fc5b | |
lavalite/cms | Lavalite CMS | ||
pyrocms/pyrocms | |||
asgardcmd/platform | AsgardCMS | Laravel 5 で構築された、モジューラー、多言語CMSで MITライセンス付き | |
graham-compbell/bootstrap-cms | Bootstrap CMS | ||
typicms/base | Multilingual CMS | ||
web-feet/coastercms | Coaster CMS | ||
orchid/cms |
リポジトリ | 名前 | 説明 | |
---|---|---|---|
barryvdh/laravel-dompdf | dompdf | laravel pdf でググるとこれが出てくる 参考 html形式? | |
vsmoraes/laravel-pdf | dompdf | ||
niklasravnsborg/laravel-pdf | mPDF | mPDFは問題があるらしい | |
elibyy/tcpdf-laravel | tcpdf | ||
〇 | tecnickcom/tcpdf | tcpdf | laravel tcpdf でググると出てくるのはこっち 参考1、参考2 |
〇 | setasign/fpdi | fpdi | ↑tcpdf を使うにはこれも必要 |
〇 | setasign/fpdi-tcpdf | fpdi-tcpdf | ↑tcpdf を使うにはこれも必要 |
IPAフォントのインストール 設定方法はこれ
CentOS
1 2 |
$ sudo yum -y install ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts |
Debian系
1 2 3 4 |
$ apt-get install fonts-ipafont-gothic fonts-ipafont-mincho $ php vender/tecnickcom/tcpdf/tools/tcpdf_addfont.php -b -t TrueTypeUnicode -f 32 -i /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf |
CRUD
リポジトリ | 名前 | 説明 | |
---|---|---|---|
appzcoder/crud-generator | CRUD作成 | appzcoder/laravel-admin laravel管理画面も良さそう | |
infyomlabs/laravel-generator | 管理画面もあるCRUD作成 | ||
dog-ears/crud-d-scaffold | 一覧画面とかも作成できるスカフォールド | 作者は日本人 Qiita 上手く動かなかった |
他
未検証もあり
リポジトリ | 説明 | 補足 | |
---|---|---|---|
xethron/migrations-generator | データベースから migration 作成 | ||
laracasts/generators | リソース、移行、モデルなどを迅速に生成 | make:migration:schema, make:migration:pivot, make:seed を追加 | |
jenssegers/mongodb | MongoDBベースのEloquentモデルとクエリビルダー | ||
fideloper/proxy | 信頼できるプロキシを設定 | TrustedProxyはLaravel5.5に 含まれている。設定方法 | |
backpack/crud | 管理インターフェースをすばやく作成 | 商業用には39ユーロ必要 | |
nilportugues/laravel5-json-api | JSON APIトランスパッケージ | ||
flugger/laravel-responder | APIレスポンス作成パッケージ | ||
spatie/laravel-menu | HTMLメニュージェネレータ | ||
igaster/laravel-theme | テーマ | ||
viacreative/sudo-su | 他ユーザでログイン | ||
usmanhalalit/laracsv | CSV出力 | ||
schuppo/password-strength | パスワード強度 | ||
intervention/validation | 追加バリデーション関数 | ||
hyn/multi-tenant | マルチテナント | ||
hesto/multi-auth | マルチAuth | ||
lynsarmy/csv-seeder | CSVでSeederできる | ||
crocodicstudio/crudbooster | CRUDブースター | ||
chrisbjr/api-guard | APIを認証する | ||
yab/laracogs | さまざまなコマンド、サービス、ファサード、定型文を使用 | ||
talyssonoc/react-laravel | ReactJS | ||
spatie/laravel-paginateroute | ページネータ | ||
sebastiaanluca/laravel-helpers | PHPとLaravel固有のヘルパーの広範セット | ||
propaganistas/laravel -fakeid | Eloquentモデルの自動ID難読化 | ||
mnabialek/laravel-sql-logger | SQLロガー | ||
marcelgwerder/laravel-api-handler | REST-APIのためのヘルパー関数 | ||
francescomalatesta/laravel-api-boilerplate-jwt | すぐ使用できるREST APIを作成するAPIボイラープレート | ||
crestapps/laravel-code-generator | クリーンなコードジェネレータ | ||
brotzka/laravel-dotenv-editor | .envエディタ | ||
zeeshanu/opus | チームのためのナレッジベースオープンソース | ||
user11001/eloquent-model-generator | データベースから Eloquentモデル自動生成 | ||
meness/verifi | 電子メール認証を処理する | ||
libern/qr-code-reader | シンプルなPHP QRコードリーダー/デコーダ | ||
codeitnowin/barcode | バーコードQRコードジェネレーター | ||
guzzlehttp/guzzle | 今時のPHP HTTPクライアントのGuzzleを使ってみた |
おまけ
composer高速化
1 2 3 4 |
$ composer self-update バージョンアップする $ composer config -g repos.packagist composer https://packagist.jp リポジトリを国内のものにする $ composer global require hirak/prestissimo composer高速化用のプラグインを導入する |
元に戻すには
1 2 3 |
$ composer config -g --unset repos.packagist リポジトリを消す $ composer remove hirak/prestissimo composer高速化用のプラグインを削除する |
IFTTT 連携
IFTTTにイベントを送る
To trigger an Eventから設定する。
{event}:レシピに設定するイベント名
{secret key}:Maker Eventページのシークレットキー
curlコマンドで実行する場合は
1 2 |
$ curl -X POST -H "Content-Type: application/json" -d '{"value1":"aaa"}' https://maker.ifttt.com/trigger/{event}/with/key/{secret key} |
JSON形式で3つまで変数を送ることができる。
1 2 |
{"value1":"値1","value2":"値2","value3":"値3"} |
IFTTTからイベントを受け取る
Make a web requestから設定する。
URL、Method、Content type、Body を設定する。