# Provision with a non-WordPress site

**URL:** https://discourse.roots.io/t/provision-with-a-non-wordpress-site/18305
**Category:** trellis
**Created:** 2020-05-21T12:07:48Z
**Posts:** 10

## Post 1 by @JordanC26 — 2020-05-21T12:07:48Z

I’ve inherited a server with 6 sites on, only two of them are WordPress based, the others are simple one page HTML builds.

I’ve setup Trellis and Bedrock for the two WP sites. I’m now trying to find out what I need to add/change to provision the other site directories, which will not contain a WordPress site.

**WordPress Sites config:**

```
wordpress_sites:
  mywpsite.co.uk:
    site_hosts:
      - canonical: mywpsite.test
        redirects:
          - www.mywpsite.test
    local_path: ../mywpsite # path targeting local Bedrock site directory (relative to Ansible root)
    admin_email: admin@example.test
    multisite:
      enabled: false
    ssl:
      enabled: true
      provider: self-signed
    cache:
      enabled: false
```

`local_path: ../mywpsite` has the bedrock setup as normal.

HTML sites  
I suspect I still need to add an entry here for the non-wp site still, therefore I would have:

```
wordpress_sites:
  mywpsite.co.uk:
    site_hosts:
      - canonical: mywpsite.test
        redirects:
          - www.mywpsite.test
    local_path: ../mywpsite # path targeting local Bedrock site directory (relative to Ansible root)
    admin_email: admin@example.test
    multisite:
      enabled: false
    ssl:
      enabled: true
      provider: self-signed
    cache:
      enabled: false
  myhtmlsite.co.uk:
    site_hosts:
      - canonical: myhtmlsite.test
        redirects:
          - www.myhtmlsite.test
    local_path: ../myhtmlsite # path targeting local Bedrock site directory (relative to Ansible root)
    admin_email: admin@example.test
    multisite:
      enabled: false
    ssl:
      enabled: true
      provider: self-signed
    cache:
      enabled: false
```

Inside the `../myhtmlsite` directory, I suspect I should keep the /web directory and then simply drop in the HTML files there. Not needing to include any of the other regular files added by composer-bedrock?

Normally, I would also be setting passwords inside: trellis/group\_vars/development/vault.yml - the HTML sites need no database or passwords.

I made the above changes, tried a vagrant provision on my local and got the following:

> Invalid WordPress sites configuration: site names in `wordpress_sites` must
> 
> have matching entry in `vault_wordpress_sites`.
> 
> Sites without a matching vault entry:
> 
> - `myhtmlsite.co.uk`
> 
> Update `group_vars/development/vault.yml` to continue.
> 
> Docs: [WordPress Sites | Trellis Docs | Roots](https://roots.io/trellis/docs/wordpress-sites/#passwordssecrets)
> 
> fatal: [default]: FAILED! =\> {“changed”: false}

If it creates a database but doesn’t use it, that is fine, just not sure if there is a way to simply ignore the database/wordpress creation steps for this scenario?

---

## Post 2 by @slowrush — 2020-05-21T12:28:01Z

I may be wrong but I think a couple of the trellis deploy steps will fail if it’s not a wordpress site - ie. if it can’t connect to the database. + it seems like it may overcomplicate things in the longterm.

You may be better off rolling your own deploy script using git, perhaps something like this - [http://nicolasgallagher.com/simple-git-deployment-strategy-for-static-sites/](http://nicolasgallagher.com/simple-git-deployment-strategy-for-static-sites/)

Or (what I’d do) is move the static sites to their own repo’s and use a serverless host like Netlify (free) [https://www.netlify.com/](https://www.netlify.com/) to manage all that stuff for you!

---

## Post 3 by @swalkinshaw — 2020-05-22T20:32:12Z

:thinking: I never thought of creating “fake” sites entries but like @slowrush said I’d be _very_ surprised if it could deploy since there’s many tasks which make a lot of hardcoded assumptions that it’s a WP site.

---

## Post 4 by @JordanC26 — 2020-05-23T11:05:35Z

I think these sites will eventually be converted into WordPress sites, and based on a few other factors/restrictions. I had an idea for now:

Provision as a WordPress site like normal, then inside its /site directory, create a /static folder which contains the static site. Then, what I ideally want to do is the following:

**/trellis/nginx-includes/mynewsite.co.uk/root.conf.j2**

```
# {{ ansible_managed }}

server {
  root /srv/www/mynewsite.co.uk/current/web/static;
}
```

Tell NGINX to direct **all** traffic for this domain to the `/static` directory inside `/web`.

I’ve attempted this but it failed because I am trying to use the `server` directive.

```
non-zero return code

nginx: [emerg] "server" directive is not allowed here in

/etc/nginx/includes.d/mynewsite.co.uk/root.conf:3

nginx: configuration file /etc/nginx/nginx.conf test failed

fatal: [default]: FAILED! => {"changed": true, "cmd": ["nginx", "-t"], "delta": "0:00:00.057815", "end": "2020-05-23 10:00:04.661198", "rc": 1, "start": "2020-05-23 10:00:04.603383", "stderr_lines": ["nginx: [emerg] \"server\" directive is not allowed here in /etc/nginx/includes.d/mynewsite.co.uk/root.conf:3", "nginx: configuration file /etc/nginx/nginx.conf test failed"], "stdout": "", "stdout_lines": []}
```

> [“nginx: [emerg] "server" directive is not allowed here in /etc/nginx/includes.d/mynewsite.co.uk/root.conf:3”

This all means there is a WP site sitting in the background not being used, but that’s fine with me currently. It won’t be accessible anyway if I can get the above to work.

---

## Post 6 by @JordanC26 — 2020-05-24T09:41:01Z

I’ve tried following the nginx child templates guide, still no luck:

> **[Nginx Includes | Trellis Docs](https://roots.io/trellis/docs/nginx-includes/)**
>
> Trellis allows you to implement Nginx customizations by placing files in specifically named subdirectories within a directory named includes.d.

**/trellis/nginx-includes/mysite.co.uk.conf.child**

```
{% extends 'roles/wordpress-setup/templates/wordpress-site.conf.j2' %}

{% block change_nginx_root_path %}

# Change NGINX root path
server {
  root /srv/www/mysite.co.uk/current/web/static;
}

{% endblock -%}
```

**/trellis/group\_vars/development/wordpress\_sites.yml**

> [mysite.co.uk](http://mysite.co.uk):  
> site\_hosts:  
> - canonical: mysite.test  
> redirects:  
> - www.mysite.test  
> local\_path: …/mysite # path targeting local Bedrock site directory (relative to Ansible root)  
> nginx\_wordpress\_site\_conf: nginx-includes/mysite.co.uk.conf.child

Loaded the domain: mysite.test - Still displaying the WordPress site as normal, not loading content from the /static directory instead.

**Update - SOLVED!**  
I had a formatting error which was stopping the above from running, this is why no changes were seen. When I managed to pass that, I again got the server directive not allowed. So I updated the following:

**/trellis/nginx-includes/mysite.co.uk.conf.child**

```
{% extends 'roles/wordpress-setup/templates/wordpress-site.conf.j2' %}

{% block change_nginx_root_path %}

# Change NGINX root path
root /srv/www/mysite.co.uk/current/web/static;

{% endblock -%}
```

I removed `server {` because the output of all this is already output inside of the server directive. I was doubling up.

I now see my static site directory being loaded under the domain!

---

## Post 7 by @swalkinshaw — 2020-05-24T21:41:58Z

That’s really interesting! So, to recap:

You create bedrock-based WP sites as usual but basically just to satisfy Trellis’ requirements. Then you put the entire static site contents in a `static` directory (at the root of the WP repo in - `site`). Finally you create a new Nginx include which just sets the `root` to the `static` dir and it all works as a normal WP site would :smile:

---

## Post 8 by @JordanC26 — 2020-05-24T22:23:53Z

Yep haha.

Two of the sites are WordPress builds. The rest are static builds, however, these are likely to be converted to WP eventually.

I wanted to keep just the one server and get it ready for both types of sites for now.

I’m sure there was a better way, this worked for now, and I’m going to try this again without having to install WP etc too. Will update later on that progress.

---

## Post 9 by @system — 2020-07-02T12:07:53Z

This topic was automatically closed after 42 days. New replies are no longer allowed.

---

## Post 10 by @MWDelaney — 2021-07-09T17:40:32Z

@JordanC26 I used this method for a quick-and-dirty subdomain redirect. Thanks for the tip!
