34

Every time I serve a Jekyll site from the command line it is served on port 4000. Two sites can't be served on the same port.

Is it possible to serve multiple Jekyll sites locally?

Brian Zelip
  • 2,909
  • 4
  • 33
  • 45

6 Answers6

40

You can also start the server with an additional argument --port 1234 or --host hostname. For example:

$ jekyll serve --port 4001 --host my_hostname_or_ip

You can view all the possible CLI flags from The official Jekyll documentation

wcyn
  • 3,826
  • 2
  • 31
  • 25
  • Hey, `--port` works not in all areas fine. The filter `{% link %}` will ignore the port. So links to pages on dev-env will be broken. Any idea to handle that? – KargWare Sep 19 '21 at 14:33
11

Yes it is possible to serve multiple Jekyll sites locally by setting different port numbers for each site using the Local Server Port serve command option.

See https://jekyllrb.com/docs/configuration/options/#serve-command-options.

Set a port number other than Jekyll's default port (4000) in the site's _config.yml file or when serving the site via the command line.

David Jacquel
  • 51,670
  • 6
  • 121
  • 147
Brian Zelip
  • 2,909
  • 4
  • 33
  • 45
  • 1
    While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. – Jim Stewart Nov 01 '16 at 03:22
  • 10
    Per the documentation, put e.g. `port: 4001` in your `_config.yml` file. – Jim Stewart Nov 01 '16 at 03:23
6

For multiple Jekyll sites, I just run this

bundle exec jekyll serve --port <your_port_number>

e.g

bundle exec jekyll serve --port 4001

Serhii Povísenko
  • 3,352
  • 1
  • 30
  • 48
3

Open terminal, go to the Jekyll site directory and start the server

jekyll serve --port 4001

Go to another directory and start the second site

jekyll serve --port 4002
AlexSh
  • 1,468
  • 15
  • 12
3

If you run it on mac docker client, provide host IP 0.0.0.0 will save your time a ton.

jekyll serve --port 4001 --host 0.0.0.0

By default, 127.0.0.1 is used for localhost and its NIC cannot receive any traffic from your mac host, whereas 0.0.0.0 means to accept traffic on all NICs

Izana
  • 2,537
  • 27
  • 33
3

Two ways:

  1. In your _config.yml file, specify a port other than 4000 like this, for example:
    port: 4001
    
  2. OR (my preferred choice), add --port 4001 to your jekyll serve command, like this, for example:
    bundle exec jekyll serve --livereload --port 4001
    

From: https://jekyllrb.com/docs/configuration/options/#serve-command-options

enter image description here

Gabriel Staples
  • 36,492
  • 15
  • 194
  • 265