Skip to content

CentOS7-配置Apache虚拟主机

With Apache, you can use virtual hosts to direct http traffic for a given domain name to a particular directory (i.e. the root directory of the website for the domain in the request). This feature is commonly used to host multiple websites, but it's suggested to using it for every website on your server including the first.

Install the Apache web server

If you haven't have Apache installed on you server, please refer to this passage to install Apache first: CentOS7安装LAMP环境. And then return back to do the following operations.

Set up the virtual host
default
# create the virtual directories of your domain
mkdir -p /var/www/example.com/public_html

# change the ownership to the Apache group

# this allows Apache modify files in our web directories

chown -R apache:apache /var/www/example.com/public_html

# change the directory's permissions so they can be read from the internet

chmod -R 755 /var/www
Create content for the website

Upload your files you prepared to the public_html folder you created in the last section.

Configure your virtual host directories

We're going to copy a configuration usually used in Ubuntu/Debian and create two directories: one to store the virtual host files (sites-available) and the other to hold symbolic links to virtual hosts that will be published (sites-enabled). Create sites-available and sites-enabled directories

default
mkdir /etc/httpd/sites-available

mkdir /etc/httpd/sites-enabled

Edit your Apache configuration file Edit the main configuration file (httpd.conf) so that Apache will look for virtual hosts in the sites-enabled directory.

default
# open your config file
vi /etc/httpd/conf/httpd.conf

# add this line at the very end
# this way, we're telling Apache to look for additional config files
# + in the sites-enabled directory
IncludeOptional sites-enabled/*.conf

# save and close the file
:wq!
Create virtual host file

We're going to build it from a new file in your sites-available directory. 1. Create a new config file:

default
vi /etc/httpd/sites-available/example.com.conf

2. Paste the code bellow in, replacing your own domain for example.com:

default
<VirtualHost *:80>
       ServerAdmin webmaster@example.com
       ServerName www.example.com
       ServerAlias example.com
       DocumentRoot /var/www/example.com/public_html
       ErrorLog /var/www/example.com/error.log
       CustomLog /var/www/example.com/requests.log combined
   </VirtualHost>

The lines ErrorLog and CustomLog are not required to set up your virtual host, but we've included them, in case you do want to tell Apache where to keep error and request logs for your site. 3. Save and close the file.

default
:wq!

4. Enable your virtual host with a sym link to the sites-enabled directory.

default
ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

5. Restart Apache

default
service httpd restart
Reference:

天上的神明与星辰,人间的艺术和真纯,我们所敬畏和热爱的,莫过于此。