Compare commits

..

1 Commits
dev ... mater

Author SHA1 Message Date
azizi ede2fb9254 Update 'composer-prod.json'
2 years ago

@ -3,3 +3,5 @@ vendor
node_modules
modules
composer.lock
Dockerfile*
Jenkinsfile

@ -5,28 +5,25 @@ name: default
steps:
- name: build to production
commands:
- docker build -t registry.willaspace.com/willaspace/willaengine-test:latest --build-arg COMPOSER_FILE_NAME=composer-prod .
- docker build -t registry.willaspace.com/willaspace/willaengine:latest .
when:
branch:
- master
- name: deploy to production
commands:
- cd /apps/willaengine/ ; docker-compose up -d
- docker exec willaengine-test bash -c "COMPOSER=composer-prod.json composer update"
- docker exec willaengine-test php artisan config:cache
- docker exec willaengine-test php artisan route:cache
# - docker exec willaengine_worker bash -c "COMPOSER=composer-prod.json composer update"
# - docker exec willaengine_worker service supervisor start
# - docker network connect nginx_default willaengine
- cd /home/administrator/apps/willaengine/ ; docker-compose up -d
- docker exec willaengine bash -c "COMPOSER=composer-prod.json composer update"
- docker exec willaengine service cron start
- docker exec willaengine php artisan config:cache
- docker exec willaengine php artisan route:cache
when:
branch:
- master
- name: build to staging
commands:
- docker build -t registry.willaspace.com/willaspace/willaengine-staging:latest --build-arg COMPOSER_FILE_NAME=composer-staging -f Dockerfile.staging .
- docker build -t registry.willaspace.com/willaspace/willaengine-staging:latest -f Dockerfile.staging .
- docker build -t registry.willaspace.com/willaspace/willaengine-staging-nginx:latest -f Dockerfile.nginx .
when:
branch:
@ -35,13 +32,6 @@ steps:
- name: deploy to staging
commands:
- cd /apps/willaengine-staging/ ; docker-compose up -d
- docker exec willaengine-staging_php bash -c "COMPOSER=composer-staging.json composer update"
- docker exec willaengine-staging_php bash -c "php artisan route:cache"
- docker exec willaengine-staging_php bash -c "php artisan config:cache"
- docker exec willaengine-staging_worker bash -c "COMPOSER=composer-staging.json composer update"
- docker exec willaengine-staging_worker service supervisor start
- docker exec willaengine-staging_php php artisan migrate --path=vendor/wm/finance/database/migrations --force
- docker exec willaengine-staging_php php artisan migrate --path=vendor/wm/store/database/migrations --force
when:
branch:
- dev
@ -50,4 +40,3 @@ trigger:
branch:
- master
- dev

2
.gitignore vendored

@ -4,8 +4,6 @@
# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,laravel,vuejs,phpstorm
# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,laravel,vuejs,phpstorm
resources/views/sites
### Laravel ###
/vendor/
node_modules/

@ -1,28 +1,35 @@
FROM willaengine/standard-laravel:7.4
FROM dfs1368/laravel-php-fpm:7.4
ARG COMPOSER_FILE_NAME=composer
ARG ssh_prv_key
WORKDIR /var/www/html
WORKDIR /var/www
#####################################
# Composer:
#####################################
RUN apt install -y sendmail openssh-server libpng-dev
COPY database /var/www/html/database
# Authorize SSH Host
RUN mkdir -p /root/.ssh && \
chmod 0700 /root/.ssh && \
echo "$ssh_prv_key" > /root/.ssh/id_rsa && \
ssh-keyscan git.willaspace.com > /root/.ssh/known_hosts && \
chmod 600 /root/.ssh/id_rsa
COPY $COMPOSER_FILE_NAME.* /var/www/html/
RUN docker-php-ext-install gd
RUN COMPOSER=$COMPOSER_FILE_NAME.json composer install --no-scripts
RUN printf 'upload_max_filesize=300M;\npost_max_size=300M;\nmax_execution_time=600;\nmax_input_time=600;\n' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini;
RUN echo 'pm.max_children = 100' >> /usr/local/etc/php-fpm.d/zz-docker.conf
COPY . /var/www/html
COPY database /var/www/database
RUN chown -R www-data:www-data \
/var/www/html/public \
/var/www/html/storage \
/var/www/html/bootstrap/cache \
/var/www/.ssh \
/var/www/html/storage/letsencrypt && \
chmod 755 /var/www/html/storage/letsencrypt/Bash/auth-hook.sh
COPY composer-prod.* /var/www/
RUN composer clearcache && COMPOSER=composer-prod.json composer install --no-scripts
COPY . /var/www
RUN php artisan morphmap:cache
RUN chown -R www-data:www-data \
/var/www/public \
/var/www/storage \
/var/www/bootstrap/cache

@ -1,3 +1,8 @@
FROM nginx:1.21.1
FROM registry.willaspace.com/willaspace/willaengine-staging:latest AS php_builder
WORKDIR /var/www/html/
RUN npm install
RUN npm run staging
COPY public /var/www/html/public
FROM nginx:1.21.1
COPY --from=php_builder /var/www/html /var/www/html

@ -1,6 +1,38 @@
FROM fsaravi/standard-laravel:7.4
FROM dfs1368/laravel-php-fpm:7.4
ARG ssh_prv_key
WORKDIR /var/www/html
RUN apt install -y sendmail openssh-server libpng-dev
# Authorize SSH Host
RUN mkdir -p /root/.ssh && \
chmod 0700 /root/.ssh && \
echo "$ssh_prv_key" > /root/.ssh/id_rsa && \
ssh-keyscan git.willaspace.com > /root/.ssh/known_hosts && \
chmod 600 /root/.ssh/id_rsa
RUN docker-php-ext-install gd
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && \
apt-get install -y nodejs
RUN printf 'upload_max_filesize=300M;\npost_max_size=300M;\nmax_execution_time=600;\nmax_input_time=600;\n' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini;
RUN echo 'pm.max_children = 100' >> /usr/local/etc/php-fpm.d/zz-docker.conf
COPY database /var/www/html/database
COPY composer-staging.* /var/www/html/
RUN composer clearcache && COMPOSER=composer-staging.json composer install --no-scripts
COPY . /var/www/html
RUN php artisan morphmap:cache
RUN chown -R www-data:www-data \
/var/www/html/public \
/var/www/html/storage \
/var/www/html/bootstrap/cache

16
Jenkinsfile vendored

@ -5,15 +5,24 @@ pipeline {
}
}
stages {
stage('build') {
stage('build for production') {
when {
branch 'master'
}
steps {
sh 'cd /home/administrator/apps/${IMAGE_NAME}/;docker build -t registry.willaspace.com/willaspace/${IMAGE_NAME}:latest .'
sh 'docker build -t registry.willaspace.com/willaspace/${IMAGE_NAME}:latest --build-arg ssh_prv_key="$(cat /home/administrator/.ssh/id_rsa)" .'
sh 'cd /home/administrator/apps/${IMAGE_NAME}/;sudo ./BuildDocker'
}
}
stage('build for staging') {
when {
branch 'dev'
}
steps {
sh 'docker build -t registry.willaspace.com/willaspace/${IMAGE_NAME}-staging:latest -f Dockerfile.staging --build-arg ssh_prv_key="$(cat /home/administrator/.ssh/id_rsa)" .'
sh 'docker build -t registry.willaspace.com/willaspace/${IMAGE_NAME}-staging-nginx:latest -f Dockerfile.nginx .'
}
}
stage('deploy to production') {
when {
branch 'master'
@ -31,7 +40,7 @@ pipeline {
branch 'dev'
}
steps {
sh 'echo ${IMAGE_NAME}-staging comming soon ...'
sh 'cd /apps/${IMAGE_NAME}-staging/ ; docker-compose up -d'
}
}
}
@ -39,4 +48,3 @@ pipeline {
IMAGE_NAME = 'willaengine'
}
}

@ -60,10 +60,6 @@ class Handler extends ExceptionHandler
return response()->view('webBuilder::errors.template_disabled', ['error' => 'business banned']);
} elseif ($exception instanceof HasRelationException) {
return response()->json(Responser::error([$exception->getMessage()]), 422);
} elseif ($this->isHttpException($exception)) {
if ($exception->getStatusCode() == 404 and in_array("web",$request->route()->middleware())) {
return response()->view('webBuilder::errors.404', [], 404);
}
}
return parent::render($request, $exception);

@ -1,44 +1,43 @@
{
"name": "willaengine/laravel",
"name": "laravel/laravel",
"type": "project",
"description": "The WillaEngine Applications.",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel",
"WillaEngine"
"laravel"
],
"license": "MIT",
"require": {
"php": "^7.4",
"coraxster/flysystem-aws-s3-v3-minio": "^1.0",
"fideloper/proxy": "^4.0",
"io-developer/php-whois": "^4.0",
"kalnoy/nestedset": "^6.0",
"laravel/framework": "^8.0",
"laravel/passport": "^10",
"laravel/tinker": "^2.0",
"predis/predis": "^1.1",
"maatwebsite/excel": "^3.1",
"owen-it/laravel-auditing": "^13.5",
"kalnoy/nestedset": "^6.0",
"sentry/sentry-laravel": "^2.3",
"silber/bouncer": "v1.0.0-rc.10",
"spatie/laravel-medialibrary": "^8.0.0",
"wm/admin": "dev-master",
"wm/app-management": "dev-master",
"io-developer/php-whois": "^4.0",
"silber/bouncer": "v1.0.0-rc.10",
"wm/blog": "dev-master",
"wm/common": "dev-master",
"wm/contact-us": "dev-master",
"wm/core": "dev-master",
"wm/crm": "dev-master",
"wm/finance": "dev-master",
"wm/lms": "dev-master",
"wm/notification": "dev-master",
"wm/portfolio": "dev-master",
"wm/product": "dev-master",
"wm/roll-call": "dev-master",
"wm/service": "dev-master",
"wm/service-store": "dev-master",
"wm/store": "dev-master",
"wm/finance": "dev-master",
"wm/admin": "dev-master",
"wm/web-builder": "dev-master",
"wm/app-management": "dev-master",
"wm/notification": "dev-master",
"wm/roll-call": "dev-master",
"wm/lms": "dev-master",
"wm/service-store": "dev-master",
"wm/contact-us": "dev-master",
"zircote/swagger-php": "^3.0"
},
"provide": {
@ -54,10 +53,7 @@
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true,
"allow-plugins": {
"php-http/discovery": true
}
"sort-packages": true
},
"extra": {
"laravel": {
@ -121,7 +117,7 @@
"url": "git@git.willaspace.com:WillaEngine-Project/product.git"
},
{
c "type": "vcs",
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/service.git"
},
{

@ -15,7 +15,6 @@
"laravel/passport": "^10",
"laravel/tinker": "^2.0",
"maatwebsite/excel": "^3.1",
"matthiasmullie/minify": "^1.3",
"kalnoy/nestedset": "^6.0",
"sentry/sentry-laravel": "^2.3",
"spatie/laravel-medialibrary": "^8.0.0",
@ -25,20 +24,6 @@
"wm/common": "dev-dev",
"wm/core": "dev-dev",
"wm/crm": "dev-dev",
"wm/portfolio": "dev-dev",
"wm/product": "dev-dev",
"wm/service": "dev-dev",
"wm/store": "dev-dev",
"wm/finance": "dev-dev",
"wm/admin": "dev-dev",
"wm/web-builder": "dev-dev",
"wm/app-management": "dev-dev",
"wm/notification": "dev-dev",
"wm/roll-call": "dev-dev",
"wm/lms": "dev-dev",
"wm/service-store": "dev-dev",
"predis/predis": "^1.1",
"wm/contact-us": "dev-dev",
"zircote/swagger-php": "^3.0"
},
"provide": {
@ -108,59 +93,6 @@
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/blog.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/portfolio.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/product.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/service.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/store.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/notification.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/roll-call.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/app-management.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/web-builder.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/finance.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/service-store.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/admin.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/lms.git"
},
{
"type": "vcs",
"url": "git@git.willaspace.com:WillaEngine-Project/contact-us.git"
}
]
}

@ -11,31 +11,28 @@
"php": "^7.4",
"coraxster/flysystem-aws-s3-v3-minio": "^1.0",
"fideloper/proxy": "^4.0",
"io-developer/php-whois": "^4.0",
"kalnoy/nestedset": "^6.0",
"laravel/framework": "^8.0",
"laravel/passport": "^10",
"laravel/tinker": "^2.0",
"maatwebsite/excel": "^3.1",
"matthiasmullie/minify": "^1.3",
"owen-it/laravel-auditing": "^13.0",
"predis/predis": "^1.1",
"kalnoy/nestedset": "^6.0",
"sentry/sentry-laravel": "^2.3",
"silber/bouncer": "v1.0.0-rc.10",
"spatie/laravel-medialibrary": "^8.0.0",
"wm/admin": "dev-master",
"io-developer/php-whois": "^4.0",
"silber/bouncer": "v1.0.0-rc.10",
"wm/blog": "dev-master",
"wm/common": "dev-master",
"wm/core": "dev-master",
"wm/crm": "dev-master",
"wm/finance": "dev-master",
"wm/notification": "dev-master",
"wm/portfolio": "dev-master",
"wm/product": "dev-master",
"wm/roll-call": "dev-master",
"wm/service": "dev-master",
"wm/store": "dev-master",
"wm/finance": "dev-master",
"wm/admin": "dev-master",
"wm/web-builder": "dev-master",
"wm/notification": "dev-master",
"wm/roll-call": "dev-master",
"zircote/swagger-php": "^3.0"
},
"provide": {

3672
composer.lock generated

File diff suppressed because it is too large Load Diff

@ -1,52 +0,0 @@
<?php
return [
/*
* If set to false, no activities will be saved to the database.
*/
'enabled' => env('ACTIVITY_LOGGER_ENABLED', true),
/*
* When the clean-command is executed, all recording activities older than
* the number of days specified here will be deleted.
*/
'delete_records_older_than_days' => 365,
/*
* If no log name is passed to the activity() helper
* we use this default log name.
*/
'default_log_name' => 'default',
/*
* You can specify an auth driver here that gets user models.
* If this is null we'll use the default Laravel auth driver.
*/
'default_auth_driver' => null,
/*
* If set to true, the subject returns soft deleted models.
*/
'subject_returns_soft_deleted_models' => false,
/*
* This model will be used to log activity.
* It should be implements the Spatie\Activitylog\Contracts\Activity interface
* and extend Illuminate\Database\Eloquent\Model.
*/
'activity_model' => \Spatie\Activitylog\Models\Activity::class,
/*
* This is the name of the table that will be created by the migration and
* used by the Activity model shipped with this package.
*/
'table_name' => 'activity_log',
/*
* This is the database connection that will be used by the migration and
* the Activity model shipped with this package. In case it's not set
* Laravel database.default will be used instead.
*/
'database_connection' => env('ACTIVITY_LOGGER_DB_CONNECTION'),
];

@ -1,171 +0,0 @@
<?php
return [
'enabled' => env('AUDITING_ENABLED', true),
/*
|--------------------------------------------------------------------------
| Audit Implementation
|--------------------------------------------------------------------------
|
| Define which Audit model implementation should be used.
|
*/
'implementation' => OwenIt\Auditing\Models\Audit::class,
/*
|--------------------------------------------------------------------------
| User Morph prefix & Guards
|--------------------------------------------------------------------------
|
| Define the morph prefix and authentication guards for the User resolver.
|
*/
'user' => [
'morph_prefix' => 'user',
'guards' => [
'web',
'api',
'apicore'
],
'resolver' => OwenIt\Auditing\Resolvers\UserResolver::class
],
/*
|--------------------------------------------------------------------------
| Audit Resolvers
|--------------------------------------------------------------------------
|
| Define the User, IP Address, User Agent and URL resolver implementations.
|
*/
'resolvers' => [
'ip_address' => OwenIt\Auditing\Resolvers\IpAddressResolver::class,
'user_agent' => OwenIt\Auditing\Resolvers\UserAgentResolver::class,
'url' => OwenIt\Auditing\Resolvers\UrlResolver::class,
'business_id'=> WM\Common\Services\Audit\BusinessResolver::class,
],
/*
|--------------------------------------------------------------------------
| Audit Events
|--------------------------------------------------------------------------
|
| The Eloquent events that trigger an Audit.
|
*/
'events' => [
'created',
'updated',
'deleted',
'restored'
],
/*
|--------------------------------------------------------------------------
| Strict Mode
|--------------------------------------------------------------------------
|
| Enable the strict mode when auditing?
|
*/
'strict' => false,
/*
|--------------------------------------------------------------------------
| Global exclude
|--------------------------------------------------------------------------
|
| Have something you always want to exclude by default? - add it here.
| Note that this is overwritten (not merged) with local exclude
|
*/
'exclude' => [],
/*
|--------------------------------------------------------------------------
| Empty Values
|--------------------------------------------------------------------------
|
| Should Audit records be stored when the recorded old_values & new_values
| are both empty?
|
| Some events may be empty on purpose. Use allowed_empty_values to exclude
| those from the empty values check. For example when auditing
| model retrieved events which will never have new and old values.
|
|
*/
'empty_values' => true,
'allowed_empty_values' => [
'retrieved'
],
/*
|--------------------------------------------------------------------------
| Audit Timestamps
|--------------------------------------------------------------------------
|
| Should the created_at, updated_at and deleted_at timestamps be audited?
|
*/
'timestamps' => false,
/*
|--------------------------------------------------------------------------
| Audit Threshold
|--------------------------------------------------------------------------
|
| Specify a threshold for the amount of Audit records a model can have.
| Zero means no limit.
|
*/
'threshold' => 0,
/*
|--------------------------------------------------------------------------
| Audit Driver
|--------------------------------------------------------------------------
|
| The default audit driver used to keep track of changes.
|
*/
'driver' => 'database',
/*
|--------------------------------------------------------------------------
| Audit Driver Configurations
|--------------------------------------------------------------------------
|
| Available audit drivers and respective configurations.
|
*/
'drivers' => [
'database' => [
'table' => 'audits',
'connection' => null,
],
],
/*
|--------------------------------------------------------------------------
| Audit Console
|--------------------------------------------------------------------------
|
| Whether console events should be audited (eg. php artisan db:seed).
|
*/
'console' => true,
];

@ -127,7 +127,7 @@ return [
'redis' => [
'client' => env('REDIS_CLIENT', 'predis'),
'client' => env('REDIS_CLIENT', 'phpredis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),

@ -99,11 +99,6 @@ return [
'emergency' => [
'path' => storage_path('logs/laravel.log'),
],
'sentry' => [
'driver' => 'sentry',
'level' => 'debug',
'bubble' => true,
],
],
];

@ -12,12 +12,15 @@ class DatabaseSeeder extends Seeder
*/
public function run()
{
$this->call(CoreSeeder::class);
$this->call(CommonSeeder::class);
$this->call(CRMSeeder::class);
$this->call(ProductSeeder::class);
$this->call(StoreSeeder::class);
$this->call(ServiceSeeder::class);
$this->call(FinanceSeeder::class);
$this->call(ModuleSeeder::class);
$this->call(CategorySeeder::class);
$this->call(BusinessSeeder::class);
$this->call(UserSeeder::class);
$this->call(CitySeeder::class);
$this->call(DistrictSeeder::class);
$this->call(DomainSeeder::class);
$this->call(HelpSeeder::class);
$this->call(PermissionCategorySeeder::class);
$this->call(RoleSeeder::class);
}
}

@ -36,7 +36,7 @@ return [
"digits" => ":attribute باید :digits رقم باشد.",
"digits_between" => ":attribute باید بین :min و :max رقم باشد.",
"email" => "فرمت :attribute معتبر نیست.",
"exists" => "این :attribute معتبر نمی باشد.",
"exists" => "این :attribute وجود دارد.",
"image" => ":attribute باید تصویر باشد.",
"in" => ":attribute انتخاب شده، معتبر نیست.",
"integer" => ":attribute باید نوع داده ای عددی باشد.",

@ -3,17 +3,8 @@
namespace Tests;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use Illuminate\Support\Facades\Http;
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
/**
* @return \WM\Core\Services\HttpTestProvider Http request provider for test enviroment
*/
public function makeHttpReqeust($url)
{
return \WM\Core\Services\HttpTestProvider::init($url);
}
}

@ -35,25 +35,11 @@ mix.webpackConfig({
mix.js('resources/js/Home/app.js', 'public/js/vue/Home').vue({version: 2});
require('./vendeor/wm/core/webpack.mix');
require('./vendeor/wm/common/webpack.mix');
require('./vendeor/wm/crm/webpack.mix');
require('./vendeor/wm/blog/webpack.mix');
require('./vendeor/wm/portfolio/webpack.mix');
require('./vendeor/wm/product/webpack.mix');
require('./vendeor/wm/service/webpack.mix');
require('./vendeor/wm/store/webpack.mix');
require('./vendeor/wm/admin/webpack.mix');
require('./vendeor/wm/notification/webpack.mix');
require('./vendeor/wm/roll-call/webpack.mix');
require('./vendeor/wm/finance/webpack.mix');
require('./vendeor/wm/app-management/webpack.mix');
require('./vendeor/wm/web-builder/webpack.mix');
require('./vendeor/wm/service-store/webpack.mix');
require('./vendeor/wm/lms/webpack.mix');
require('./vendeor/wm/service-store/webpack.mix');
require('./vendeor/wm/contact-us/webpack.mix');
// require('./vendeor/wm/warehouse/webpack.mix');
// require('./vendeor/wm/reservation/webpack.mix');
require('./vendor/wm/core/webpack.mix');
require('./vendor/wm/common/webpack.mix');
require('./vendor/wm/crm/webpack.mix');
require('./vendor/wm/blog/webpack.mix');
// require('./vendor/wm/warehouse/webpack.mix');
// require('./vendor/wm/reservation/webpack.mix');
mix.version();

@ -1,55 +0,0 @@
[supervisord]
nodaemon=true
user = root
[supervisorctl]
[inet_http_server]
port = 127.0.0.1:9001
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[program:scheduler]
process_name=%(program_name)s_%(process_num)02d
command=/bin/sh -c "while [ true ]; do (php /var/www/html/artisan schedule:run --verbose --no-interaction &); sleep 60; done"
autostart=true
autorestart=true
numprocs=1
user=www-data
redirect_stderr=true
stdout_logfile=/var/log/supervisor/scheduler.log
[program:change-store-order-status]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work redis --queue=change_to_successful_store_order --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=3
redirect_stderr=true
stopwaitsecs=3600
stdout_logfile=/var/log/supervisor/change-store-order-status.log
[program:create-store-product]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work redis --queue=create_store_product --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=3
redirect_stderr=true
stopwaitsecs=3600
stdout_logfile=/var/log/supervisor/create-store-product.log
# [program:check-sms-status]
# command=php /var/www/html/artisan queue:work redis --queue=check-sms-status --tries=3
# process_name=%(program_name)s_%(process_num)02d
# autostart=true
# autorestart=true
# user=www-data
# numprocs=3
# redirect_stderr=true
# stdout_logfile=/var/log/supervisor/sms-status.log
Loading…
Cancel
Save