Visual Studio CodeでのPHP開発環境
Visual Studio CodeでPHP開発を行うための開発環境構築メモ。
1.テーマの変更
デフォルトテーマから「Default Dark+」に変更する。
2.フォントの変更
フォントを「Ricty Diminished」に変更する。
GitHub - edihbrandon/RictyDiminished: Ricty Diminished --- fonts for programming
3.プラグインをインストールする。
PlayFramework(Java)開発環境構築
環境
macOS Mojave Java 11 PlayFramework 2.6
プロジェクトの作成。
いつのまにかactivatorでは無くなっていた。
sbtが入って無ければインストールする。
brew install sbt
下記のコマンドを実行するとプロジェクトが作成される。
プロジェクト名は途中で聞かれる。
sbt new playframework/play-java-seed.g8
IntelliJでのビルド方法
1.Import Projectで上記で作成したディレクトリを指定する。
2.sbtで開く。
3.Run - Edit Configurationsを開く。
4.+で「sbt Task」を選ぶ。
5.Tasksに「run」を入力する。
Docker用のLaravelテンプレート
Laravelでプロジェクトを作成する機会が増えたので、できるだけ自動化できるようにテンプレートを作成してみました。
環境
Nginx:Latest PHP:7.3.0 Laravel:5.7 MariaDB:Latest
ディレクトリ構成
docker-laravel-template ├── data │ ├── db │ └── logs ├── docker-compose.yml ├── init.sh(初回起動バッチ) ├── src(配下にLaravelプロジェクトを作成) └── web ├── app.docker ├── default.txt(defaut.confの雛形) └── php.ini
基本的にinit.shに必要な情報を記載する。
init.sh
#!/bin/bash # Laravel Project Name export LARAVEL_PROJECT_NAME=sample # nginx setting for docker-compose.yml export CONTAINER_NAME_NGINX=laravel_nginx # php setting for docker-compose.yml export CONTAINER_NAME_PHP=laravel_php # mariadb setting for docker-compose.yml export CONTAINER_NAME_DB=laravel_db export ROOT_PASSWORD=password export DB_NAME=db_laravel # replace default.conf cat web/default.txt | sed -e "s/laravel/${LARAVEL_PROJECT_NAME}/g" > web/default.conf # run docker-compose docker-compose up -d # create laravel project docker-compose exec php composer create-project --prefer-dist laravel/laravel ${LARAVEL_PROJECT_NAME} "5.7.*" # create env cd src/${LARAVEL_PROJECT_NAME} cat .env.example | sed -e "s/DB_HOST=127.0.0.1/DB_HOST=${CONTAINER_NAME_DB}/g"\ -e "s/DB_DATABASE=homestead/DB_DATABASE=${DB_NAME}/g"\ -e "s/DB_USERNAME=homestead/DB_USERNAME=root/g"\ -e "s/DB_PASSWORD=secret/DB_PASSWORD=${ROOT_PASSWORD}/g" > .env # generate laravel key docker-compose exec php php ${LARAVEL_PROJECT_NAME}/artisan key:generate
docker-compose.yml
version: '3' services: nginx: container_name: ${CONTAINER_NAME_NGINX} image: nginx:latest ports: - "80:80" volumes: - ./web/default.conf:/etc/nginx/conf.d/default.conf - ./src:/var/www/html - ./data/logs/:/var/log/nginx/ depends_on: - php external_links: - db restart: always php: container_name: ${CONTAINER_NAME_PHP} build: context: ./web dockerfile: app.docker volumes: - ./src:/var/www/html restart: always db: image: mariadb container_name: ${CONTAINER_NAME_DB} environment: MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD} MYSQL_DATABASE: ${DB_NAME} volumes: - ./data/db:/var/lib/mysql command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci restart: always
app.docker
FROM php:7.3.0-fpm COPY php.ini /usr/local/etc/php/ RUN apt-get update -y && apt-get upgrade -y && apt-get install mysql-client git vim unzip zip -y RUN docker-php-ext-install mysqli pdo pdo_mysql # install composer ENV COMPOSER_ALLOW_SUPERUSER 1 ENV COMPOSER_HOME /composer ENV PATH $PATH:/composer/vendor/bin RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
default.txt
server { listen 80; server_name _; root /var/www/html/laravel/public; index index.php index.html; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { try_files $uri /index.php?$args; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
php.ini
[Date] date.timezone = "Asia/Tokyo" [mbstring] mbstring.internal_encoding = "UTF-8" mbstring.language = "Japanese" memory_limit = 64M
今回のソースはGithubにあげてます。
github.com
MariaDBで複数DBを作る
環境
macOS Mojave
DockerでMariaDBで複数DBを同時に作る必要があったので、そのやり方のメモ。
DB1個であれば、MYSQL_DATABASEだけで作れる。
2個以上作りたい場合は、docker-entrypoint-initdb.dというのを使う。
docker-entrypoint-initdb.dにはsqlやsh等を使えるらしい。
手順
まずdocker-compose.ymlを次のように記載する
version: '3' services: mariadb: container_name: mariadb build: ./db/ ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: password MYSQL_USER: user MYSQL_PASSWORD: pass MYSQL_DATABASE: hoge volumes: - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql restart: always command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
まずdb/Dockerfileを次のように記載する
FROM mariadb:latest COPY ./my.cnf /etc/mysql/my.cnf COPY ./init.sql /docker-entrypoint-initdb.d/init.sql
my.cnfを次のように記載する
[mysqld] character-set-server=utf8 datadir = /var/lib/mysql
init.sqlにCREATE文とGRANT文を記載する
CREATE DATABASE moge; GRANT ALL ON moge.* TO 'user'@'%';
Dockerを作成
docker-compose up -d
データベースが閲覧できることを確認。
mysql -h 127.0.0.1 -uhoge -p pass MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | hoge | | information_schema | | moge | +--------------------+
Raspberry Pi ZeroにUSBで接続する
Mac(High Sierra)からUSB経由でSSHでRaspberry Pi Zeroに接続する方法メモ。
まずOSをダウンロード、Download Raspbian for Raspberry PiからRASPBIAN STRETCH LITEのZIPファイルをダウンロード。
MicroSDカードの初期化はディスクユーティリティでもできるが、うまくいかないときはSDメモリカードフォーマッターを使う。
ここからターミナルでやる作業。まずダウンロードしたZIPを解凍。
$unzip 2017-09-07-raspbian-stretch-lite.zip
インストール先を確認。FAT形式のものがSDカードになる。(今回は/dev/disk3だった)
$diskutil list
インストールコマンド実行。(diskよりもrdiskの方が速いらしい)
$sudo dd bs=1m if=2017-09-07-raspbian-stretch-lite.img of=/dev/rdisk3
RASPBIANインストール後にSDカード内の2つの設定ファイルを追記する。
・config.txt
dtoverlay=dwc2を追加
・cmdline.txt
最後にmodules-load=dwc2,g_etherを追加
Raspberry Pi ZeroをMacでUSBに繋いで電源をいれて1〜2分待つ。
ターミナルで下記コマンドを実行。
ssh pi@raspberrypi.local
ログインできればOK。
なおネットに接続するためにはMac側でインターネット共有を有効にする必要がある。
Ethernet Gadgetにチェックをつけ、インターネット共有をオンにする。
OSの再起動を行う
要Root化。以下のようなコードで実現できるらしい。
try { Process p = null; p = Runtime.getRuntime().exec("su"); OutputStream o = p.getOutputStream(); o.write("reboot\n\r".getBytes()); o.flush(); } catch (IOException e) { e.printStackTrace(); }
ACCESS_SUPERUSERについて警告が出たらAndroidManifest.xmlに次の一文を追加する。
<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />