Skip to content

Commit

Permalink
docs: add "Deployment to Shared Hosting Services"
Browse files Browse the repository at this point in the history
  • Loading branch information
kenjis committed Feb 17, 2024
1 parent 872025d commit bde3c36
Showing 1 changed file with 81 additions and 0 deletions.
81 changes: 81 additions & 0 deletions user_guide_src/source/installation/running.rst
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,87 @@ Setting Environment

See :ref:`Handling Multiple Environments <environment-nginx>`.


.. _deployment-to-shared-hosting-services:

*************************************
Deployment to Shared Hosting Services
*************************************

.. important::
**index.php** is no longer in the root of the project! It has been moved inside
the **public** folder, for better security and separation of components.

This means that you should configure your web server to "point" to your project's
**public** folder, and not to the project root.

Specifying the Document Root
============================

The best way is to set the document root to the **public** folder in the server
configuration::

└── example.com/ (project folder)
└── public/ (document root)

For example, if you use cPanel, see:

- `How to change the document root of the primary domain <https://support.cpanel.net/hc/en-us/articles/360055211213-How-to-change-the-document-root-of-the-primary-domain>`_
- `How can I change the document root for an Addon Domain or Subdomain? <https://support.cpanel.net/hc/en-us/articles/360057802373-How-can-I-change-the-document-root-for-an-Addon-Domain-or-Subdomain>`_

Using Two Directories
=====================

The second way is to use two directories, and adjust the path.
One is for the application and the other is the default document root.

Upload the contents of the **public** folder to **public_html** (the default
document root) and the other files to the directory for the application::

├── example.com/ (for the application)
│ ├── app/
│ ├── vendor/ (or system/)
│ └── writable/
└── public_html/ (the default document root)
├── .htaccess
├── favicon.ico
├── index.php
└── robots.txt

See
`Install CodeIgniter 4 on Shared Hosting (cPanel) <https://forum.codeigniter.com/showthread.php?tid=76779>`_
for details.

Adding .htaccess
================

The last resort is to add **.htaccess** to the project root.

It is not recommended that you place the project folder in the document root.
However, if you have no other choice, you can use this.

Place your project folder as follows, where **public_html** is the document root,
and create the **.htaccess** file::

└── public_html/ (the default document root)
└── example.com/ (project folder)
├── .htaccess
└── public/

And edit **.htaccess** as follows:

.. code-block:: apache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
<FilesMatch "^\.">
Require all denied
Satisfy All
</FilesMatch>
*********************
Bootstrapping the App
*********************
Expand Down

0 comments on commit bde3c36

Please sign in to comment.