334 lines
6.4 KiB
Markdown
334 lines
6.4 KiB
Markdown
|
|
# instal docker and drupal
|
|
|
|
|
|
### Clone this repos
|
|
|
|
clone a older docker of a similar project
|
|
|
|
```
|
|
git clone -o gogs gogs@figureslibres.io:bachir/docker-popsu.git
|
|
|
|
```
|
|
or download docker folder from gogs
|
|
|
|
|
|
### Change name and old project occurences
|
|
|
|
open folder in Vscodium and :
|
|
|
|
change folder name
|
|
|
|
change occurence in Readme (ctrl + D pour sélectionner tout en même temps)
|
|
|
|
dossier Docker: php mettre bonne version
|
|
|
|
Docker-compose.yml
|
|
|
|
Makefile
|
|
|
|
.env (project name donne le nom aux containers)
|
|
|
|
docker > nginx > default.conf
|
|
|
|
|
|
### xdebug
|
|
copy ```ressources/xdebug.ini.exemple``` to ```ressources/xdebug.ini```
|
|
|
|
|
|
|
|
### git
|
|
|
|
remove old folder git
|
|
|
|
```
|
|
rm -rf .git
|
|
rm .gitmodules
|
|
```
|
|
create new git repositorie
|
|
|
|
```
|
|
git init
|
|
git add .
|
|
git commit -m 'first commit'
|
|
git remote add origin https://figureslibres.io/gogs/ouidade/docker-training.git
|
|
git push -u origin master
|
|
|
|
```
|
|
|
|
### Hosts and reverse proxy
|
|
|
|
add to your /etc/hosts :
|
|
```
|
|
127.0.0.1 dev.training.fr
|
|
127.0.0.1 dev.phpmyadmin.training.fr
|
|
```
|
|
configure your vhosts to add a reverse proxy that will redirect the dev.training.fr to our container
|
|
|
|
|
|
create new file, dev.training.fr.conf, in /etc/nginx/sites-available
|
|
|
|
```
|
|
server {
|
|
listen 80;
|
|
server_name dev.training.fr;
|
|
|
|
access_log off;
|
|
error_log /var/log/nginx/training/error.log error;
|
|
|
|
client_max_body_size 100m;
|
|
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8980;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_buffer_size 128k;
|
|
proxy_buffers 4 256k;
|
|
proxy_busy_buffers_size 256k;
|
|
}
|
|
}
|
|
server {
|
|
listen 80;
|
|
server_name dev.phpmyadmin.training.fr;
|
|
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8981;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_buffer_size 128k;
|
|
proxy_buffers 4 256k;
|
|
proxy_busy_buffers_size 256k;
|
|
}
|
|
}
|
|
```
|
|
|
|
```
|
|
sudo ln -s /etc/nginx/sites-available/dev.training.fr.conf /etc/nginx/sites-enabled
|
|
```
|
|
|
|
``` sudo nginx -t ``` all should be ok
|
|
```
|
|
sudo systemctl restart nginx
|
|
```
|
|
|
|
## build docker
|
|
```
|
|
make build
|
|
make up
|
|
make ps
|
|
```
|
|
|
|
## instal drupal with composer
|
|
|
|
```
|
|
cd public_html
|
|
composer create-project drupal/recommended-project:^9.5 .
|
|
```
|
|
|
|
### clone this profile into profiles folder
|
|
```
|
|
cd profiles
|
|
git clone -o figli https://figureslibres.io/gogs/bachir/drupal-starterkit-profile.git
|
|
```
|
|
|
|
### include the profile's composer file to the main drupal's composer file
|
|
|
|
install composer-merge-plugin
|
|
```
|
|
composer require wikimedia/composer-merge-plugin
|
|
```
|
|
then in main drupal's composer.js file add this in extra
|
|
```
|
|
"extra": {
|
|
...
|
|
"merge-plugin": {
|
|
"include": [
|
|
"web/profiles/d8-starterkit-profile/composer.json"
|
|
],
|
|
"recurse": true,
|
|
"replace": false,
|
|
"merge-extra": true
|
|
}
|
|
...
|
|
}
|
|
```
|
|
|
|
### install the profile's merged dependencies with composer
|
|
|
|
```
|
|
cd ../
|
|
composer update
|
|
```
|
|
|
|
|
|
## sites/default setup
|
|
|
|
```
|
|
mkdir -p web/sites/default/files
|
|
cp web/sites/default/default.settings.php web/sites/default/settings.php
|
|
```
|
|
in docker exit container php and re-log as root in php container
|
|
```
|
|
docker exec -u 0 -it training-php-1 bash
|
|
```
|
|
then aply changes
|
|
```
|
|
chgrp -R www-data web/sites/default/files
|
|
chgrp -R www-data web/sites/default/settings.php
|
|
chmod g+r web/sites/default/files
|
|
chmod g+r web/sites/default/settings.php
|
|
```
|
|
exit container php as root ```ctrl + D```
|
|
|
|
## install database with install drupal on navigator
|
|
|
|
choose profile figli starter kit
|
|
|
|
for set up database use info in .env file (for work localserver only passwords very basic, be carefull if on line)
|
|
|
|
advanced options :
|
|
hosts : mysql
|
|
|
|
in dump databse there will be files but also modules config
|
|
|
|
|
|
## git the drupal (src folder)
|
|
|
|
```
|
|
git init
|
|
```
|
|
create a .gitignore file
|
|
|
|
```
|
|
# Ignore directories generated by Composer
|
|
/drush/contrib/
|
|
/vendor/
|
|
/web/core/
|
|
/web/modules/contrib/
|
|
/web/themes/contrib/
|
|
/web/profiles/contrib/
|
|
/web/libraries/
|
|
composer.lock
|
|
# Ignore sensitive information
|
|
/web/sites/*/settings.php
|
|
/web/sites/*/settings.local.php
|
|
/web/sites/*/services*.yml
|
|
|
|
# Ignore Drupal's file directory
|
|
/web/sites/*/files/
|
|
|
|
# Ignore SimpleTest multi-site environment.
|
|
/web/sites/simpletest
|
|
|
|
# Ignore files generated by PhpStorm
|
|
/.idea/
|
|
|
|
# Ignore .env files as they are personal
|
|
/.env
|
|
|
|
# npm
|
|
node_modules/
|
|
|
|
*.patch
|
|
/.csslintrc
|
|
/.eslintrc.json
|
|
/.ht.router.php
|
|
/.htaccess
|
|
/INSTALL.txt
|
|
/README.txt
|
|
/autoload.php
|
|
/example.gitignore
|
|
/index.php
|
|
/robots.txt
|
|
/update.php
|
|
/web.config
|
|
|
|
/web/.vscode/*
|
|
```
|
|
```
|
|
git status
|
|
git add .
|
|
|
|
```
|
|
if necessary, if already here, remove file D8-starterit-profile from the git index in order to add it as a submodule.
|
|
|
|
```git reset web/profiles/d8-starterkit-profile```
|
|
|
|
|
|
add submodule
|
|
```
|
|
git submodule add https://figureslibres.io/gogs/bachir/d8-starterkit-profile.git web/profiles/d8-starterkit-profile
|
|
```
|
|
```
|
|
git commit -m "first drupal instal working"
|
|
```
|
|
### Create new repository on gogs, for durpal
|
|
|
|
### then
|
|
```
|
|
git remote add origin https://figureslibres.io/gogs/ouidade/drupal-training.git
|
|
```
|
|
```
|
|
git push origin master
|
|
```
|
|
|
|
in docker, add in src folder the submodule drupal you just created
|
|
```
|
|
git submodule add https://figureslibres.io/gogs/ouidade/drupal-training.git src
|
|
```
|
|
then
|
|
```
|
|
git add .
|
|
git commit -m "added drupal submodule"
|
|
git push origin master
|
|
```
|
|
|
|
## check drush
|
|
```
|
|
drush st
|
|
drush cr
|
|
```
|
|
|
|
## check settings files
|
|
|
|
create file services.yml in src/web/sites/default (can copy from previous site)
|
|
|
|
|
|
in settings.php
|
|
```
|
|
if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
|
|
include $app_root . '/' . $site_path . '/settings.local.php';
|
|
}
|
|
$databases['default']['default'] = array (
|
|
....
|
|
);
|
|
$settings['config_sync_directory'] = '../config/sync';
|
|
```
|
|
|
|
so the config databse is stored in a folder config/sync not in web, and so not shared online.
|
|
|
|
|
|
create folder config/sync at the root of your site (src)
|
|
|
|
## export config
|
|
|
|
```drush cst``` to see config status
|
|
```drush cex -y``` to export all that's in database in config/sync
|
|
|
|
git config
|
|
```
|
|
git add .
|
|
git commit
|
|
git push
|
|
```
|
|
|
|
|
|
to add enable new module already in drupal core
|
|
```drush en module_name```
|
|
|
|
and then don't forget to export config ```drush cex``` and to git
|