Update README.md
This commit is contained in:
parent
a2ad39be27
commit
bb7bff4670
1 changed files with 208 additions and 1 deletions
209
README.md
209
README.md
|
@ -1,2 +1,209 @@
|
|||
# webdev
|
||||
# Docker Development Environment Setup
|
||||
|
||||
This README provides instructions for setting up and using a Docker-based development environment with Apache, multiple PHP versions, and build tools.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Prerequisites](#prerequisites)
|
||||
2. [Directory Structure](#directory-structure)
|
||||
3. [Setup Instructions](#setup-instructions)
|
||||
4. [Managing Projects](#managing-projects)
|
||||
5. [Switching PHP Versions](#switching-php-versions)
|
||||
6. [Using the Build Tools Container](#using-the-build-tools-container)
|
||||
7. [Using php-spy Profiler](#using-php-spy-profiler)
|
||||
8. [Troubleshooting](#troubleshooting)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Docker
|
||||
- Docker Compose
|
||||
- Git
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
.
|
||||
├── apache/
|
||||
│ ├── Dockerfile
|
||||
│ ├── apache2.conf
|
||||
│ ├── php-fpm.conf
|
||||
│ └── vhosts/
|
||||
├── php/
|
||||
│ ├── Dockerfile-7.4
|
||||
│ ├── Dockerfile-8.1
|
||||
│ ├── Dockerfile-8.3
|
||||
│ └── Dockerfile-8.4
|
||||
├── build_tools/
|
||||
│ └── Dockerfile
|
||||
├── projects/
|
||||
├── ssl/
|
||||
└── docker-compose.yml
|
||||
```
|
||||
|
||||
## Setup Instructions
|
||||
|
||||
1. Clone this repository:
|
||||
```
|
||||
git clone <repository-url>
|
||||
cd <repository-directory>
|
||||
```
|
||||
|
||||
2. Create the necessary directories:
|
||||
```
|
||||
mkdir -p apache/vhosts projects ssl
|
||||
```
|
||||
|
||||
3. Copy the provided Dockerfiles and configuration files into their respective directories.
|
||||
|
||||
4. Build and start the Docker environment:
|
||||
```
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
5. Ensure your local machine's hosts file points `*.test` to `127.0.0.1`.
|
||||
|
||||
## Managing Projects
|
||||
|
||||
### Adding a New Project
|
||||
|
||||
1. Create a new folder in the `./projects` directory:
|
||||
```
|
||||
mkdir -p ./projects/domainname.test/public_html ./projects/domainname.test/logs
|
||||
```
|
||||
|
||||
2. Add a new virtual host configuration in `./apache/vhosts/`:
|
||||
```apache
|
||||
<VirtualHost *:80>
|
||||
ServerName domainname.test
|
||||
DocumentRoot /var/www/domainname.test/public_html
|
||||
ErrorLog /var/www/domainname.test/logs/error.log
|
||||
CustomLog /var/www/domainname.test/logs/access.log combined
|
||||
|
||||
<FilesMatch \.php$>
|
||||
SetHandler "proxy:fcgi://php74:9074"
|
||||
</FilesMatch>
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost *:443>
|
||||
ServerName domainname.test
|
||||
DocumentRoot /var/www/domainname.test/public_html
|
||||
ErrorLog /var/www/domainname.test/logs/error.log
|
||||
CustomLog /var/www/domainname.test/logs/access.log combined
|
||||
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/ssl/private/domainname.test.crt
|
||||
SSLCertificateKeyFile /etc/ssl/private/domainname.test.key
|
||||
|
||||
<FilesMatch \.php$>
|
||||
SetHandler "proxy:fcgi://php74:9074"
|
||||
</FilesMatch>
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
3. Generate a self-signed SSL certificate:
|
||||
```
|
||||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ssl/domainname.test.key -out ./ssl/domainname.test.crt
|
||||
```
|
||||
|
||||
4. Restart the Apache container:
|
||||
```
|
||||
docker-compose restart apache
|
||||
```
|
||||
|
||||
### Enabling a Project
|
||||
|
||||
Ensure the virtual host configuration file is present in `./apache/vhosts/` and restart the Apache container:
|
||||
```
|
||||
docker-compose restart apache
|
||||
```
|
||||
|
||||
### Disabling a Project
|
||||
|
||||
1. Rename the virtual host configuration file in `./apache/vhosts/` to add a `.disabled` extension.
|
||||
2. Restart the Apache container:
|
||||
```
|
||||
docker-compose restart apache
|
||||
```
|
||||
|
||||
### Removing a Project
|
||||
|
||||
1. Remove the project folder from `./projects/`.
|
||||
2. Remove the virtual host configuration file from `./apache/vhosts/`.
|
||||
3. Remove the SSL certificate files from `./ssl/`.
|
||||
4. Restart the Apache container:
|
||||
```
|
||||
docker-compose restart apache
|
||||
```
|
||||
|
||||
## Switching PHP Versions
|
||||
|
||||
To switch PHP versions for a specific project:
|
||||
|
||||
1. Edit the virtual host configuration file in `./apache/vhosts/`:
|
||||
```apache
|
||||
<FilesMatch \.php$>
|
||||
# Choose the appropriate PHP version:
|
||||
# For PHP 7.4 (default):
|
||||
SetHandler "proxy:fcgi://php74:9074"
|
||||
# For PHP 8.1:
|
||||
# SetHandler "proxy:fcgi://php81:9081"
|
||||
# For PHP 8.3:
|
||||
# SetHandler "proxy:fcgi://php83:9083"
|
||||
# For PHP 8.4:
|
||||
# SetHandler "proxy:fcgi://php84:9084"
|
||||
</FilesMatch>
|
||||
```
|
||||
|
||||
2. Restart the Apache container:
|
||||
```
|
||||
docker-compose restart apache
|
||||
```
|
||||
|
||||
## Using the Build Tools Container
|
||||
|
||||
To access the build tools container via SSH:
|
||||
|
||||
```
|
||||
ssh root@localhost -p 2222
|
||||
```
|
||||
|
||||
The default password is 'password'. It's recommended to change this in a production environment.
|
||||
|
||||
When working with Node.js in the build tools container:
|
||||
|
||||
1. First, run: `source ~/.nvm/nvm.sh`
|
||||
2. Then you can use Node.js and npm commands as usual.
|
||||
|
||||
## Using php-spy Profiler
|
||||
|
||||
To profile a PHP script using php-spy:
|
||||
|
||||
1. Connect to the appropriate PHP container:
|
||||
```
|
||||
docker-compose exec php74 bash # or php81, php83, php84
|
||||
```
|
||||
|
||||
2. Run php-spy on a specific PHP process:
|
||||
```
|
||||
phpspy -p [PID_OF_PHP_PROCESS]
|
||||
```
|
||||
|
||||
You can find the PID of the PHP process using `ps aux | grep php-fpm`.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- If you encounter permission issues, ensure that your project directories and files have the correct ownership and permissions.
|
||||
- If a site is not accessible, check that the virtual host configuration is correct and that the Apache container has been restarted.
|
||||
- For SSL issues, verify that the SSL certificate files are correctly generated and placed in the `./ssl/` directory.
|
||||
- If PHP processing is not working, ensure that the correct PHP version is specified in the virtual host configuration and that the corresponding PHP-FPM container is running.
|
||||
|
||||
For any other issues, check the Docker logs:
|
||||
```
|
||||
docker-compose logs
|
||||
```
|
||||
|
||||
You can also check individual service logs, e.g.:
|
||||
```
|
||||
docker-compose logs apache
|
||||
docker-compose logs php74
|
||||
```
|
||||
|
|
Loading…
Reference in a new issue