Merge branch 'main' into api-wip

This commit is contained in:
hackerESQ
2025-01-27 20:29:21 -06:00
committed by GitHub
15 changed files with 667 additions and 365 deletions
+7 -1
View File
@@ -7,4 +7,10 @@ tests
.DS_Store .DS_Store
vapor.yml vapor.yml
.vapor .vapor
storage storage/app/livewire-tmp/*
storage/app/public/profile-photos/*
storage/framework/cache/*
storage/framework/sessions/*
storage/framework/testing/*
storage/framework/views/*
storage/framework/logs/*
+24 -9
View File
@@ -1,24 +1,35 @@
APP_NAME=Investbrain # Generate a secure key using `openssl rand -base64 32`
APP_ENV=production
APP_KEY= APP_KEY=
APP_DEBUG=true
APP_TIMEZONE=UTC # Port for NGINX to listen on
APP_PORT=8000 APP_PORT=8000
# Used internally to generate absolute links
APP_URL="http://localhost:${APP_PORT}" APP_URL="http://localhost:${APP_PORT}"
SELF_HOSTED=true
# Webroot for static assets (css, js, images, etc)
ASSET_URL="${APP_URL}"
# Enables or disables new user registration
REGISTRATION_ENABLED=true REGISTRATION_ENABLED=true
# ASSET_URL="http://localhost:8000" # (optional) webroot for static assets (css, js, images, etc) # Enable or disable AI chat feature
AI_CHAT_ENABLED=false AI_CHAT_ENABLED=false
# API key for OpenAI (for Llama support, see docs)
OPENAI_API_KEY= OPENAI_API_KEY=
OPENAI_ORGANIZATION= OPENAI_ORGANIZATION=
# Market data provider to use (comma separated list)
MARKET_DATA_PROVIDER=yahoo MARKET_DATA_PROVIDER=yahoo
MARKET_DATA_REFRESH=30
ALPHAVANTAGE_API_KEY= ALPHAVANTAGE_API_KEY=
FINNHUB_API_KEY= FINNHUB_API_KEY=
# Cadence to refresh market data (in minutes)
MARKET_DATA_REFRESH=30
DAILY_CHANGE_TIME=
#### Advanced configurations ####
ENABLED_LOGIN_PROVIDERS= ENABLED_LOGIN_PROVIDERS=
GITHUB_CLIENT_ID= GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET= GITHUB_CLIENT_SECRET=
@@ -29,9 +40,13 @@ LINKEDIN_CLIENT_SECRET=
FACEBOOK_CLIENT_ID= FACEBOOK_CLIENT_ID=
FACEBOOK_CLIENT_SECRET= FACEBOOK_CLIENT_SECRET=
APP_NAME=Investbrain
APP_TIMEZONE=UTC
APP_ENV=production
APP_DEBUG=true
APP_LOCALE=en APP_LOCALE=en
APP_FALLBACK_LOCALE=en APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US SELF_HOSTED=true
DB_CONNECTION=mysql DB_CONNECTION=mysql
DB_HOST=investbrain-mysql DB_HOST=investbrain-mysql
+13 -4
View File
@@ -8,8 +8,11 @@ on:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-22.04 #ubuntu-latest
steps: steps:
- name: Increase swap space
run: sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=5120 && sudo chmod 600 /var/swap.1 && sudo /sbin/mkswap /var/swap.1 && sudo /sbin/swapon /var/swap.1
- name: Login to Docker Hub - name: Login to Docker Hub
uses: docker/login-action@v3 uses: docker/login-action@v3
with: with:
@@ -29,6 +32,14 @@ jobs:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Extract version from tag - name: Extract version from tag
id: extract-version id: extract-version
run: | run: |
@@ -44,6 +55,4 @@ jobs:
investbrainapp/investbrain:latest investbrainapp/investbrain:latest
investbrainapp/investbrain:${{ env.version }} investbrainapp/investbrain:${{ env.version }}
ghcr.io/investbrainapp/investbrain:latest ghcr.io/investbrainapp/investbrain:latest
ghcr.io/investbrainapp/investbrain:${{ env.version }} ghcr.io/investbrainapp/investbrain:${{ env.version }}
+31 -16
View File
@@ -1,5 +1,13 @@
<p align="center"><a href="https://investbra.in" target="_blank"><img src="https://raw.githubusercontent.com/investbrainapp/investbrain/main/investbrain-logo.png" width="400" alt="Investbrain Logo"></a></p> <p align="center"><a href="https://investbra.in" target="_blank"><img src="https://raw.githubusercontent.com/investbrainapp/investbrain/main/investbrain-logo.png" width="400" alt="Investbrain Logo"></a></p>
[![GitHub Repo Stars](https://img.shields.io/github/stars/investbrainapp/investbrain?style=for-the-badge&color=%23CCCCCC)](https://github.com/investbrainapp/investbrain/)
[![GitHub Contributors](https://img.shields.io/github/contributors/investbrainapp/investbrain?style=for-the-badge)](https://github.com/investbrainapp/investbrain/)
[![GitHub Issues](https://img.shields.io/github/issues/investbrainapp/investbrain?style=for-the-badge)](https://github.com/investbrainapp/investbrain/issues)
[![Docker Pulls](https://img.shields.io/docker/pulls/investbrainapp/investbrain?style=for-the-badge)](https://hub.docker.com/r/investbrainapp/investbrain/)
## About Investbrain ## About Investbrain
Investbrain is a smart open-source investment tracker that helps you manage, track, and make informed decisions about your investments. Investbrain is a smart open-source investment tracker that helps you manage, track, and make informed decisions about your investments.
@@ -24,27 +32,33 @@ Investbrain is a Laravel PHP web application that leverages Livewire and Tailwin
## Self hosting ## Self hosting
For ease of installation, we _highly recommend_ installing Investbrain using the provided [Docker Compose](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file, which downloads all the necessary dependencies and seamlessly builds everything you need to get started quickly! For ease of installation, we _highly recommend_ installing Investbrain using the provided [Docker Compose](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file, which uses the official Investbrain Docker image and includes all the necessary dependencies to seamlessly build everything you need to get started quickly!
Before getting started, you should already have the following installed on your machine: [Docker Engine](https://docs.docker.com/engine/install/), [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), and a wild sense of adventure. Before getting started, you should already have [Docker Engine](https://docs.docker.com/engine/install/) installed on your machine.
Ready? Let's get started! Ready? Let's get started!
First, you can clone this repository: **1. Download copy of Docker Compose file**
Grab a copy of the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) using `wget`, `curl` or similar:
```bash ```bash
git clone https://github.com/investbrainapp/investbrain.git && cd investbrain curl -O https://raw.githubusercontent.com/investbrainapp/investbrain/main/docker-compose.yml
``` ```
Then, build the Docker image and bring up the container (this will take a few minutes): **2. Set your environment**
```bash Adjust the `environment` properties in the compose file to your preferences.
docker compose up
```
In the previous step, all of the default configurations are set automatically. This includes creating a .env file and setting the required Laravel `APP_KEY`. **Importantly**, you need to set the `APP_KEY` value. If you're unsure, Investbrain will generate an `APP_KEY` for you on first run, but it will not persist. You must _manually_ update your environment configuration with this generated value!
If everything worked as expected, you should now be able to access Investbrain in the browser at. You should create an account by visiting: Alternatively, create a .env file in the same directory as your compose file, then reference the .env file using the `env_file` property.
> Want to know what other configuration options are available? You can reference the [.env.example](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file in this respository for available environment configurations.
**3. Run `docker compose up`**
It might take a few minutes to pull the Docker images. But assuming everything worked as expected, you should now be able to access Investbrain in the browser by visiting:
```bash ```bash
http://localhost:8000/register http://localhost:8000/register
@@ -68,7 +82,7 @@ Investbrain includes an extensible market data provider interface that allows yo
### Configuration ### Configuration
You can specify the market data provider you want to use in your .env file: You can specify the market data provider you want to use in your environment variables:
```bash ```bash
MARKET_DATA_PROVIDER=yahoo MARKET_DATA_PROVIDER=yahoo
@@ -76,7 +90,7 @@ MARKET_DATA_PROVIDER=yahoo
You can also use Investbrain's built-in fallback mechanism to ensure reliable data access. If any provider fails, Investbrain will automatically attempt to retrieve data from the next available provider, continuing through your configured providers until one returns successfully. You can also use Investbrain's built-in fallback mechanism to ensure reliable data access. If any provider fails, Investbrain will automatically attempt to retrieve data from the next available provider, continuing through your configured providers until one returns successfully.
Your selected providers should be listed in your .env file. Each should be separated by a comma: Your selected providers should be listed in your environment variables. Each should be separated by a comma:
```bash ```bash
MARKET_DATA_PROVIDER=yahoo,alphavantage MARKET_DATA_PROVIDER=yahoo,alphavantage
@@ -121,12 +135,13 @@ Exporting your portfolios and transactions is a convenient way to back-up your I
## Configuration ## Configuration
There are several optional configurations available when installing using the recommended [Docker method](#self-hosting). These options are configurable using an environment file. Changes can be made in your [.env](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file before installation. There are several optional configurations available when installing using the recommended [Docker method](#self-hosting). These options are configurable using an environment file. Configurations can be added to your [.env](https://github.com/investbrainapp/investbrain/blob/main/.env.example) file or to the `environment` property in the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file.
| Option | Description | Default | | Option | Description | Default |
| ------------- | ------------- | ------------- | | ------------- | ------------- | ------------- |
| APP_URL | The URL where your Investbrain installation will be accessible | http://localhost | | APP_URL | The URL where your Investbrain installation will be accessible | http://localhost |
| APP_PORT | The HTTP port exposed by the NGINX container | 8000 | | APP_PORT | The HTTP port exposed by the NGINX container | 8000 |
| APP_KEY | Must be set during install - encryption key for various security-related functions | `null` |
| MARKET_DATA_PROVIDER | The market data provider to use (either `yahoo`, `alphavantage`, or `finnhub`) | yahoo | | MARKET_DATA_PROVIDER | The market data provider to use (either `yahoo`, `alphavantage`, or `finnhub`) | yahoo |
| ALPHAVANTAGE_API_KEY | If using the Alpha Vantage provider | `null` | | ALPHAVANTAGE_API_KEY | If using the Alpha Vantage provider | `null` |
| FINNHUB_API_KEY | If using the Finnhub provider | `null` | | FINNHUB_API_KEY | If using the Finnhub provider | `null` |
@@ -141,7 +156,7 @@ There are several optional configurations available when installing using the re
| REGISTRATION_ENABLED | Whether to enable registration of new users | `true` | | REGISTRATION_ENABLED | Whether to enable registration of new users | `true` |
> Note: These options affect the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file, so if you decide to make any changes to these default configurations, you'll have to restart the Docker containers before your changes take effect. > Note: These options affect the [docker-compose.yml](https://github.com/investbrainapp/investbrain/blob/main/docker-compose.yml) file and are cached during run-time. If change any environment configurations, you'll have to restart the container before your changes take effect.
## Updating ## Updating
@@ -151,10 +166,10 @@ To update Investbrain using the recommended [Docker installation](#self-hosting)
docker compose stop docker compose stop
``` ```
Then pull the latest updates from this repository using git: Then pull the latest Docker image:
```bash ```bash
git pull docker image pull investbrainapp/investbrain:latest
``` ```
Finally bring the containers back up! Finally bring the containers back up!
+5 -2
View File
@@ -5,9 +5,12 @@
"keywords": ["stocks", "dividends", "investments", "tracking"], "keywords": ["stocks", "dividends", "investments", "tracking"],
"license": "CC-BY-NC 4.0", "license": "CC-BY-NC 4.0",
"require": { "require": {
"php": "^8.2", "php": "^8.3",
"ext-gd": "*",
"ext-mbstring": "*",
"ext-zip": "*",
"finnhub/client": "master@dev", "finnhub/client": "master@dev",
"laravel/framework": "^11.9", "laravel/framework": "^11.35",
"laravel/jetstream": "^5.1", "laravel/jetstream": "^5.1",
"laravel/sanctum": "^4.0", "laravel/sanctum": "^4.0",
"laravel/socialite": "^5.16", "laravel/socialite": "^5.16",
+1 -1
View File
@@ -13,7 +13,7 @@ return [
| |
*/ */
'name' => env('APP_NAME', 'Laravel'), 'name' => env('APP_NAME', 'Investbrain'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
+1 -1
View File
@@ -143,7 +143,7 @@ return [
'redis' => [ 'redis' => [
'client' => env('REDIS_CLIENT', 'phpredis'), 'client' => env('REDIS_CLIENT', 'predis'),
'options' => [ 'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'), 'cluster' => env('REDIS_CLUSTER', 'redis'),
+1 -1
View File
@@ -110,7 +110,7 @@ return [
'from' => [ 'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'), 'name' => env('MAIL_FROM_NAME', 'Investbrain'),
], ],
]; ];
+19 -18
View File
@@ -7,10 +7,24 @@ services:
container_name: investbrain-app container_name: investbrain-app
restart: unless-stopped restart: unless-stopped
tty: true tty: true
expose: ports:
- "9000" - "${APP_PORT:-8000}:80"
environment:
APP_KEY: "" # Generate a key using `openssl rand -base64 32`
APP_URL: "http://localhost:8000"
ASSET_URL: "http://localhost:8000"
DB_CONNECTION: mysql
DB_HOST: investbrain-mysql
DB_PORT: 3306
DB_DATABASE: ${DB_DATABASE:-investbrain}
DB_USERNAME: ${DB_USERNAME:-investbrain}
DB_PASSWORD: ${DB_PASSWORD:-investbrain}
SESSION_DRIVER: redis
QUEUE_CONNECTION: redis
CACHE_STORE: redis
REDIS_HOST: investbrain-redis
volumes: volumes:
- .:/var/www/app:delegated - ./storage:/var/www/app/storage:delegated
depends_on: depends_on:
- mysql - mysql
- redis - redis
@@ -25,20 +39,6 @@ services:
- investbrain-network - investbrain-network
volumes: volumes:
- investbrain-redis:/data - investbrain-redis:/data
nginx:
image: nginx:alpine
container_name: investbrain-nginx
restart: unless-stopped
tty: true
ports:
- "${APP_PORT:-8000}:80"
volumes:
- ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
- .:/var/www/app:delegated
depends_on:
- app
networks:
- investbrain-network
mysql: mysql:
image: mysql:8.0 image: mysql:8.0
container_name: investbrain-mysql container_name: investbrain-mysql
@@ -48,8 +48,9 @@ services:
MYSQL_USER: ${DB_USERNAME:-investbrain} MYSQL_USER: ${DB_USERNAME:-investbrain}
MYSQL_PASSWORD: ${DB_PASSWORD:-investbrain} MYSQL_PASSWORD: ${DB_PASSWORD:-investbrain}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-investbrain} MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-investbrain}
command:
- --cte-max-recursion-depth=25000
volumes: volumes:
- ./docker/mysql.conf:/etc/mysql/conf.d/my.cnf
- investbrain-mysql:/var/lib/mysql - investbrain-mysql:/var/lib/mysql
networks: networks:
- investbrain-network - investbrain-network
+40 -25
View File
@@ -1,45 +1,60 @@
FROM php:8.3-fpm FROM php:8.3-fpm
ENV DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=noninteractive
ENV APP_NAME=Investbrain
ENV VITE_APP_NAME=Investbrain
ENV APP_DEBUG=true
ENV SELF_HOSTED=true
# Set the working directory # Set the working directory
COPY . /var/www/app COPY . /var/www/app
WORKDIR /var/www/app WORKDIR /var/www/app
# Set permissions # Allow PHP installs to be built cross-platform
RUN chown -R www-data:www-data . \ #ENV CFLAGS="-fstack-protector-strong -fpic -fPIC -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
&& chmod -R 775 ./storage \
&& chmod +x ./docker/entrypoint.sh \ # Install required packages
# Install common php extension dependencies RUN apt-get update && apt-get upgrade -y \
&& apt-get update && apt-get install -y \ && apt-get upgrade -y \
nginx \
libfreetype-dev \ libfreetype-dev \
libjpeg62-turbo-dev \ libjpeg62-turbo-dev \
libpng-dev \ libpng-dev \
zlib1g-dev \ zlib1g-dev \
libzip-dev \ libzip-dev \
unzip \
libicu-dev \ libicu-dev \
git \ libpq-dev \
curl \ binutils libc6-dev \
supervisor \ supervisor \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \ unzip curl git \
&& docker-php-ext-install -j$(nproc) \ nodejs npm \
gd \ # Clean up APT
zip \ && apt-get -y autoremove \
pdo_mysql \ && apt-get clean \
mysqli \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
intl \ # Install PHP extensions
# Install Node.js and npm && docker-php-ext-configure gd --with-freetype --with-jpeg \
&& curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ && docker-php-ext-install -j$(nproc) \
&& apt-get install -y nodejs \ gd pgsql zip pdo_mysql mysqli intl
&& npm install -g npm@latest
# Copy over supervisor configuration # Set permissions
RUN chown -R www-data:www-data . \
&& chmod -R 775 ./storage \
&& chmod +x ./docker/entrypoint.sh \
&& usermod -s /bin/bash www-data
# Install Composer and Node.js Install PHP dependencies and build front end assets
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
&& composer install --no-scripts --optimize-autoloader \
&& npm install && npm run build
# Remove default nginx config
RUN rm /etc/nginx/sites-enabled/default
# Copy over configs
COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf
COPY ./docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf COPY ./docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# Install composer
COPY --from=composer:2.6.5 /usr/bin/composer /usr/local/bin/composer
# Serve on port 80 # Serve on port 80
EXPOSE 80 EXPOSE 80
@@ -48,4 +63,4 @@ HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD curl -f http://localhos
# Run everything else # Run everything else
ENTRYPOINT ["/bin/bash", "./docker/entrypoint.sh"] ENTRYPOINT ["/bin/bash", "./docker/entrypoint.sh"]
CMD ["./docker/entrypoint.sh"]
+33 -30
View File
@@ -2,53 +2,56 @@
cd /var/www/app cd /var/www/app
echo -e "\n====================== Running entrypoint script... ====================== "
if [ ! -f ".env" ]; then
echo " > Ope, gotta create an .env file!"
cp .env.example .env
fi
echo -e "\n====================== Installing Composer dependencies... ====================== "
/usr/local/bin/composer install
echo -e "\n====================== Validating environment... ====================== " echo -e "\n====================== Validating environment... ====================== "
if [ $(stat -c '%U' .) != "www-data" ]; then if [[ -z "$APP_KEY" ]]; then
echo " > Setting correct permissions for pwd..." echo -e "\n > Oops! The required APP_KEY configuration is missing in your environment! "
chown -R www-data:www-data . echo -e "\n > Generating a key (see below) but this will NOT be persisted between container restarts. "
echo -e "\n > You should set this APP_KEY in your .env file! "
draw_box() {
local text="$1"
local length=${#text}
local border=$(printf '%*s' "$((length + 4))" | tr ' ' '*')
echo -e "\n\n$border"
echo "* $text *"
echo "$border"
}
export APP_KEY=base64:$(openssl rand -base64 32)
draw_box $APP_KEY
fi fi
if ( ! grep -q "^APP_KEY=" ".env" || grep -q "^APP_KEY=$" ".env"); then for dir in storage/framework/cache storage/framework/sessions storage/framework/views; do
echo " > Ah, APP_KEY is missing in .env file. Generating a new key!" if [ ! -d "$dir" ]; then
echo -e "\n > $dir is missing. Creating scaffold for storage directory... "
/usr/local/bin/php artisan key:generate --force mkdir -p storage/framework/{cache,sessions,views}
fi chmod -R 775 storage
chown -R www-data:www-data storage
fi
done
if [ ! -L "public/storage" ]; then if [ ! -L "public/storage" ]; then
echo " > Creating symbolic link for app public storage..." echo -e "\n > Creating symbolic link for app public storage... "
/usr/local/bin/php artisan storage:link /usr/local/bin/php /var/www/app/artisan storage:link
fi fi
echo -e "\n====================== Installing NPM dependencies and building frontend... ====================== "
/usr/bin/npm install
/usr/bin/npm run build
echo -e "\n====================== Running migrations... ====================== " echo -e "\n====================== Running migrations... ====================== "
run_migrations() { run_migrations() {
/usr/local/bin/php artisan migrate --force /usr/local/bin/php /var/www/app/artisan migrate --force
} }
RETRIES=30 RETRIES=10
DELAY=5 DELAY=5
until run_migrations; do until run_migrations; do
RETRIES=$((RETRIES-1)) RETRIES=$((RETRIES-1))
if [ $RETRIES -le 0 ]; then if [ $RETRIES -le 0 ]; then
echo " > Database is not ready after multiple attempts. Exiting..." echo -e "\n > Database is not ready after $RETRIES attempts. Exiting... "
exit 1 exit 1
fi fi
echo " > Waiting for database to be ready... retrying in $DELAY seconds." echo -e "\n > Waiting for database to be ready... retrying in $DELAY seconds. "
sleep $DELAY sleep $DELAY
done done
echo -e "\n====================== Spinning up Supervisor daemon... ====================== " echo -e "\n====================== Spinning up Supervisor daemon... ====================== \n"
exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
-2
View File
@@ -1,2 +0,0 @@
[mysqld]
cte_max_recursion_depth = 25000
+1 -1
View File
@@ -14,7 +14,7 @@ server {
fastcgi_param HTTPS $http_x_forwarded_proto; fastcgi_param HTTPS $http_x_forwarded_proto;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass investbrain-app:9000; fastcgi_pass 127.0.0.1:9000;
} }
location ~ /\.ht { location ~ /\.ht {
+11 -11
View File
@@ -1,34 +1,34 @@
[supervisord] [supervisord]
nodaemon=true nodaemon=true
user=root user=root
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid pidfile=/var/run/supervisord.pid
[program:nginx]
command=nginx -g 'daemon off;'
autostart=true
autorestart=true
redirect_stderr=true
redirect_stdout=true
[program:php] [program:php]
command=php-fpm -F command=php-fpm -F
autostart=true autostart=true
autorestart=true autorestart=true
stdout_logfile=/var/log/supervisor/php.log redirect_stderr=true
stderr_logfile=/var/log/supervisor/php_error.log redirect_stdout=true
[program:scheduler] [program:scheduler]
command=php artisan schedule:work command=php artisan schedule:work
autorestart=true autorestart=true
redirect_stderr=true redirect_stderr=true
stdout_logfile=/dev/stdout redirect_stdout=true
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:queue-worker] [program:queue-worker]
command=php artisan queue:work --sleep=3 --tries=1 --memory=256 --timeout=3600 command=php artisan queue:work --sleep=3 --tries=1 --memory=256 --timeout=3600
process_name=%(program_name)s_%(process_num)02d process_name=%(program_name)s_%(process_num)02d
autorestart=true autorestart=true
redirect_stderr=true redirect_stderr=true
stdout_logfile=/dev/stdout redirect_stdout=true
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
numprocs=2 numprocs=2
[supervisorctl] [supervisorctl]
+480 -243
View File
File diff suppressed because it is too large Load Diff