I can retrieve files but cannot edit and upload. However, I can upload files and directories to root directory.
Here I found a solution, but I have UIDs and GUIDs that match linux users. proftpd cannot upload (550 error)
Here the site which helped me to setup ProFTPD https://kyup.com/tutorials/install-configure-proftpd/
As /var/www/site.com/public_html belongs to apache user I changed user and group from nobody/nogroup to apache, but it doesn't solve problem.
ServerName "ProFTPD server"
ServerIdent on "FTP Server ready."
ServerAdmin root@localhost
ServerType standalone
DefaultServer off
AccessGrantMsg "User %u logged in."
DeferWelcome off
DefaultRoot ~ !adm
AuthPAMConfig proftpd
AuthOrder mod_auth_pam.c* mod_auth_unix.c
IdentLookups off
UseReverseDNS off
Port 21
#Umask 022
ListOptions "-a"
AllowRetrieveRestart on
AllowStoreRestart on
MaxInstances 30
User apache
Group apache
UseSendfile no
ScoreboardFile /var/run/proftpd.score
<Global>
AllowOverwrite yes
<Limit ALL SITE_CHMOD>
AllowAll
</Limit>
RootLogin off
</Global>
<VirtualHost x.x.x.x>
ServerName "vps.site.com"
LoginPasswordPrompt on
Port random_port
DefaultRoot ~
AuthOrder mod_auth_file.c mod_auth_unix.c
AuthUserFile /etc/proftpd/ftpd.passwd
AuthGroupFile /etc/proftpd/ftpd.group
<Directory /var/www/site.com/public_html>
Umask 022 022
AllowOverwrite on
<Limit WRITE>
AllowAll
</Limit>
</Directory>
</VirtualHost>
cat /etc/passwd
support:x:501:501::/var/www/site.com/public_html:/sbin/nologin
cat /etc/group
support:x:501:
cat ftpd.passwd
support:xxxxxxx:501:501::/var/www/site.com/public_html:/sbin/nologin
cat ftpd.group
group_name:x:501:
support:x:501: