Dies ist eine Laravel -Webanwendung für Crowdsourcing -Projekte und Fragebögen.
.env -Datei.envDas Angebot des Code unter Open -Source -Lizenzen umfasst viele Vorteile. Von diesen sind diejenigen, die mit unserem Projekt zusammenhängen,:
ECAS Offizielle Installation
Säulen Sie die offizielle Installation
Die Setup -Anweisungen wurden zur Klarheit in zwei Abschnitte unterteilt:
Unabhängig von der Installationsmethode müssen Sie die folgenden Befehle ausführen, um die Anwendung einzurichten.
Diese Befehle sollten außerhalb eines jeden Docker -Containers ausgeführt werden:
sudo chown -R ` whoami ` :www-data storage
chmod 775 storage
cd storage/
find . -type f -exec chmod 664 {} ;
find . -type d -exec chmod 775 {} ;Abhängig von der Installationsmethode sollten Sie den Rest der Schritte entweder im Docker -Container oder auf Ihrer lokalen Maschine ausführen.
Hinweis: Wenn Sie Docker Compose verwenden, müssen Sie zunächst den PHP -Container eingeben:
docker exec -it crowdsourcing_platform_server bashund dann den Rest der Befehle ausführen.
Wenn Sie die Befehle auf Ihrem lokalen Computer ausführen, können Sie die folgenden Befehle direkt ausführen.
Wenn Sie DDEV gestartet haben, sollten Sie alle mit ddev exec vorangestellten Befehle ausführen.
.env -DateiErstellen Sie nach dem Klonen des Projekts eine .env -Datei (sollte eine Kopie von .Env.Example sein):
cp .env.example .envBei einer Nicht-Docker-Installation müssen Sie eine Datenbank für die Anwendung erstellen.
Geben Sie im Falle einer Docker -Umgebung den crowdsourcing_platform_db -Container ein und erstellen Sie eine Datenbank mit dem Namen crowdsourcing_db_docker :
docker exec -it crowdsourcing_platform_db bashGeben Sie die MySQL -Shell ein:
mysql -u root -pFühren Sie dann den folgenden MySQL -Befehl aus:
CREATE DATABASE IF NOT EXISTS crowdsourcing_db_docker;Zuerst müssen Sie den DB -Container eingeben:
docker exec -it crowdsourcing_platform_db bashWenn Sie eine vorhandene MySQL -Dump -Datei haben, stellen Sie sicher, dass dies im aktuellen Verzeichnis liegt, und importieren Sie sie in die Datenbank:
mysql -u root -p crowdsourcing_db_docker < dump.sql Fügen Sie dann Folgendes in die .env -Datei hinzu:
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=crowdsourcing_db_docker
DB_USERNAME=root
DB_PASSWORD=rootHinweis: Wenn Sie Docker Compose verwenden, müssen Sie zunächst den Server -Container eingeben:
docker exec -it crowdsourcing_platform_server bashphp artisan migratephp artisan db:seedGeben Sie den PHP -Container ein (bei Verwendung von Docker Compose):
docker exec -it crowdsourcing_platform_server bashFühren Sie dann die folgenden Befehle aus:
composer install
composer dump-autoloadphp artisan key:generatenpm install
npm run dev # (if in development mode, use for live changes)
npm run build # (if in development mode)
npm run prod # (if in production mode)Standardmäßig werden Bilder bei App/Storage/Public gespeichert. Laufen
php artisan storage:link.env Und dann die .env -Einstellungen auf Laravel Cache bestehen:
php artisan config:cacheUm diesen Ordner mit dem öffentlichen Verzeichnis zu verknüpfen
Diese App verwendet das Socialite Laravel -Plugin, um soziale Anmeldungen zu bearbeiten.
Um es in Ihrer Entwicklungsumgebung zum Laufen zu bringen, müssen Sie sicherstellen, dass Sie API -Schlüssel und Geheimnisse für Facebook und Twitter (Guides hier und hier) haben und auf https: //dev.crowdsourcing/ zugreifen können (Beachten Sie die HTTPS) auf Ihrer Maschine.
Eine Anleitung zum Aktivieren von HTTPS auf Ihrer lokalen Maschine finden Sie hier.
Grundsätzlich müssen Sie rennen
openssl req -new -sha256 -newkey rsa:2048 -nodes
-keyout dev.crowdsourcing.key -x509 -days 365
-out dev.crowdsourcing.crtVerweisen Sie auf die 2 generierten Dateien in der Nginx -Konfigurationsdatei der Anwendung. Stellen Sie sicher, dass Sie den Port wie unten gezeigt auf 443 ändern:
server {
listen 443 ssl;
server_name dev.crowdsourcing;
ssl_certificate /path/to/dev.crowdsourcing.crt;
ssl_certificate_key /path/to/dev.crowdsourcing.key;
root /var/www/crowdsourcing/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 index.html index.htm index.nginx-debian.html;
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$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
}
location ~ /.ht {
deny all ;
}
}Stellen Sie außerdem sicher, dass Sie Nginx neu starten, indem Sie ausführen
sudo systemctl restart nginx Diese Anwendung verwendet Spatie - Laravel Sitemap -Plugin, um die Datei public/sitemap.xml (die von der GIT ausgeschlossen ist) zu erstellen, die von den Suchmaschinen gekrabbt wird. Um den Generator für die aktuelle Anwendungsinstallation auszuführen, führen Sie den eingebetteten Laravel -Befehl aus:
php artisan sitemap:generateDiese Anwendung verwendet Laravel Pint, um den Code-Stil durchzuführen.
Um den Styler auszuführen, rennen Sie:
./vendor/bin/pint --test -v # the --test will not do any changes, it will just output the changes needed
./vendor/bin/pint -v # this command will actually perform the code style changes Diese Anwendung verwendet Eslint und schöner, um den Code-Stil durchzuführen.
Um den Styler & Formatter auszuführen, rennen Sie:
npm run lint # this command will check the code style
npm run format # this command will format the code style Dieses Projekt verwendet die kostenlose Adminlte -Vorlage.
Es verwendet auch Bootstrap 4
Die Anwendung kann für jede Installation optimiert und personalisiert werden. In der .env -Datei können Sie die Variable INSTALLATION_RESOURCES_DIR entsprechend festlegen. Diese Variable muss einen Wert annehmen, der einen Verzeichnisnamen im Verzeichnis resourcess/views/home/partials darstellt. Sehen Sie sich beispielsweise das Verzeichnis der resourcess/views/home/partials/together . Dieses Verzeichnis muss die Teilblattdateien für die Installation enthalten.
Dieser Teil der Dokumentation beschreibt die Verzeichnisstruktur der Laravel -Anwendung.
Es wird hauptsächlich in die benutzerdefinierten Verzeichnisse und Dateien gescopt, die in der Anwendung verwendet werden. Für die General Laravel Directory -Struktur finden Sie in der offiziellen Dokumentation.
├── app # Laravel application directory
│ ├── BusinessLogicLayer # Business Logic Layer classes (services that contain the business logic and delegate from Controllers towards the Data Access Layer)
│ ├── Http/Controllers # Controllers directory (classes that handle the HTTP requests, perform the necessary validations/operations and return the responses)
│ ├── Http/Middleware # Middleware directory (classes that handle the HTTP requests before they reach the Controllers)
│ ├── Models # Models directory (ORM classes that represent the database tables and contain the relationships between them)
│ ├── Notifications # Notifications directory (classes that handle the notifications, like emails)
│ ├── ViewModels # View Models directory (classes that contain the data that will be passed to the views)
│ ├── Repository # Repository directory (classes that handle the database operations and contain the DB/ORM queries)
│ resources # Resources directory (contains the views, assets, front-end files, and other resources)
│ ├── views # Views directory (contains the blade files that are used to render the HTML)
│ ├── assets # Assets directory (contains the front-end assets like CSS, JS, images, etc.)
│ ├── js # JavaScript files (contains the Vue.js components and other JS files)
│ ├── sass # SASS files (contains the SASS files that are compiled to CSS)
│ ├── lang # Language files (contains the language files for the translations)
Die Anwendung verwendet das Repository -Muster, um die Geschäftslogik von der Datenzugriffslogik zu trennen.
Alle Datenbankvorgänge werden von den Repository -Klassen behandelt, die die DB/ORM -Abfragen enthalten.
Diese Klassen befinden sich im app/Repository -Verzeichnis und erweitern alle die app/Repository/Repository -Klasse.
Jede untergeordnete Klasse repräsentiert eine Datenbanktabelle/Entität und enthält die Abfragen für diese Tabelle. Diese Entität ist im app/Models -Verzeichnis definiert und wird von der untergeordneten Repository -Klasse in der getModelClassName -Methode verwiesen.
Wir können create die Basismethoden verwenden, die in der Repository -Klasse definiert getAll update z getById Wir können auch benutzerdefinierte Abfragen in den untergeordneten Klassen definieren oder die Grundmethoden bei Bedarf außer Kraft setzen.
Die Repository -Klassen werden von den Business Logic Layer -Klassen verwendet, die die Geschäftslogik und den Delegieren der Controller in Richtung der Datenzugriffsschicht enthalten.
Weitere Informationen zum Repository -Muster finden Sie hier.
Stellen Sie sicher, dass Sie Cache- und Konfigurationsdateien gelöscht haben:
php artisan cache:clear
php artisan config:clearErstellen Sie die Testdatenbankdatei:
touch storage/database_testing.sqliteGeben Sie der Testdatenbankdatei die erforderlichen Berechtigungen an:
chmod 777 storage/database_testing.sqliteStellen Sie dann sicher, dass Sie die Testdatenbank eingerichtet haben:
Führen Sie die Migrationen und Säter für die Testdatenbank aus:
php artisan migrate:fresh --seed --env=testing --database=sqlite_testingphp artisan test Command Sie können die Tests mit dem php artisan test Command ausführen, der ein integrierter Laravel-Befehl ist.
Und schließlich führen Sie die Tests aus:
# Note that you filter the tests by using the --filter flag (without the = sign)
php artisan test --env=testing --filter {METHOD OR CLASS NAME} --coveragerun-tests.sh aus Sie können die Tests auch mit dem run-tests.sh -Skript ausführen, bei dem es sich um einen Wrapper um den Befehl phpunit handelt.
chmod +x run-tests.sh
./run-tests.sh Dies kann auch alle Argumente (wie die Flagge --filter oder --coverage ) annehmen, die Sie an den Befehl phpunit übergeben würden.
./run-tests.sh --filter {METHOD OR CLASS NAME}oder
./run-tests.sh --coverageDurch die Verwendung von Docker Compose können Sie die Anwendung debuggen, indem Sie folgende Schritte befolgen:
docker compose up um die Container zu starten..vscode/launch.json -Datei mit folgenden Inhalten haben: {
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
"port" : 9003 ,
"pathMappings" : {
"/var/www" : " ${workspaceFolder} "
},
"log" : true
}
]
}Jetzt können Sie damit beginnen, Ihre Anwendung zu debuggen.
Zum Debuggen der Tests:
docker exec -it crowdsourcing_platform_server bash um den PHP -Container einzugeben.php artisan app:test --filter {METHOD OR CLASS NAME} . Zum Beispiel php artisan app:test --filter authenticatedNonAdminUserCannotAccessCreatePage . Wenn Sie auf Probleme stoßen, lesen Sie die folgenden Schritte:
docker compose logs verwendet werdensystemctl status nginx und systemctl status php-fpmstorage/logs/laravel.log.envsystemctl status mysqlnginx -t Befolgen Sie die folgenden Schritte, um zur Anwendung beizutragen:
git checkout -b <branch_name> .git commit -m '<commit_message>'git push origin <project_name>/<location>Dieses Projekt ist Open-Source-Software, die unter der Apache-Lizenz, Version 2.0, lizenziert ist.
Dieses Projekt wird von Scify und ECAS entwickelt und basiert auf dem Laravel -Framework. Das Projekt wird durch SCIFIF geführt.
Einige der in der Anwendung verwendeten Bilder stammen von Freepik.
Wenden Sie sich gerne an die Projektbetreuer: