… without SSH commands and FTP 🤢.
Modern CMS built on Composer and CLI commands can't be deployed easily on shared hosting environments on which only FTP is available. Here are some handy tools to deploy a Roadiz with FTP.
The first condition is that you'll have to setup a local environment which will be mirrored to your shared hosting FTP, vendor/
included… yes. Grab a very long cup of coffee when you initiate the first FTP push, it will be long, very long. Next pushes will only push newer files.
The second condition is that you must create all your node-type entities on your local env first to be able to mirror all GeneratedNodeSources\*
classes as you won't be able to generate them on your production env.
Standard-edition comes with a sample Makefile
so you can write a push-prod
recipe to automatize all process using lftp
command. Make sure it’s installed on your computer:
# macOS
brew install lftp
# Ubuntu/Debian
apt-get install lftp
# …
This recipe will clear your cache files, generate Apache .htaccess
files, copy your theme assets as real files, mirror all necessary files without all exceptions (list can be improved) then copy your theme assets back to symlinks.
push-prod:
make cache
bin/roadiz generate:htaccess
bin/roadiz themes:assets:install ${THEME_PREFIX}
lftp -e "mirror --only-newer --parallel=3 -R \
--exclude '/\..+/$$' \
-x 'app/conf/config\.yml' \
-x '\.env' \
-x '(README\.md|Makefile|Dockerfile|Vagrantfile)' \
-x '(bin|docker|samples|tmp|\.git|\.idea|files)/' \
-x 'app/(cache|logs|sessions|tmp)/' \
-x 'web/files/' \
-x 'node_modules/' \
-x 'bower_components/' \
-x 'themes/${THEME}/(app|node_modules|webpack)/' \
-x '\.(psd|rev|log|cmd|bat|pif|scr|exe|c?sh|reg|vb?|ws?|sql|db)$$' \
./ ${FTP_REMOTE_PATH}" -u ${FTP_USER},${FTP_PASS} ${FTP_HOST}
bin/roadiz themes:assets:install --relative --symlink ${THEME_PREFIX}
Make sure your configuration matches your shared hosting plan, for example, adjust your cache driver to file
, php
to get decent performances.
cacheDriver:
type: file
host: null
port: null