LoginSignup
0
1

More than 3 years have passed since last update.

ChocolatyでちょこっとLaravelの実行環境を作成する

Last updated at Posted at 2019-08-27

今北産業

Laravelで作成したプロジェクトを、Windows Server 2012R2にChocolatyを使用してデプロイした。
構成は Nginx, PHP, MySQL, プロセス管理はNSSMで、キューの使用もあるのでお楽しみに。
ちょこっと参考にしても構わないけど、間違ってても責任は取らないよ❤

作業内容

Chocolateyのインストール

管理者モードのPowerShellを使用したのでコマンドはこちら。
これ以降の各手順は、powershellは常に管理者モードの想定で。

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
  • 最新のインストールコマンドは、Chocolateyの公式サイトを参照のこと。古いインストールコマンドに注意。

一旦コンソールを閉じると、PATHが適用される。

各種パッケージをインストール

1つずつやるのは面倒なので、一括でバージョン指定できるxmlを使用。
しかしインストールできるバージョンが限られていたため、バージョン指定はMySQLだけにしておいた。
現在どのバージョンがインストールされるかは、公式サイトのリポジトリで確認すると良い。

MySQLに必要なvisual studio runtime 2013が無くてエラーになるので、vcredist2013を手動で指定する必要がある模様。

package.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
        <package id="vcredist2013" />
        <package id="php" />
        <package id="php-service" />
        <package id="nodejs-lts" />
        <package id="composer" />
        <package id="nginx-service" />
        <package id="git" />
        <package id="mysql" version="5.7.18" />
</packages>

上記を適当なフォルダに保存し、そのフォルダへ移動。

choco install package.config -y

利便性を高めるため、あとからこれも入れた。

cinst nano # コンソールからテキスト編集したいので
cinst conemu # コンソールが使いづらいので
cinst sakuraeditor # テキストファイルの編集に
cinst googlechrome # モダンブラウザが必要だった

設定ファイルの編集

php.ini

今回のファイルの場所は、
"C:\tools\php73\php.ini"
になった。

extension= で検索し、下記のようにした。mbstringとopensslはデフォルトでONになっているので、ここでオンにしたらWARNINGが出たので消した。

php.ini
extension=bz2
extension=curl
extension=fileinfo
extension=gd2
extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=interbase
;extension=ldap
;extension=mbstring
extension=exif      ; Must be after mbstring as it depends on it
extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
extension=pdo_sqlite
;extension=pgsql
;extension=shmop

CURLを使用できるように、cacert.pemを入手し、下記のようにする。

php.ini
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo ="C:\tools\cacert.pem"

[openssl]
; The location of a Certificate Authority (CA) file on the local filesystem
; to use when verifying the identity of SSL/TLS peers. Most users should
; not specify a value for this directive as PHP will attempt to use the
; OS-managed cert stores in its absence. If specified, this value may still
; be overridden on a per-stream basis via the "cafile" SSL stream context
; option.
openssl.cafile="C:\tools\cacert.pem"

Nginxの設定ファイル

デフォルトで "C:\tools\nginx\conf.d\server.default.conf" にある。

root指定のパスの区切り文字に注意

server.default.conf
server {
    listen       80;
    server_name  example.com;

    root C:/YOUR/PROJECT/ROOT/public;

    charset utf-8;

    index  index.php;

    #access_log  logs/host.access.log  main;

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

    error_page 404 /index.php;

    #error_page  404              /404.html;

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }


    location ~ /\.(?!well-known).* {
        deny all;
    }
}

サービス再起動

phpとnginxのサービスを再起動する。

MySQLの準備

コンソールでログインする

mysql -u root
/* DBを作成 */
CREATE DATABASE your_db DEFAULT CHARACTER SET utf8;
CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';
/* 権限を付与 */
GRANT ALL PRIVILEGES ON your_db.* TO 'your_user'@'%' IDENTIFIED BY 'your_password';

プロジェクトの設定

基本設定

GitのSSHまたはHTTPSの認証設定をしたら、適当なフォルダにプロジェクトを落としてくる。

.env.exampleをコピーして.env にし、修正する。
修正内容はプロジェクトによって適宜。

cd /your/project/root
cp .env.example .env
nano .env

終わったら、そのままプロジェクトルートで色々実行

# javascriptのコンパイル
npm i
npm run prod
# phpライブラリのインストール
composer install --optimize-autoloader --no-dev
# キーの作成
php artisan key:generate
# マイグレーションの実行
php artisan migrate --seed
# 設定のキャッシュ
php artisan config:cache

キューワーカーの設定

今回のプロジェクトにはキューの使用がある。。
nginx-service や php-service は nssm で管理されているようなので、
nssm でやっちゃうことにする。

(laravel-echo-serverも似たような要領でできるはず)

nssm install laravel-worker
# 名称は何でもいい。↑がサービス名になる。

アクセスが拒否された場合は、管理者モードで実行しているか確認。
対話式の画面が立ち上がるので、以下のようにする。
* H/Cは編集モードで立ち上げているのでボタン名称は異なる。
* Argumentの所、 起動オプションに、 --tries=5 等を付けないと、何度でも再試行するので注意

image.png

I/Oタブも編集

image.png

Installを押すとサービスが登録される。次回以降は自動起動する構成だが、最初の起動は手動の模様。

確認

ブラウザでアクセスし、表示されれば動作確認して完了。

おわり

足りないところや指摘は編集リクエストしてちょ。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1