Как я могу создать сайт разработки laravel 5 с помощью DDEV?

Как я могу создать сайт разработки laravel 5 с помощью DDEV? (см. https://github.com/drud/ddev/issues/898#issuecomment-463203604)


person freefall322    schedule 18.09.2019    source источник
comment
Чтобы внести большой вклад в Stack Overflow, вы должны задать полный вопрос (и, возможно, ответить на него самостоятельно). Но людям нужна не просто ссылка на что-то еще, им нужен надежный вопрос и отличный ответ. Я знаю, что вы здесь впервые, но продолжайте и обновите этот вопрос, чтобы он был таким, каким вы хотите его видеть, и если вы знаете хороший ответ, добавьте ответ самостоятельно.   -  person rfay    schedule 18.09.2019


Ответы (2)


Я создал сайт разработки Laravel 5 на Win10, используя DDEV и Docker Desktop с контейнерами Linux. Обратите внимание, что не было необходимости устанавливать композитор на Win10, так как вместо этого использовался композитор, установленный DDEV в веб-контейнере.
Вот шаги:

  • Создал папку d:\laravel5

  • Открыл окно PowerShell от имени администратора и переключился на эту папку

  • Запустил ddev config и выбрал тип проекта "php" по умолчанию:

PS D:\laravel5> ddev config
Creating a new ddev project config in the current directory (D:\laravel5)
Once completed, your configuration will be written to D:\laravel5\.ddev\config.yaml

Project name (laravel5):

The docroot is the directory from which your site is served.
This is a relative path from your project root at D:\laravel5
You may leave this value blank if your site files are in the project root
Docroot Location (current directory):
Found a php codebase at D:\laravel5.
Project Type [drupal6, drupal7, drupal8, wordpress, typo3, backdrop, php] (php):
Project type has no settings paths configured, so not creating settings file.
Configuration complete. You may now run 'ddev start'.
Instrumentation is opted in, but SentryDSN is not available.
Instrumentation is opted in, but SegmentKey is not available.
PS D:\laravel5>

DDEV создал папку d:\laravel5\.ddev, которая будет изменена путем добавления 4 файлов перед запуском команды ddev start.

Обратите внимание, что для проекта DDEV типа "php" все предварительные требования Laravel 5 PHP выполнены
PHP >= 7.2.0
BCMath PHP Extension
Ctype PHP Extension
JSON PHP Extension
Mbstring Расширение PHP
Расширение OpenSSL PHP
Расширение PDO PHP
Расширение Tokenizer PHP
XML Расширение PHP

  • Создал файл .ddev\config.laravel5.yaml с содержимым
docroot: blog/public
  • Создал файл .ddev\docker-compose.laravel5.yaml с содержимым
version: '3.6'

services:
  web:
    environment:
      - DB_HOST=db
      - DB_PORT=3306
      - DB_DATABASE=db
      - DB_USERNAME=db
      - DB_PASSWORD=db
  • Создал файл .ddev\nginx-site.conf с содержимым
# ddev default config

# You can override ddev's configuration by placing an edited copy
# of this config (or one of the other ones) in .ddev/nginx-site.conf
# See https://ddev.readthedocs.io/en/stable/users/extend/customization-extendibility/#providing-custom-nginx-configuration

## Set https to 'on' if x-forwarded-proto is https
#map $http_x_forwarded_proto $fcgi_https {
#    default off;
#    https on;
#}

server {

    listen 80;
    server_name laravel5.ddev.site;
    # The WEBSERVER_DOCROOT variable is substituted with
    # its value when the container is started.
    root $WEBSERVER_DOCROOT;

    include /etc/nginx/monitoring.conf;
    include /mnt/ddev_config/nginx/*.conf;

}
  • Создал файл .ddev\nginx\laravel5.conf с содержимым:
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    ## Disable sendfile as per https://docs.vagrantup.com/v2/synced-folders/virtualbox.html
    #sendfile off;
    error_log /dev/stdout info;
    access_log /var/log/nginx/access.log;

    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 unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
  • Побежал ddev start:
PS D:\laravel5> ddev start
Starting laravel5...
Using custom nginx configuration in nginx-site.conf
Using custom nginx partial configuration: [D:\laravel5\.ddev\nginx\laravel5.conf]
Custom configuration takes effect when container is created,
usually on start, use 'ddev restart' if you're not seeing it take effect.
Creating volume "laravel5-mariadb" with default driver
Building db
Building web
Creating ddev-laravel5-db ... done                                                                                                     Creating ddev-laravel5-dba ... done                                                                                                    Creating ddev-laravel5-web ... done                                                                                                    
ddev-router is up-to-date
Successfully started laravel5
Project can be reached at https://laravel5.ddev.site https://127.0.0.1:32789
Instrumentation is opted in, but SentryDSN is not available.
Instrumentation is opted in, but SegmentKey is not available.
PS D:\laravel5>
  • Запустил ddev ssh и выполнил следующие команды оболочки в веб-контейнере
cd /var/www/html
composer create-project --prefer-dist laravel/laravel blog "5.8.*"

Результат был следующим:

freefall322@laravel5-web:/var/www/html$ cd /var/www/html
freefall322@laravel5-web:/var/www/html$ composer create-project --prefer-dist laravel/laravel blog "5.8.*"
Installing laravel/laravel (v5.8.35)
  - Installing laravel/laravel (v5.8.35): Loading from cache
Created project in blog
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 80 installs, 0 updates, 0 removals
  - Installing symfony/polyfill-ctype (v1.12.0): Loading from cache
  - Installing phpoption/phpoption (1.5.0): Loading from cache
  - Installing vlucas/phpdotenv (v3.6.0): Loading from cache
  - Installing symfony/css-selector (v4.3.4): Loading from cache
  - Installing tijsverkoyen/css-to-inline-styles (2.2.1): Loading from cache
  - Installing symfony/polyfill-php72 (v1.12.0): Loading from cache
  - Installing symfony/polyfill-mbstring (v1.12.0): Loading from cache
  - Installing symfony/var-dumper (v4.3.4): Loading from cache
...
(skipping many lines of output)
...
phpunit/phpunit suggests installing phpunit/php-invoker (^2.0)
phpunit/phpunit suggests installing ext-xdebug (*)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
> @php artisan key:generate --ansi
Application key set successfully.
freefall322@laravel5-web:/var/www/html$  
Route::get('/foo', function () {
    //
    try {
        DB::connection()->getPdo();
        if(DB::connection()->getDatabaseName()){
            echo "Yes! Successfully connected to the DB: " . DB::connection()->getDatabaseName();
        }else{
            die("Could not find the database. Please check your configuration.");
        }
    } catch (\Exception $e) {
        die("Could not open connection to database server.  Please check your configuration.");
    }
});

Примечание: чтобы установить последнюю версию Laravel вместо

composer create-project --prefer-dist laravel/laravel blog "5.8.*"

удалите спецификатор версии и просто используйте

composer create-project --prefer-dist laravel/laravel blog

Я попробовал это сегодня, и он установил Laravel 6.0.

person freefall322    schedule 18.09.2019

Вы можете создать сайт разработки Laravel 5, используя ddev, как показано ниже:

mkdir projectName
cd projectName
ddev config --project-type=laravel --docroot=public --create-docroot
ddev start
ddev composer create --prefer-dist laravel/laravel:5.8.*
ddev exec "cat .env.example | sed  -E 's/DB_(HOST|DATABASE|USERNAME|PASSWORD)=(.*)/DB_\1=db/g' > .env"
ddev exec "php artisan key:generate"
ddev launch

См. документацию быстрый старт ddev Laravel.

person B.K    schedule 11.07.2021