How to make Apache run as current user

I think for a development machine, its more convenient to run Apache as the current user to simplify permissions problem? How do I do that? I think its suexec but how do I configure it in Ubuntu+Apache?

8 Answers

Edit the following file as root: /etc/apache2/envvars

using the command:

sudo nano /etc/apache2/envvars

change the user and group to yourself if there is only one user and you will never have permissions problems again.

I.E., if you are only logging in and running the server as user 'big_dog':

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

Heck, for that matter you could change that user to the current user I'm sure somehow. Then, install user_dir you all have webs only you can have full control of (unless you modify this).

Restart the server (if unsure, just reboot or goole) and you are good to go.

5

I myself would add the user to the www-data group with...

sudo adduser {username} www-data

Simple and effective. No messing with config files or permissions.

7

You can do this with the mpm_itk_module module.

Install on Ubuntu 20.04:

sudo apt install libapache2-mpm-itk

Create a Virtual Host for sites in your home folder

<VirtualHost codealfa:*> ServerName codealfa ServerAlias codealfa DocumentRoot "/home/codealfa/www" <IfModule mpm_itk_module> AssignUserId codealfa codealfa </IfModule> <Directory /home/codealfa/www> Options Indexes FollowSymLinks Includes ExecCGI DirectoryIndex index.html index.php Order deny,allow Allow from all Require all granted </Directory>
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Add your domain (in this case I'm using the username as domain) to /etc/hosts

127.0.0.1 codealfa

Restart apache

sudo systemctl restart apache2

Install all your sites under subfolders under /home/codealfa/www and access them in your browser from . For eg., install one site at /home/codealfa/www/site1 and you can view it in your browser at .

why would you do this,, I was strugnling with that perm issues in the past, but this is my dev process from today:

  • install new linux box (virtual, or local like laptop)
  • run standard sudo apt-get install lamp-server^ proc to get lamp up
  • make sym link to my home dir where projects are like this:

    ln -s /home/user/html /var/www/html

  • make sym link to hosts config file

    ln -s /home/user/html/Apache-VirtualHosts.conf /etc/apache/sites-enabled/000-default

that's it :)

It works as aspected, no issues with user perms or something similar with apache server,, for mysql I have little longer process..

hth, cheers

2

Sidestepping the "should you do this" issue, you can find where the user for apache is set by running:

grep www- /etc/apache2/apache2.conf

It's then a case of editing those instances in /etc/apache2/apache2.conf and reloading Apache (sudo /etc/init.d/apache2 reload).

3

create a new usergroup webdev and add the www-data user to it.

sudo addgroup webdev
sudo adduser www-data webdev

Then go ahead and add your user to that group and make it the default group for yor user.

sudo adduser {your-user} webdev
sudo addgroup webdev

Last thing to do is to make sure, the group webdev has rwx rights on the files

sudo chmod 775 -R /path/to/project

Now the only thing that can occur is that for e.g. www-data creates a new log file and you can't rwx it.

2

If anyone trying to achieve this on a docker container, This worked for me.

create your own user (non-root user hence the id 1000) and give permissions:

ENV MY_USER myUserName
RUN useradd -M -u 1000 $MY_USER \ && chown -R $MY_USER:$MY_USER /var/run/apache2 \ && chown -R $MY_USER:$MY_USER /var/log \ && chown -R $MY_USER:$MY_USER /etc/apache2 \ && chown -R myuser:myuser /var/lib/apache2
USER $MY_USER
CMD apache2ctl -D FOREGROUND

Note: Add this line only after installing all the apache modules you needed.

For those who just want to spawn a web-server for local development

You can start PHP's in-built server

php -S localhost:8080 -t /home/sysadmin/Documents/wordpress

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like