最新情報 A domain ordered with hosting is checked, priced and registered

PNLCSを動かす

PNLCSはLaravelアプリケーションです。PHP 8.4、MySQLまたはMariaDB、Webサーバーがあればどこでも動作します。まず中身を見てみたい場合は、実際のインストール環境である ライブデモ をご覧ください。

Docker Hubの公式イメージ
docker pull panelica/pnlcs-runtime

3つのインストール方法

方法向いている用途所要時間ガイド
DockerPNLCSのお試し、またはひとつのコンテナとしての運用約5分コマンド
自社サーバーDockerを使わないVPSまたは専用サーバー:Ubuntu、Debian、AlmaLinux、Rocky Linux約30分コマンド
ホスティングパネル内Panelica、cPanelなどがすでに動いているサーバー約20分ガイド

Dockerでクイックスタート

公式イメージにはPHP-FPM 8.4、nginx、Node.js 20、supervisorが含まれており、初回起動時に最新のコードを取得します。

  1. コンテナを起動する先に changeme を独自のパスワードに置き換えてください。
  2. 3〜5分待つ初回起動時に依存パッケージのインストールとフロントエンドのビルドが行われます。
  3. /installを開くウィザードが要件を確認し、管理者アカウントを作成したあと、自動的にロックされます。
ターミナル
$ docker network create pnlcs-net

$ docker run -d --name pnlcs-db --network pnlcs-net \
  -e MYSQL_ROOT_PASSWORD=changeme \
  -e MYSQL_DATABASE=pnlcs -e MYSQL_USER=pnlcs \
  -e MYSQL_PASSWORD=changeme \
  mariadb:11

$ docker run -d --name pnlcs --network pnlcs-net \
  -p 8090:80 \
  -e DB_HOST=pnlcs-db -e DB_DATABASE=pnlcs \
  -e DB_USERNAME=pnlcs -e DB_PASSWORD=changeme \
  -e APP_URL=http://localhost:8090 \
  panelica/pnlcs-runtime:1.4

Dockerを使わずに自分のサーバーにインストール

PNLCSは、PHP-FPM 8.4、MySQLまたはMariaDB、Nginx上で通常のLaravelアプリケーションとして動作します。以下のコマンドはUbuntu 24.04、Debian 13、AlmaLinux 9に対応しています。Rocky Linux 9ではAlmaLinuxのコマンドを使います。 example.com はご自身のアドレスに置き換えてください。

完全ガイド
  1. サーバーを準備する

    拡張機能を含むPHP 8.4、データベース、Nginx、フロントエンドのビルドに使うNode.js 20、Composer。すでにインストール済みなら、この手順は飛ばしてください。

    Ubuntu 24.04に含まれるのはPHP 8.3のため、PHP 8.4はondrej PPAから導入します。Debian 13はPHP 8.4を標準で備え、MySQLの代わりにMariaDBを採用しており、 php8.4-imap パッケージがありません。AlmaLinuxとRockyでは、PHP 8.4をRemiリポジトリから導入します。

    ターミナル
    $ sudo apt update
    $ sudo apt install -y software-properties-common git unzip curl cron
    $ sudo add-apt-repository -y ppa:ondrej/php
    $ sudo apt update
    $ sudo apt install -y php8.4-fpm php8.4-cli php8.4-mysql php8.4-mbstring \
      php8.4-xml php8.4-curl php8.4-zip php8.4-gd php8.4-bcmath php8.4-intl php8.4-imap
    $ sudo apt install -y mysql-server nginx
    
    $ curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    $ sudo apt install -y nodejs
    
    $ curl -sS https://getcomposer.org/installer | php
    $ sudo mv composer.phar /usr/local/bin/composer
  2. アプリケーションをインストールする

    PNLCSのディレクトリはWebサーバーのユーザーが所有し、 composer、 artisan と npm の各コマンドはすべてそのユーザーとして実行します。 pn ヘルパーがこれを代わりに行います。ディレクトリの所有者がrootだと、インストールウィザードとその後のアップデートが失敗します。

    データベースのパスワードをひとつ決め、 CREATE USER 文と .env の行の両方で同じものを使ってください。 pn ヘルパーは現在のシェルセッションの間だけ有効です。再ログインしたら定義し直してください。

    次のコマンドは実行しないでください: db:seed。データベースの初期データ投入と、指定した管理者の作成はインストールウィザードが行います。

    ターミナル
    $ sudo git clone https://github.com/Panelica/pnlcs.git /var/www/pnlcs
    $ sudo chown -R www-data:www-data /var/www/pnlcs
    $ cd /var/www/pnlcs
    $ pn() { sudo -u www-data HOME=/tmp/pnlcs-home COMPOSER_HOME=/tmp/pnlcs-home/composer "$@"; }
    
    $ pn composer install --no-dev --optimize-autoloader --no-interaction
    
    $ sudo mysql -e "CREATE DATABASE pnlcs CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      CREATE USER 'pnlcs'@'localhost' IDENTIFIED BY 'choose-a-strong-password';
      GRANT ALL PRIVILEGES ON pnlcs.* TO 'pnlcs'@'localhost'; FLUSH PRIVILEGES;"
    
    $ pn cp .env.example .env
    $ pn sed -i 's|^APP_URL=.*|APP_URL=http://example.com|; s|^DB_PASSWORD=.*|DB_PASSWORD=choose-a-strong-password|' .env
    $ sudo chmod 640 .env
    
    $ pn php artisan key:generate
    $ pn php artisan migrate --force
    $ pn npm ci
    $ pn npm run build
    $ pn php artisan storage:link
    $ pn php artisan optimize
  3. Nginxをpublic/に向ける

    ドキュメントルートは public/ ディレクトリにし、プロジェクトのルートにはしないでください。プロジェクトのルートには次のファイルがあります: .env。デフォルトサイトは削除してください。残っていると、サーバーのアドレスにNginxのウェルカムページが表示され続けます。

    ApacheやCaddyでも同じルールで動作します。ドキュメントルートは public/、PHPはPHP-FPM 8.4経由、ファイルではないリクエストの書き換え先はすべて index.php。

    ターミナル
    $ sudo tee /etc/nginx/sites-available/pnlcs > /dev/null <<'EOF'
    server {
        listen 80;
        server_name example.com;
        root /var/www/pnlcs/public;
        index index.php;
        charset utf-8;
        client_max_body_size 64M;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php8.4-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            include fastcgi_params;
        }
        location ~ /\.(?!well-known).* { deny all; }
    }
    EOF
    $ sudo ln -s /etc/nginx/sites-available/pnlcs /etc/nginx/sites-enabled/
    $ sudo rm -f /etc/nginx/sites-enabled/default
    $ sudo nginx -t && sudo systemctl reload nginx
  4. ブラウザで仕上げ、スケジュールとセキュリティを設定する

    ブラウザで次のURLを開きます: http://example.com/install。ウィザードが要件を確認し、管理者を作成したあと、自動的にロックされます。

    Webサーバーのユーザー用のcron 1行で、請求書、リマインダー、利用停止、SSLチェック、バックアップが動きます。キューのジョブに専用のワーカーは不要で、同じcron行が処理します。

    ターミナル
    $ cd /var/www/pnlcs
    $ WEB_USER=www-data   # AlmaLinux, Rocky: apache
    $ (sudo crontab -u $WEB_USER -l 2>/dev/null; echo '* * * * * cd /var/www/pnlcs && php artisan schedule:run >> /dev/null 2>&1') | sudo crontab -u $WEB_USER -
    
    $ sudo apt install -y certbot python3-certbot-nginx   # Ubuntu, Debian
    $ sudo certbot --nginx -d example.com
    $ pn sed -i 's|^APP_URL=http://|APP_URL=https://|' .env
    $ pn php artisan optimize

動作要件

小規模な環境なら、データベースを同じマシンに置いても2 GBのメモリで余裕を持って動作します。

動作要件の詳細

PHP8.4以降
データベースMySQL 8.0またはMariaDB 10.6+
WebサーバーNginxまたはApache(PHP-FPM使用)
Node.js18+(20 LTS推奨)、フロントエンドのビルド時のみ必要
Composer2.x
メモリ小規模なら1 GBで動作、2 GBあれば余裕があります
ディスクアプリ本体は約130 MB。データの増加に備えて2 GB以上の空きを確保してください

インストール後にすること