I have followed this upvoted answer and did the following:
sudo chown -R my-user:www-data /var/www/domain.com/
sudo find /var/www/domain.com/ -type f -exec chmod 664 {} \;
sudo find /var/www/domain.com/ -type d -exec chmod 775 {} \;
sudo chgrp -R www-data /var/www/domain.com/storage /var/www/domain.com/bootstrap/cache
sudo chmod -R ug+rwx /var/www/domain.com/storage /var/www/domain.com/bootstrap/cache
Everything works fine, but whenever a directory (within the storage directory) is created by my-user and not www-data user, the webserver can't write to it or vice versa. Unless I rerun those commands after the directory has been created.
Notes: sometimes I run commands with my-user that create directories, and sometimes the www-data user create directories. (within the storage directory).
Also, my-user is already within the www-data group.
How can I avoid permission errors? without running all those commands again.
Option 1 add www-data group to my-user:
sudo adduser www-data my-user
Option 2 change user of php-fpm into my-user (ref):
find options user and group in www.conf, and change it into [my-user] group=mygroup