Merge pull request #1350 from openclassify/fatihalp

New Docker Compose for Openclassify with PHP 8.2
This commit is contained in:
emrullahardc 2023-07-23 23:06:42 +03:00 committed by GitHub
commit 4272bfd569
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
39 changed files with 579 additions and 541 deletions

View File

@ -0,0 +1,6 @@
{
"name": "Openclassify",
// Script to run to bootstrap the app when the space is created
"postCreateCommand": "bash install.sh",
"outputCapture": "std"
}

View File

@ -1,16 +1,18 @@
APP_ENV=local
APP_NAME=oc
APP_ENV=production
INSTALLED="false"
APP_URL_TYPE="HTTP_X_FORWARDED_HOST"
APP_KEY=DYKEBxfEHK1PP4mUbP3gWPtsPZgXh0qX
APP_DEBUG=true
DEBUG_BAR=false
DEBUG_BAR=true
DB_CONNECTION=mysql
DB_HOST=mysql
DB_DATABASE=oopenclassify
DB_USERNAME=root
DB_PASSWORD=
#DB_HOST=mysql
DB_HOST=host.docker.internal
DB_DATABASE=oc
DB_USERNAME=oc
DB_PASSWORD=oc
APPLICATION_NAME=Default
APPLICATION_REFERENCE=default
APPLICATION_DOMAIN=http://localhost
APPLICATION_REFERENCE=default
ADMIN_USERNAME=admin
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=admin

13
.gitignore vendored
View File

@ -1 +1,12 @@
.idea
.idea
.env
.coverage
/bin
/core
/build
/vendor
/coverage
/node_modules
/bower_components
composer.lock
package-lock.json

View File

@ -1,62 +0,0 @@
@servers(['web' => 'yoursite@50.59.80.150 -p 22400'])
@task('update', ['on' => 'web'])
cd /home/yoursite
php /usr/bin/composer update -o --no-dev
php artisan migrate --all-addons --force
php artisan migrate --force
@endtask
@task('pull', ['on' => 'web'])
cd /home/yoursite
git pull
@endtask
@task('migrate', ['on' => 'web'])
cd /home/yoursite
php artisan migrate --all-addons --force
php artisan migrate --force
@endtask
@task('compile', ['on' => 'web'])
cd /home/yoursite
php artisan streams:compile
@endtask
@task('clear', ['on' => 'web'])
cd /home/yoursite
php artisan httpcache:clear
php artisan assets:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
php artisan twig:clear
@endtask
@task('install', ['on' => 'web'])
cd /home/yoursite
php artisan addon:install {{$addon}}
@endtask
@task('uninstall', ['on' => 'web'])
cd /home/yoursite
php artisan addon:uninstall {{$addon}}
@endtask
@task('reinstall', ['on' => 'web'])
cd /home/yoursite
php artisan addon:reinstall {{$addon}}
@endtask
@macro('push')
pull
clear
migrate
@endmacro
@macro('deploy')
push
update
compile
clear
@endmacro

View File

@ -1,69 +0,0 @@
# Installation
## Server Requirements
- PHP >= 7.2
- XML PHP Extension
- PDO PHP Extension
- cURL PHP Extension
- JSON PHP Extension
- Ctype PHP Extension
- BCMath PHP Extension
- SQLite PHP Extension
- OpenSSL PHP Extension
- Mbstring PHP Extension
- Fileinfo PHP Extension
- Tokenizer PHP Extension
- GD Library (>=2.0) **OR** Imagick PHP extension (>=6.5.7)
### Via Composer
> Do not create an `.env` file just yet - Installer will generate one for you.{.important}
```bash
composer create-project openclassify/openclassify
```
### Host Configuration
When you setup your web host be sure to point the web root to `public` directory. Just as you would a normal Laravel installation.
#### Alternate Directories for cPanel or Virtualmin
In some environments like cPanel or Virtualmin it may be difficult to use the `public` directory as the web root. In these cases we suggest symlinking the `public` directory to `public_html`:
```bash
ln -s public public_html
```
You may also simply rename the `public` directory to `public_html`. Path hints will automatically use the correct path.
### Directory Permissions
After installing, you may need to configure some permissions in order to proceed. Directories within the `storage`, `public/app`, and the `bootstrap/cache` directories should be writable by your web server. If you are using the [Homestead](http://laravel.com/docs/homestead) virtual machine, these permissions should already be set.
## Installing
### Running the Installation Wizard
After downloading and it's dependencies with:
```bash
composer install
```
you will need to install the software in order to get started.
By this time you should be able to visit your site's URL which will
redirect you to the installer: `http://yoursite.com/installer`
### Using the CLI Installer
```bash
php artisan install
```
You will be prompted for details in order to proceed with the installation process.

View File

@ -1 +0,0 @@
web: INSTALLED=false php artisan streams:compile && INSTALLED=true bin/heroku-php-apache2 public/

154
README.md
View File

@ -4,7 +4,9 @@
</p>
<br>
<p align="center">
<a href="https://packagist.org/packages/openclassify/openclassify" target="_blank"><img class="badge" src="http://poser.pugx.org/openclassify/openclassify/v"></a>
<a href="https://packagist.org/packages/openclassify/openclassify" target="_blank">
<img class="badge" src="http://poser.pugx.org/openclassify/openclassify/v">
</a>
<a href="https://packagist.org/packages/openclassify/openclassify" target="_blank"><img class="badge" src="http://poser.pugx.org/openclassify/openclassify/downloads"></a>
<a href="https://packagist.org/packages/openclassify/openclassify" target="_blank"><img class="badge" src="http://poser.pugx.org/openclassify/openclassify/license"></a>
<a href="https://scrutinizer-ci.com/g/openclassify/openclassify/?branch=master" rel="nofollow"><img src="https://camo.githubusercontent.com/b1809c56d5b15765dabaf72c173e7f9aba9e7b721ccb0036e9db5da62869e6b1/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6f70656e636c6173736966792f6f70656e636c6173736966792f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572" alt="Scrutinizer Code Quality" data-canonical-src="https://scrutinizer-ci.com/g/openclassify/openclassify/badges/quality-score.png?b=master" style="max-width: 100%;"></a>
@ -14,18 +16,52 @@
## About OpenClassify
### About OpenClassify
OpenClassify is modular and most advanced open source classified platform build with Laravel 8 & PHP 8.1 Supported. Included Pyrocms 3.9
OpenClassify is modular and most advanced open source classified platform build with Laravel included Pyrocms.
### Install with Docker
We suggest to use Docker. Nginx, Mysql and PHP 8.2 pre-installed. MacOS, Windows and Ubuntu is supported.
Install Docker and run it. Install by watching 2 min video on [Youtube](https://www.youtube.com/watch?v=vVpVmsxq-Z0&t=27s&pp=ygUTb3BlbmNsYXNzaWZ5IGRvY2tlcg%3D%3D)
## Translation
1- Clone project
```bash
git clone https://github.com/openclassify/openclassify.git
```
2- Run install.sh
```bash
bash install.sh
```
3- That's it!
Open project at [localhost](http://localhost)
### Documentation
You can visit this link for detailed documentation.
https://visiosoft.gitbook.io/v2/
### CLI Commands
If you couldn't find a solution for any problem, please review our CLI Command document.
[View CLI Command Document](https://github.com/openclassify/openclassify/blob/master/docs/cli-commands.md)
### Other Installation Methods
Check [here](https://github.com/openclassify/openclassify/blob/master/docs/other-install-methods.md) for more.
### Translation
Openclassify support 22+ languages. If you'd like to contribute translations, please check out our [Crowdin](https://crowdin.com/project/openclassify) project.
## Server Requirements
### Server Requirements
- Supports PHP 7.3 and later (8.1 Supported)
- Only PHP > 8.2 Officially Supported!
- XML PHP Extension
- PDO PHP Extension
- cURL PHP Extension
@ -38,116 +74,14 @@ Openclassify support 22+ languages. If you'd like to contribute translations, pl
- Fileinfo PHP Extension
- Tokenizer PHP Extension
- GD Library (>=2.0) **OR** Imagick PHP extension (>=6.5.7)
## Via Composer
> Do not create an `.env` file just yet - Installer will generate one for you.{.important}
```bash
composer create-project openclassify/openclassify
```
### Via Docker
We suggest to use Docker.
https://github.com/openclassify/openclassify/wiki/Installing-Openclassify-on-windows-docker-desktop
### Host Configuration
When you setup your web host be sure to point the web root to `public` directory. Just as you would a normal Laravel installation.
#### Alternate Directories for cPanel or Virtualmin
In some environments like cPanel or Virtualmin it may be difficult to use the `public` directory as the web root. In these cases we suggest symlinking the `public` directory to `public_html`:
```bash
ln -s public public_html
```
You may also simply rename the `public` directory to `public_html`. Path hints will automatically use the correct path.
### Directory Permissions
After installing, you may need to configure some permissions in order to proceed. Directories within the `storage`, `public/app`, and the `bootstrap/cache` directories should be writable by your web server. If you are using the [Homestead](http://laravel.com/docs/homestead) virtual machine, these permissions should already be set.
## Installation
### Running the Installation Wizard
After downloading and it's dependencies with:
```bash
composer install
```
you will need to install the software in order to get started.
By this time you should be able to visit your site's URL which will
redirect you to the installer: `http://yoursite.com/installer`
### Using the CLI Installer
```bash
php artisan install
```
You will be prompted for details in order to proceed with the installation process.
> You may need to run `ulimit -n 1024` before installing via CLI to temporarily increase your max open files limit.
#### Automating the CLI Installer
You can automate the installer by creating your own .env file with something like this:
```bash
APP_ENV=local
APP_DEBUG=true
APP_KEY=zfesbnTkXvooWVcsKMw2r4SmPVNGbFoS
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=workbench
DB_USERNAME=root
DB_PASSWORD=root
APPLICATION_NAME=Default
APPLICATION_REFERENCE=default
APPLICATION_DOMAIN=localhost
ADMIN_EMAIL=info@openclassify.com
ADMIN_USERNAME=admin
ADMIN_PASSWORD=password
LOCALE=en
TIMEZONE=Turkey/Istanbul
```
> The APP_KEY must be exactly 32 characters in length.
Then run the installer and indicate that the system is ready to install:
```bash
php artisan install --ready
```
## CLI Commands
If you couldn't find a solution for any problem, please review our CLI Command document.
[View CLI Command Document](https://github.com/openclassify/openclassify/blob/master/docs/cli-commands.md)
## Documentation
You can visit this link for detailed documentation.
https://visiosoft.gitbook.io/v2/
## Code Contributors
### Code Contributors
This project exists thanks to all the people who [contribute](https://github.com/openclassify/openclassify/graphs/contributors) and more.
<p align="center">
<a href = "https://github.com/openclassify/openclassify/graphs/contributors">
<img src = "https://contrib.rocks/image?repo=openclassify/openclassify"/>
</a>
</p>
Thanks to Ryan and his stream platform PyroCMS which makes OpenClassify more powerful.
</p>

View File

@ -1,15 +0,0 @@
# Security Policy
## Supported Versions
| Version | Supported |
| ------- | ------------------ |
| 2.x | :x: |
| 1.x | :white_check_mark: |
## Reporting a Vulnerability
If you discover any security related issues, please email info@openclassify.com instead of using the issue tracker.

View File

@ -1 +0,0 @@
theme: jekyll-theme-cayman

View File

@ -1,20 +0,0 @@
{
"name": "PyroCMS",
"description": "A barebones Pyro install.",
"repository": "https://github.com/pyrocms/pyrocms",
"logo": "https://pyrocms.com/files/vendors/logo-inverted_512@2x.jpg",
"keywords": [
"pyrocms",
"laravel",
"cms",
"php"
],
"addons": [
{
"plan": "heroku-postgresql",
}
],
"scripts": {
"postdeploy": "composer install"
}
}

View File

@ -1,46 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="Streams" default="dist">
<!-- ============================================ -->
<!-- Target: prepare -->
<!-- ============================================ -->
<target name="prepare">
<echo msg="Deleting directory ./build"/>
<delete dir="build"/>
<echo msg="Making directory ./build"/>
<mkdir dir="./build"/>
</target>
<!-- ============================================ -->
<!-- Target: build -->
<!-- ============================================ -->
<target name="build" depends="prepare">
<echo msg="Copying files to build directory..."/>
<echo msg="Copying ./ to ./build directory..."/>
<copy todir="./build">
<fileset dir="./">
<include name="**"/>
<exclude name=".git/"/>
</fileset>
</copy>
</target>
<!-- ============================================ -->
<!-- (DEFAULT) Target: dist -->
<!-- ============================================ -->
<target name="dist" depends="build">
<echo msg="Creating archive..."/>
<tar destfile="./build/build.tar.gz" compression="gzip">
<fileset dir="./build">
<include name="*"/>
</fileset>
</tar>
<echo msg="Files copied and compressed in build directory OK!"/>
</target>
</project>

View File

@ -57,9 +57,7 @@
"anomaly/navigation-module": "~2.4.0",
"anomaly/dashboard-module": "~2.2.0",
"anomaly/redirects-module": "~2.3.0",
"anomaly/variables-module": "~2.4.0",
"anomaly/settings-module": "~2.4.0",
"anomaly/blocks-module": "~1.3.0",
"anomaly/search-module": "~3.0.0",
"anomaly/users-module": "~2.5.0",
"anomaly/pages-module": "~2.6.0",
@ -74,13 +72,10 @@
"visiosoft/integer-field_type": "~2.1.0",
"visiosoft/list-field_type": "*",
"visiosoft/addblock-extension": "^1.1",
"maatwebsite/excel": "*",
"google/recaptcha": "1.2.*",
"sentry/sentry-laravel": "2.3.1",
"composer/composer": "2.*",
"visiosoft/composer-merge-plugin": "2.*",
"pusher/pusher-php-server": "^5.0",
"simplepie/simplepie": "^1.5.0",
"guzzlehttp/guzzle": "^7.3",
"visiosoft/connect-module": "^1.0",
"visiosoft/singlefile-field_type": "^1.0",
@ -95,7 +90,6 @@
"visiosoft/advs-module": "^1.0",
"visiosoft/json-field_type": "^1.0",
"visiosoft/language_switcher-plugin": "^1.0",
"fruitcake/laravel-cors": "^2.0",
"visiosoft/global_helper-extension": "*"
},
"replace": {
@ -105,9 +99,7 @@
"filp/whoops": "~2.0",
"fzaninotto/faker": "~1.4",
"symfony/css-selector": "3.1.*",
"symfony/dom-crawler": "3.1.*",
"anomaly/installer-module": "~2.4.0",
"laravel/sail": "^1.14"
"symfony/dom-crawler": "3.1.*"
},
"repositories": [
{

View File

@ -78,7 +78,7 @@ return [
|
*/
'url' => env('APP_URL', 'http://localhost'),
'url' => env('APP_URL', '/'),
/*
|--------------------------------------------------------------------------

View File

@ -15,7 +15,7 @@ return [
|
*/
'default' => env('BROADCAST_DRIVER', 'pusher'),
'default' => env('BROADCAST_DRIVER', 'null'),
/*
|--------------------------------------------------------------------------

View File

@ -1,82 +1,87 @@
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
context: ./docker/7.4
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-7.4/openclassify
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
- '${HMR_PORT:-8080}:8080'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
volumes:
- '.:/var/www/html'
networks:
- sail
phpmyadmin:
image: 'phpmyadmin:latest'
ports:
- 8888:80
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
links:
- "mysql:db"
depends_on:
- mysql
networks:
- sail
mysql:
image: 'mysql/mysql-server:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 1
volumes:
- 'sail-mysql:/var/lib/mysql'
- './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
networks:
- sail
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
retries: 3
timeout: 5s
redis:
image: 'redis:alpine'
ports:
- '${FORWARD_REDIS_PORT:-6379}:6379'
volumes:
- 'sail-redis:/data'
networks:
- sail
healthcheck:
test: ["CMD", "redis-cli", "ping"]
retries: 3
timeout: 5s
memcached:
image: 'memcached:alpine'
ports:
- '11211:11211'
networks:
- sail
networks:
sail:
driver: bridge
volumes:
sail-mysql:
driver: local
sail-redis:
driver: local
db-store:
psysh-store:
configs:
db-config:
file: ./docker/mysql/my.cnf
services:
php:
build:
context: .
dockerfile: ./docker/php/Dockerfile
target: ${APP_BUILD_TARGET:-development}
container_name: oc_php
volumes:
- type: bind
source: ./
target: /workspace
- type: volume
source: psysh-store
target: /root/.config/psysh
volume:
nocopy: true
depends_on:
database:
condition: service_healthy
extra_hosts:
- "host.docker.internal:host-gateway"
nginx:
build:
context: .
dockerfile: ./docker/nginx/Dockerfile
container_name: ${APP_NAME}_nginx
ports:
- target: 80
published: ${WEB_PUBLISHED_PORT:-80}
protocol: tcp
mode: host
volumes:
- type: bind
source: ./
target: /workspace
depends_on:
- php
- database
database:
build:
context: .
dockerfile: ./docker/mysql/Dockerfile
command: --max_allowed_packet=32505856 # Set max_allowed_packet to 256M (or any other value)
ports:
- target: 3306
published: ${DB_PUBLISHED_PORT:-3306}
protocol: tcp
mode: host
configs:
- source: db-config
target: /etc/my.cnf
volumes:
- type: volume
source: db-store
target: /var/lib/mysql
volume:
nocopy: true
environment:
- MYSQL_DATABASE=${DB_DATABASE:-laravel}
- MYSQL_USER=${DB_USERNAME:-phper}
- MYSQL_PASSWORD=${DB_PASSWORD:-secret}
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD:-secret}
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
timeout: 5s
retries: 10
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
ports:
- "8081:80"
depends_on:
- database
environment:
PMA_USER: oc
PMA_PASSWORD: oc
PMA_HOSTS: database,localhost

View File

@ -1,2 +0,0 @@
WWWGROUP=1000
WWWUSER=1000

View File

@ -1,68 +0,0 @@
FROM ubuntu:20.04
LABEL maintainer="Taylor Otwell"
ARG WWWGROUP
ARG NODE_VERSION=16
ARG POSTGRES_VERSION=14
WORKDIR /var/www/html
ENV DEBIAN_FRONTEND noninteractive
ENV TZ=UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update \
&& apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 \
&& mkdir -p ~/.gnupg \
&& chmod 600 ~/.gnupg \
&& echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf \
&& echo "keyserver hkp://keyserver.ubuntu.com:80" >> ~/.gnupg/dirmngr.conf \
&& gpg --recv-key 0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c \
&& gpg --export 0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c > /usr/share/keyrings/ppa_ondrej_php.gpg \
&& echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
&& apt-get update \
&& apt-get install -y php7.4-cli php7.4-dev \
php7.4-pgsql php7.4-sqlite3 php7.4-gd \
php7.4-curl php7.4-memcached \
php7.4-imap php7.4-mysql php7.4-mbstring \
php7.4-xml php7.4-zip php7.4-bcmath php7.4-soap \
php7.4-intl php7.4-readline php7.4-pcov \
php7.4-msgpack php7.4-igbinary php7.4-ldap \
php7.4-redis php7.4-xdebug \
&& php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
&& curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \
&& apt-get install -y nodejs \
&& npm install -g npm \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarnkey.gpg >/dev/null \
&& echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \
&& echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt focal-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
&& apt-get update \
&& apt-get install -y yarn \
&& apt-get install -y mysql-client \
&& apt-get install -y postgresql-client-$POSTGRES_VERSION \
&& apt-get update \
&& apt-get install -y cron \
&& apt-get -y autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN setcap "cap_net_bind_service=+ep" /usr/bin/php7.4
RUN groupadd --force -g $WWWGROUP sail
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail
COPY start-container /usr/local/bin/start-container
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY php.ini /etc/php/7.4/cli/conf.d/99-sail.ini
RUN chmod +x /usr/local/bin/start-container
COPY scheduler /etc/cron.d/scheduler
RUN chmod 0644 /etc/cron.d/scheduler
RUN crontab /etc/cron.d/scheduler
EXPOSE 8000
ENTRYPOINT ["start-container"]

View File

@ -1,4 +0,0 @@
[PHP]
post_max_size = 100M
upload_max_filesize = 100M
variables_order = EGPCS

View File

@ -1 +0,0 @@
* * * * * root cd /var/www/html && php artisan schedule:run >> /dev/null 2>&1

View File

@ -1,17 +0,0 @@
#!/usr/bin/env bash
if [ ! -z "$WWWUSER" ]; then
usermod -u $WWWUSER sail
fi
if [ ! -d /.composer ]; then
mkdir /.composer
fi
chmod -R ugo+rw /.composer
if [ $# -gt 0 ]; then
exec gosu $WWWUSER "$@"
else
exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
fi

View File

@ -1,17 +0,0 @@
[supervisord]
nodaemon=true
user=root
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid
[program:php]
command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80
user=sail
environment=LARAVEL_SAIL="1"
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[include]
files=/var/www/html/supervisord/*.conf

7
docker/mysql/Dockerfile Normal file
View File

@ -0,0 +1,7 @@
FROM mysql/mysql-server:8.0
ENV TZ=UTC
RUN mkdir /var/log/mysql \
&& chown mysql:mysql $_ \
&& chmod 777 $_

37
docker/mysql/my.cnf Normal file
View File

@ -0,0 +1,37 @@
[mysqld]
# default
skip-host-cache
skip-name-resolve
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
secure-file-priv = /var/lib/mysql-files
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
# character set / collation
character_set_server = utf8mb4
collation_server = utf8mb4_0900_ai_ci
# timezone
default-time-zone = SYSTEM
log_timestamps = SYSTEM
# Error Log
log-error = /var/log/mysql/mysql-error.log
# Slow Query Log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1.0
log_queries_not_using_indexes = 0
# General Log
general_log = 1
general_log_file = /var/log/mysql/mysql-general.log
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4

9
docker/nginx/Dockerfile Normal file
View File

@ -0,0 +1,9 @@
FROM nginx:1.25
WORKDIR /workspace
ENV TZ=UTC
COPY ./docker/nginx/*.conf /etc/nginx/conf.d/

35
docker/nginx/default.conf Normal file
View File

@ -0,0 +1,35 @@
access_log /dev/stdout main;
error_log /dev/stderr warn;
server {
listen 80;
listen [::]:80;
root /workspace/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}

69
docker/php/Dockerfile Normal file
View File

@ -0,0 +1,69 @@
FROM php:8.2-fpm-bullseye AS base
WORKDIR /workspace
# timezone environment
ENV TZ=UTC \
# locale
LANG=en_US.UTF-8 \
LANGUAGE=en_US:en \
LC_ALL=en_US.UTF-8 \
# composer environment
COMPOSER_ALLOW_SUPERUSER=1 \
COMPOSER_HOME=/composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN apt-get update \
&& apt-get -y install --no-install-recommends \
locales \
git \
unzip \
libzip-dev \
libicu-dev \
libonig-dev \
libpq-dev \
libcurl4-gnutls-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& locale-gen en_US.UTF-8 \
&& localedef -f UTF-8 -i en_US en_US.UTF-8 \
&& docker-php-ext-install \
intl \
pdo_mysql \
zip \
bcmath \
&& composer config -g process-timeout 3600 \
&& composer config -g repos.packagist composer https://packagist.org
RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/
RUN docker-php-ext-install gd
COPY . .
RUN ["chmod", "+x", "./docker/php/entrypoint.sh"]
#CMD ["docker/php/entrypoint.sh"]
FROM base AS development
COPY ./docker/php/php.development.ini /usr/local/etc/php/php.ini
FROM development AS development-xdebug
RUN pecl install xdebug && \
docker-php-ext-enable xdebug
COPY ./docker/php/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
FROM base AS deploy
COPY ./docker/php/php.deploy.ini /usr/local/etc/php/php.ini
COPY ./ /workspace
RUN composer install -q -n --no-ansi --no-dev --no-scripts --no-progress --prefer-dist \
&& chmod -R 777 storage bootstrap/cache \
&& php artisan optimize:clear \
&& php artisan optimize

29
docker/php/entrypoint.sh Executable file
View File

@ -0,0 +1,29 @@
#!/bin/bash
if [ ! -f "vendor/autoload.php" ]; then
composer install --no-progress --no-interaction
else
echo "composer. nothing to do."
fi
if [ ! -f ".env" ]; then
echo "Creating env file for env from env-sail"
cp .env-sail .env
else
echo "env file exists. nothing to do."
fi
while IFS= read -r line || [[ -n "$line" ]]; do
if [[ "$line" == "INSTALLED="* ]]; then
installed="${line#*=}"
installed=$(echo "$installed" | tr -d '[:space:]' | tr -d '[:punct:]') # Boşlukları ve özel karakterleri sil
break
fi
done < .env
if [ "$installed" = "false" ]; then
echo ".env installed is false starting installing"
php artisan install --ready
fi
php-fpm -R

11
docker/php/opcache.ini Normal file
View File

@ -0,0 +1,11 @@
[opcache]
opcache.enable=1
; 0 means it will check on every request
; 0 is irrelevant if opcache.validate_timestamps=0 which is desirable in production
opcache.revalidate_freq=0
opcache.validate_timestamps=1
opcache.max_accelerated_files=10000
opcache.memory_consumption=192
opcache.max_wasted_percentage=10
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1

25
docker/php/php.deploy.ini Normal file
View File

@ -0,0 +1,25 @@
zend.exception_ignore_args = off
expose_php = off
max_execution_time = 30
max_input_vars = 1000
upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M
error_reporting = E_ALL
display_errors = off
display_startup_errors = off
log_errors = on
error_log = /dev/stderr
default_charset = UTF-8
[Date]
date.timezone = ${TZ}
[mysqlnd]
mysqlnd.collect_memory_statistics = off
[Assertion]
zend.assertions = -1
[mbstring]
mbstring.language = Neutral

View File

@ -0,0 +1,25 @@
zend.exception_ignore_args = off
expose_php = on
max_execution_time = 30
max_input_vars = 1000
upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M
error_reporting = E_ALL
display_errors = on
display_startup_errors = on
log_errors = on
error_log = /dev/stderr
default_charset = UTF-8
[Date]
date.timezone = ${TZ}
[mysqlnd]
mysqlnd.collect_memory_statistics = on
[Assertion]
zend.assertions = 1
[mbstring]
mbstring.language = Neutral

7
docker/php/xdebug.ini Normal file
View File

@ -0,0 +1,7 @@
[xdebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host = host.docker.internal
xdebug.client_port = 9003
xdebug.log = /tmp/xdebug.log
xdebug.idekey = "PHPSTORM"

View File

@ -231,3 +231,28 @@ Use the `--force` flag to overwrite the files should they already exist.
```bash
php artisan addon:publish anomaly.module.store --force
```
### Migrate All Addons
```bash
php artisan migrate --all-addons --force
```
### Run Command Inside Docker
```bash
docker exec -it oc_php php artisan install --ready
```
### Composer set private repo
```bash
composer config repositories.repo-name composer https://abc.aaa.com
```
### Composer set username and password for repo
```bash
composer config http-basic.abc.aaa.com openclassify pass
```

View File

@ -0,0 +1,84 @@
## Via Composer
> Do not create an `.env` file just yet - Installer will generate one for you.{.important}
```bash
composer create-project openclassify/openclassify
```
### Host Configuration
When you setup your web host be sure to point the web root to `public` directory. Just as you would a normal Laravel installation.
#### Alternate Directories for cPanel or Virtualmin
In some environments like cPanel or Virtualmin it may be difficult to use the `public` directory as the web root. In these cases we suggest symlinking the `public` directory to `public_html`:
```bash
ln -s public public_html
```
You may also simply rename the `public` directory to `public_html`. Path hints will automatically use the correct path.
### Directory Permissions
After installing, you may need to configure some permissions in order to proceed.
Directories within the `storage`, `public/app`, and the `bootstrap/cache` directories should be writable by your web server.
If you are using the [Homestead](http://laravel.com/docs/homestead) virtual machine, these permissions should already be set.
## Installation
### Running the Installation Wizard
After downloading and it's dependencies with:
```bash
composer install
```
you will need to install the software in order to get started.
By this time you should be able to visit your site's URL which will
redirect you to the installer: `http://yoursite.com/installer`
### Using the CLI Installer
```bash
php artisan install
```
You will be prompted for details in order to proceed with the installation process.
> You may need to run `ulimit -n 1024` before installing via CLI to temporarily increase your max open files limit.
#### Automating the CLI Installer
You can automate the installer by creating your own .env file with something like this:
```bash
APP_ENV=local
APP_DEBUG=true
APP_KEY=zfesbnTkXvooWVcsKMw2r4SmPVNGbFoS
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=workbench
DB_USERNAME=root
DB_PASSWORD=root
APPLICATION_NAME=Default
APPLICATION_REFERENCE=default
APPLICATION_DOMAIN=localhost
ADMIN_EMAIL=info@openclassify.com
ADMIN_USERNAME=admin
ADMIN_PASSWORD=password
LOCALE=en
TIMEZONE=Turkey/Istanbul
```
> The APP_KEY must be exactly 32 characters in length.
Then run the installer and indicate that the system is ready to install:
```bash
php artisan install --ready
```

42
install.sh Normal file
View File

@ -0,0 +1,42 @@
#!/bin/bash
echo "================================================"
echo "----------------- Openclassify -----------------"
echo "----- Automated install script with Docker -----"
echo "================================================"
if [[ $(which docker) && $(docker --version) ]]; then
docker --version
#if ubuntu install docker
if [ -n "$(uname -a | grep Ubuntu)" ]; then
if ! docker info > /dev/null 2>&1; then
systemctl --user start docker-desktop
echo "Docker is not running. I've started for you. Run it again"
exit
fi
fi
else
#if ubuntu install docker
if [ -n "$(uname -a | grep Ubuntu)" ]; then
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
else
echo "Install docker and come back later"
exit
fi
fi
cp .env-sail .env
docker compose up

View File

@ -1,7 +0,0 @@
location / {
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /index.php$1 last;
}

13
uninstall.sh Normal file
View File

@ -0,0 +1,13 @@
#!/bin/bash
echo "|| ## Openclassify ## || "
echo "|| Removing Bye bye || "
docker compose down -v
# TODO @fatihalp
# reinstall
docker compose build --no-cache
docker compose up --force-recreate