---
title: Créer un projet en local
source: https://synapx.fr/blog/creer-un-projet-en-local/
date: 2026-06-26
category: Serveur Web
site: SynapxLab
---

# Créer un projet en local

## VirtualHost Apache + PHP-FPM

Cette configuration met en place un environnement local simple avec Apache et PHP-FPM, en isolant proprement le projet dans son propre VirtualHost.

```bash
cd /etc/apache2/sites-available
nano projet.conf
```

```apache
<VirtualHost *:80>
    ServerAdmin mon@email.fr
    ServerName projet.serveurdev.eu
    DocumentRoot /var/www/vhosts/projet/httpdocs
    <Directory /var/www/vhosts/projet>
        Options -Indexes +FollowSymLinks +ExecCGI
        AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
    </FilesMatch>
</VirtualHost>
```

Créer ensuite l'arborescence du projet :

```bash
cd /var/www/vhosts/
mkdir -p projet/httpdocs/assets/{js,img,css}

echo "<?php phpinfo(); ?>" > projet/httpdocs/index.php
systemctl reload apache2
chown -R $USER:$USER projet/
chmod -R u+rwX,go+rX projet/
```

Mettre ensuite à jour le fichier `hosts` (sous Windows : `C:\Windows\System32\drivers\etc\`) :

```
192.168.100.200    projet.serveurdev.eu
```

## Composer

```bash
cd projet
composer init
```

```
Generating autoload files
Generated autoload files
PSR-4 autoloading configured. Use "namespace Root\Projet;" in src/
Include the Composer autoloader with: require 'vendor/autoload.php';
```

Packagist recense les paquets disponibles : https://packagist.org/

`composer.json` :

```json
{
    "name": "root/projet",
    "autoload": {
        "psr-4": {
            "Root\\Projet\\": "src/"
        }
    },
    "authors": [
        {
            "name": "Mon nom",
            "email": "Mon@email.fr"
        }
    ],
    "require": {}
}
```

Exemples de dépendances utiles :

```bash
composer require altorouter/altorouter
composer require symfony/yaml
composer require symfony/http-foundation
composer require twig/twig
composer require twig/intl-extra
composer require twig/extra-bundle
composer require dompdf/dompdf
composer require agenciasys/ofxparser
composer require phpmailer/phpmailer
composer require phpoffice/phpspreadsheet
composer require setasign/fpdf
composer require setasign/fpdi
composer require setasign/tfpdf
composer require eluceo/ical
```

Le registre npm est disponible ici : https://www.npmjs.com/

## Webpack et JS

```bash
npm install --save-dev webpack-cli

npm init -y
npm i --save-dev webpack webpack-cli webpack-dev-server html-webpack-plugin
npm i --save bootstrap @popperjs/core
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
mkdir {src,src/js,src/scss}

touch src/index.html src/js/script.js src/scss/styles.scss webpack.config.js
```

`package.json` :

```json
{
  "name": "monsite.fr",
  "version": "1.1.0",
  "description": "mon suppppper projet",
  "license": "ISC",
  "main": "webpack.config.js",
  "author": "",
  "dependencies": {
  },
  "devDependencies": {
    "webpack-cli": "^5.1.4"
  },
  "scripts": {
    "watch": "webpack --watch --mode development",
    "build": "webpack --mode production"
  }
}
```

`webpack.config.js` :

```js
'use strict'
const path = require('path');
module.exports = {
   mode: 'production',
    entry: {
      script : './src/js/script.js',
    },
  output: {
    path: path.resolve(__dirname,'httpdocs','assets','js'),
    filename: '[name].min.js',
    clean: true,
    publicPath: '/'
  },
  optimization: {
    minimize: true // Active la minification
    },
};
```

`projet/src/js/script.js` :

```js
'use strict'
console.log('Bonjour');
```

```bash
npm run watch
npm run build
```

`projet/httpdocs/index.php` :

```html
<!doctype html>
<html lang="fr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>mon suppppper projet</title>
  </head>
  <body>
    <div class="container">
      <h1>Hello, mon suppppper projet</h1>
    </div>

    <script src="/assets/js/script.min.js"></script>
  </body>
</html>
```

## Sass

```bash
npm install -g sass

sass --watch --style=compressed src/scss/styles.scss httpdocs/assets/css/style.min.css
```
