Skip to main content

Installation Guide

This guide will help you install and set up the Netasampark platform for development or production.

Prerequisites

System Requirements

Server Requirements

  • Operating System: Linux (Ubuntu 20.04+ recommended) or Windows Server
  • PHP: 8.2 or higher
  • MySQL/MariaDB: 10.3 or higher
  • Redis: 6.0 or higher (for caching and queues)
  • Node.js: 18.0 or higher (for frontend builds)
  • Composer: Latest version
  • NPM/Yarn: Latest version

PHP Extensions

php -m | grep -E "pdo|pdo_mysql|mbstring|xml|curl|zip|gd|redis|intl"

Required extensions:

  • pdo
  • pdo_mysql
  • mbstring
  • xml
  • curl
  • zip
  • gd or imagick
  • redis
  • intl
  • bcmath
  • fileinfo

Server Configuration

  • Memory Limit: 256MB minimum (512MB recommended)
  • Upload Size: 10MB minimum
  • Execution Time: 60 seconds minimum
  • mod_rewrite: Enabled (for Apache)

Installation Steps

1. Clone Repository

git clone https://github.com/netasampark/netasamparkv2.git
cd netasamparkv2

2. Backend API Setup

Install Dependencies

cd netasampark-api
composer install

Environment Configuration

cp .env.example .env
php artisan key:generate

Configure Environment Variables

Edit .env file with your configuration:

APP_NAME=Netasampark
APP_ENV=production
APP_KEY=base64:...
APP_DEBUG=false
APP_URL=https://api.netasampark.com

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=netasampark_prod
DB_USERNAME=your_username
DB_PASSWORD=your_password

CACHE_DRIVER=redis
QUEUE_CONNECTION=redis
SESSION_DRIVER=redis

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

Database Setup

php artisan migrate --force
php artisan db:seed

Storage Setup

php artisan storage:link
chmod -R 775 storage bootstrap/cache

Cache Configuration

php artisan config:cache
php artisan route:cache
php artisan view:cache

3. Frontend Applications Setup

Admin Panel

cd netasampark-admin
npm install
npm run build

PWA

cd netasampark-pwa
npm install
npm run build

Grievance Portal

cd netasampark-grievance
npm install
npm run build

Home Page

cd netasampark-home
npm install
npm run build

4. Web Server Configuration

Apache Configuration

Create virtual host configuration:

<VirtualHost *:80>
ServerName api.netasampark.com
DocumentRoot /path/to/netasampark-api/public

<Directory /path/to/netasampark-api/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

<VirtualHost *:80>
ServerName admin.netasampark.com
DocumentRoot /path/to/netasampark-admin/dist

<Directory /path/to/netasampark-admin/dist>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

Nginx Configuration

server {
listen 80;
server_name api.netasampark.com;
root /path/to/netasampark-api/public;
index index.php;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}

5. Queue Workers

Set up queue workers for background jobs:

php artisan queue:work redis --queue=default,emails,notifications --tries=3 --timeout=90

Or use Supervisor for process management:

[program:netasampark-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/netasampark-api/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=3
redirect_stderr=true
stdout_logfile=/path/to/netasampark-api/storage/logs/worker.log
stopwaitsecs=3600

6. Scheduled Tasks

Add to crontab:

* * * * * cd /path/to/netasampark-api && php artisan schedule:run >> /dev/null 2>&1

7. SSL Configuration

For production, set up SSL certificates:

# Using Let's Encrypt
certbot --nginx -d api.netasampark.com
certbot --nginx -d admin.netasampark.com
certbot --nginx -d app.netasampark.com
certbot --nginx -d grievance.netasampark.com

8. Redis Setup

# Install Redis
sudo apt-get install redis-server

# Start Redis
sudo systemctl start redis-server
sudo systemctl enable redis-server

# Test Redis
redis-cli ping

9. Database Backup Setup

Configure automated backups:

# Test backup
php artisan db:backup --type=daily

# Verify backup schedule
php artisan schedule:list

Post-Installation

1. Verify Installation

  • Check API health: https://api.netasampark.com/api/healthz
  • Access admin panel: https://admin.netasampark.com
  • Access PWA: https://app.netasampark.com
  • Access grievance portal: https://grievance.netasampark.com

2. Create Admin User

php artisan tinker
$user = \App\Models\User::create([
'name' => 'Super Admin',
'email' => 'admin@netasampark.com',
'password' => Hash::make('SecurePassword123!'),
'role' => 'superadmin',
]);

3. Configure Providers

Set up communication providers in the admin panel:

  • WhatsApp (Meta/Gupshup)
  • SMS (Twilio/Msg91)
  • Email (Brevo/SendGrid)
  • IVR (Exotel)

4. Set Up Monitoring

  • Configure error tracking (Sentry)
  • Set up application monitoring (APM)
  • Configure log aggregation
  • Set up alerting rules

Development Setup

For local development:

# API
cd netasampark-api
php artisan serve

# Admin Panel
cd netasampark-admin
npm run dev

# PWA
cd netasampark-pwa
npm run dev

# Grievance Portal
cd netasampark-grievance
npm run dev

# Home Page
cd netasampark-home
npm run dev

Troubleshooting

Common Issues

Database Connection Error

# Check database credentials
php artisan tinker
DB::connection()->getPdo();

# Test connection
mysql -u username -p -h hostname database_name

Permission Errors

chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache

Queue Not Processing

# Check queue connection
php artisan queue:work --once

# Clear failed jobs
php artisan queue:flush

Cache Issues

php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

Next Steps