FTP
Configuration
If you want to allow FTP access for a site, set ftp
to True
and create
an ftp_user_name
, ftp_user_id
and ftp_password
e.g:
sites:
hatherleigh_net:
db_pass: password2
domain: hatherleigh.net
secret_key: 'another-secret-key-generated-by-django'
ssl: True
uwsgi_port: 3036
ftp: True
env:
ftp_password: "generated-using-mkpasswd-see-below"
ftp_user_id: 7600
ftp_user_name: orange_apple
Note
Keep the ftp_user_id
unique across all the sites and start from ID 7600
so we don’t clash with standard users.
The password is generated using mkpasswd
:
mkpasswd -m sha-512 <password>
When you enable FTP for a site, a system user will be created using the
ftp_user_name
e.g. orange_apple
.
To allow your project to find templates and static media uploaded using FTP,
update your TEMPLATE_DIRS
in settings/production.py
as follows:
TEMPLATE_DIRS = (
get_env_variable('FTP_TEMPLATE_DIR'),
)
For development, set TEMPLATE_DIRS
in local.py
as follows:
TEMPLATE_DIRS = (
os.path.normpath(
os.path.join(
os.path.dirname(os.path.realpath(__file__)),
'..',
'example',
'templates',
)
),
)
Usage
Tip
Connect using ftp
(not sftp
).
Using an FTP client, connect to the server. The user name is the
ftp_user_name
e.g. orange_apple
, and the password is the one you
created using mkpasswd
(see above).
When you connect, you will see a site
folder. Within the site
folder,
create a folder for templates
and a folder for static
media. The
templatepages
folder is for the django-templatepages app e.g:
├── site
│ ├── static
│ │ ├── image.jpg
│ │ └── ...
│ └── templates
│ ├── _footer.html
│ ├── home.html
│ ├── ...
│ ├── templatepages
│ │ ├── my.html
│ │ └── ...
The URLs for the image and the templatepages
page in the previous example
will be:
Note: The article
within the previous URL assumes that your project URLs
are set-up as follows:
url(regex=r'^article/',
view=include('templatepages.urls'),
),
If your project (or application) need access to the FTP static folder, then
you can make it available in your environment by adding the following to your
production.py
file:
# FTP upload 'static' folder
FTP_STATIC_DIR = get_env_variable('FTP_STATIC_DIR')
FTP_STATIC_URL = get_env_variable('FTP_STATIC_URL')
Note
If you don’t want to allow FTP upload to your site, then set
FTP_STATIC_DIR
and FTP_STATIC_URL
to None
:
# FTP upload 'static' folder
FTP_STATIC_DIR = None
FTP_STATIC_URL = None
For local development, to simulate access to the FTP upload folder, add
something similar to this to the settings/local.py
file:
# FTP upload 'static' folder
FTP_STATIC_DIR = os.path.normpath(os.path.join(
os.path.dirname(os.path.realpath(__file__)),
'..',
'project',
'tests',
'data',
'ftp_static_dir',
))
# Start a local web server in the 'project' folder.
FTP_STATIC_URL = 'http://localhost:8080/'