PNLCSを動かす
PNLCSはLaravelアプリケーションです。PHP 8.4、MySQLまたはMariaDB、Webサーバーがあればどこでも動作します。まず中身を見てみたい場合は、実際のインストール環境である ライブデモ をご覧ください。
docker pull panelica/pnlcs-runtime
Dockerでクイックスタート
公式イメージにはPHP-FPM 8.4、nginx、Node.js 20、supervisorが含まれており、初回起動時に最新のコードを取得します。
- コンテナを起動する先に
changemeを独自のパスワードに置き換えてください。 - 3〜5分待つ初回起動時に依存パッケージのインストールとフロントエンドのビルドが行われます。
- /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 はご自身のアドレスに置き換えてください。
-
サーバーを準備する
拡張機能を含む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
ターミナル$ sudo apt update $ sudo apt install -y git unzip curl cron $ 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 $ sudo apt install -y mariadb-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
ターミナル$ sudo dnf install -y epel-release https://rpms.remirepo.net/enterprise/remi-release-9.rpm $ sudo dnf module reset php -y $ sudo dnf module enable php:remi-8.4 -y $ sudo dnf install -y php php-fpm php-mysqlnd php-mbstring php-xml php-gd \ php-bcmath php-intl php-imap php-pecl-zip \ mysql-server nginx git unzip cronie policycoreutils-python-utils $ curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash - $ sudo dnf install -y nodejs $ curl -sS https://getcomposer.org/installer | php $ sudo mv composer.phar /usr/local/bin/composer $ sudo systemctl enable --now php-fpm mysqld nginx
-
アプリケーションをインストールする
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
ターミナル$ sudo git clone https://github.com/Panelica/pnlcs.git /var/www/pnlcs $ sudo chown -R apache:apache /var/www/pnlcs $ cd /var/www/pnlcs $ pn() { sudo -u apache HOME=/tmp/pnlcs-home COMPOSER_HOME=/tmp/pnlcs-home/composer "$@"; } $ pn /usr/local/bin/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 $ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/pnlcs/storage(/.*)?" $ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/pnlcs/bootstrap/cache(/.*)?" $ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/pnlcs/\.env" $ sudo restorecon -R /var/www/pnlcs $ sudo setsebool -P httpd_can_network_connect_db 1 $ sudo setsebool -P httpd_can_network_connect 1
-
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
ターミナル$ sudo tee /etc/nginx/conf.d/pnlcs.conf > /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-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } EOF $ sudo nginx -t && sudo systemctl reload nginx
-
ブラウザで仕上げ、スケジュールとセキュリティを設定する
ブラウザで次の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
| PHP | 8.4以降 |
|---|---|
| データベース | MySQL 8.0またはMariaDB 10.6+ |
| Webサーバー | NginxまたはApache(PHP-FPM使用) |
| Node.js | 18+(20 LTS推奨)、フロントエンドのビルド時のみ必要 |
| Composer | 2.x |
| メモリ | 小規模なら1 GBで動作、2 GBあれば余裕があります |
| ディスク | アプリ本体は約130 MB。データの増加に備えて2 GB以上の空きを確保してください |
インストール後にすること
- 初期設定チェックリスト会社情報、メール、決済ゲートウェイ、サーバー、最初の商品。
- 最初の販売空のカタログから、支払い済みでプロビジョニングされた注文まで。
- セキュリティチェックリストHTTPS、デバッグの無効化、スタッフの二要素認証、サーバー外へのバックアップ。
- アップデートデータを失わずに最新リリースを取得します。
- バックアップアプリケーションキーを含め、バックアップすべきもの。
- FAQよくある質問。