How to deploy plone for production?

I have many doubts like:
I know how to install plone on a local machine but:
If you want to use Plone as a CMS. What is the best way to deploy it? Anyone who has deployed any plone site, if they can share their experience it will be really helpful. I want to understand what was the way they choose to deploy (docker or by packages), which platform they choose, and how much it is costing them. What are the problems that they were able to tackle with the help of plone?

1 Like

Hello Ashish!

I've been deploying Plone 6 sites for a while now, and I strongly suggest using Docker images.

Please take a look at the Deployment training, and let me know if you need any additional help

Cheers,
ea

1 Like

Hey @ericof thanks for the reply and also for your amazing video of plone deployment ... Was following your youtube video for the deployment and got some errors...Could you please help me to let me know why I am encountering the following error when I am using make build command in the backend folder as per the video?

I am using python 3.9.6 and node 16.13.0

Downloading plone.staticresources-2.0.0a2-py2.py3-none-any.whl (27.1 MB)
     ━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━━━━━━━━━━ 12.0/27.1 MB 588.8 kB/s eta 0:00:26
ERROR: Exception:
Traceback (most recent call last):
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 438, in _error_catcher
    yield
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 561, in read
    data = self._fp_read(amt) if not fp_closed else b""
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 527, in _fp_read
    return self._fp.read(amt) if amt is not None else self._fp.read()
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_vendor/cachecontrol/filewrapper.py", line 90, in read
    data = self.__fp.read(amt)
  File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/http/client.py", line 459, in read
    n = self.readinto(b)
  File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/http/client.py", line 503, in readinto
    n = self.fp.readinto(b)
  File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/socket.py", line 704, in readinto
    return self._sock.recv_into(b)
  File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/ssl.py", line 1241, in recv_into
    return self.read(nbytes, buffer)
  File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/ssl.py", line 1099, in read
    return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 160, in exc_logging_wrapper
    status = run_func(*args)
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 247, in wrapper
    return func(self, options, args)
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/commands/install.py", line 415, in run
    requirement_set = resolver.resolve(
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py", line 185, in resolve
    discovered_reqs.extend(self._resolve_one(requirement_set, req))
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py", line 509, in _resolve_one
    dist = self._get_dist_for(req_to_install)
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py", line 462, in _get_dist_for
    dist = self.preparer.prepare_linked_requirement(req)
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 491, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 536, in _prepare_linked_requirement
    local_file = unpack_url(
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 166, in unpack_url
    file = get_http_url(
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 107, in get_http_url
    from_path, content_type = download(link, temp_dir.path)
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/network/download.py", line 147, in __call__
    for chunk in chunks:
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/cli/progress_bars.py", line 53, in _rich_progress_bar
    for chunk in iterable:
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_internal/network/utils.py", line 63, in response_chunks
    for chunk in response.raw.stream(
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 622, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 587, in read
    raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
  File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/contextlib.py", line 135, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/flekenstine/Desktop/work/python/plone/deploy/training-deploy-project/backend/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 443, in _error_catcher
    raise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
make: *** [bin/mkwsgiinstance] Error 2

It seems you had a network connection error when running the installation. Could you, please, try it again?