Note

The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.

Difference between revisions of "Package:Apache"

From Funtoo
Jump to navigation Jump to search
m (grammar and spelling edits only)
Line 15: Line 15:
== Install ==
== Install ==
=== Configure USE Flags ===
=== Configure USE Flags ===
Flags change sometime necessary to extend default USE flags in apache ebuild and compile a custom flavor of it. This can be achieved by portage's <code>package.use</code>. Create a directory <code>/etc/portage/package.use</code> and file called <code>/etc/portage/package.use/apache</code> add the USE flags you want. For example:
Depending upon one's personal preferences, flag changes are sometimes necessary. To extend default USE flags in an Apache ebuild, compile a custom flavor. This can be achieved by Portage's <code>package.use</code>. Create a directory <code>/etc/portage/package.use</code> and file called <code>/etc/portage/package.use/apache</code>, and add the USE flags you want. For example:
<console>###i## install -d /etc/portage/package.use</console>
<console>###i## install -d /etc/portage/package.use</console>
{{file|name=/etc/portage/package.use/apache|desc= |body=
{{file|name=/etc/portage/package.use/apache|desc= |body=
www-servers/apache ssl threads
www-servers/apache ssl threads
}}
}}
Alternatively, if someone prefer a <code>/etc/portage/package.use</code> flat file:
Alternatively, if one prefers a <code>/etc/portage/package.use</code> flat file:
<console>###i## echo 'www-servers/apache ssl threads' >> /etc/portage/package.use</console>
<console>###i## echo 'www-servers/apache ssl threads' >> /etc/portage/package.use</console>
=== Emerge ===
=== Emerge ===
After you have configured the USE flags that you want to build Apache with, emerge it:
After configuring your preferred USE flags, emerge Apache:
<console>###i## emerge apache</console>
<console>###i## emerge apache</console>


== Configuration ==
== Configuration ==
=== System ===
=== System ===
Many packages have apache2 use flags. These use flags are often required for an application to be supported by Apache. Setting a system wide apache2 use flag is a good idea.
Many packages have Apache2 USE flags. These USE flags are often required for an application to be supported by Apache. Setting a system wide Apache2 USE flag is a good idea.


{{file|name=/etc/portage/make.conf|desc=set system wide apache2 useflag|body=
{{file|name=/etc/portage/make.conf|desc=set system wide apache2 useflag|body=
Line 47: Line 47:
=== {{package|dev-lang/php}} ===
=== {{package|dev-lang/php}} ===
==== DSO / mod_php ====
==== DSO / mod_php ====
To show which php versions are available for apache on your system:
To show which PHP versions are available for Apache on your system:
<console>###i## eselect php list apache2
<console>###i## eselect php list apache2
   [1]  php5.5
   [1]  php5.5
Line 53: Line 53:
</console>
</console>


To select php5.5:
To select PHP 5.5:
<console>###i## eselect php set apache2 php5.5</console>
<console>###i## eselect php set apache2 php5.5</console>


Line 60: Line 60:
}}
}}


restart apache:
Restart Apache:
<console>###i## rc-service apache2 restart</console>
<console>###i## rc-service apache2 restart</console>


Line 69: Line 69:
APACHE2_OPTS="... -D SECURITY"}}
APACHE2_OPTS="... -D SECURITY"}}


Control this module by editing these files, and restarting apache.
Control this module by editing these files, and restarting Apache.
   
   
<code>/etc/apache2/modules.d/79_modsecurity.conf</code> & <code>/etc/apache2/modules.d/80_modsecurity-crs.conf</code>
<code>/etc/apache2/modules.d/79_modsecurity.conf</code> & <code>/etc/apache2/modules.d/80_modsecurity-crs.conf</code>
== Service ==
== Service ==


To start apache immediately:
To start Apache immediately:
<console>
<console>
###i## rc-service apache2 start
###i## rc-service apache2 start
</console>
</console>


To start apache upon boot:
To start Apache upon boot:
<console>
<console>
###i## rc-update add apache2
###i## rc-update add apache2
Line 111: Line 111:


Then point your browser to http://127.0.0.1/test.html. You should see that the text from rewrite.html has been loaded.
Then point your browser to http://127.0.0.1/test.html. You should see that the text from rewrite.html has been loaded.
{{EbuildFooter}}
{{EbuildFooter}}

Revision as of 15:04, March 22, 2015

Apache

   Tip

We welcome improvements to this page. To edit this page, Create a Funtoo account. Then log in and then click here to edit this page. See our editing guidelines to becoming a wiki-editing pro.

Apache is a powerful web server which serves html/css/cgi/pl out of the box, and can serve other languages/frameworks via extensions.

The Apache Homepage says this of Apache:

The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows NT. The goal of this project is to provide a secure, efficient and extensible server that provides HTTP services in sync with the current HTTP standards.

Install

Configure USE Flags

Depending upon one's personal preferences, flag changes are sometimes necessary. To extend default USE flags in an Apache ebuild, compile a custom flavor. This can be achieved by Portage's package.use. Create a directory /etc/portage/package.use and file called /etc/portage/package.use/apache, and add the USE flags you want. For example:

root # install -d /etc/portage/package.use
   /etc/portage/package.use/apache
www-servers/apache ssl threads

Alternatively, if one prefers a /etc/portage/package.use flat file:

root # echo 'www-servers/apache ssl threads' >> /etc/portage/package.use

Emerge

After configuring your preferred USE flags, emerge Apache:

root # emerge apache

Configuration

System

Many packages have Apache2 USE flags. These USE flags are often required for an application to be supported by Apache. Setting a system wide Apache2 USE flag is a good idea.

   /etc/portage/make.conf - set system wide apache2 useflag
USE="...,apache2,..."

Package

Apache's configuration files are broken up and located in several spots.

  • /etc/conf.d/apache2
  • /etc/apache2/httpd.conf
  • /etc/apache2/modules.d/*
  • /etc/apache2/vhosts.d/*

conf.d controls the init script, adding things to it such as -D SECURITY & -D PHP5 will enable web application fire-walling & the php scripting language.

httpd.conf controls how the server behaves, at the bottom of the file it has directives to include configuration files ending in .conf in /etc/apache2/modules.d and /etc/apache2/vhosts.d

dev-lang/php

DSO / mod_php

To show which PHP versions are available for Apache on your system:

root # eselect php list apache2
  [1]   php5.5
  [2]   php5.6 *

To select PHP 5.5:

root # eselect php set apache2 php5.5
   /etc/conf.d/apache2 - enable php dso module
"... -D PHP5"

Restart Apache:

root # rc-service apache2 restart

Enabling Security Module

root # emerge mod_security
   /etc/conf.d/apache2 - enable mod_security
APACHE2_OPTS="... -D SECURITY"

Control this module by editing these files, and restarting Apache.

/etc/apache2/modules.d/79_modsecurity.conf & /etc/apache2/modules.d/80_modsecurity-crs.conf

Service

To start Apache immediately:

root # rc-service apache2 start

To start Apache upon boot:

root # rc-update add apache2

mod_rewrite

What is mod_rewrite?

The Apache documentation describes mod_rewrite as:

The mod_rewrite module uses a rule-based rewriting engine, based on a PCRE regular-expression parser, to rewrite requested URLs on the fly. By default, mod_rewrite maps a URL to a filesystem path. However, it can also be used to redirect one URL to another URL, or to invoke an internal proxy fetch.

Setting it up

mod_rewrite has a reputation of being difficult to set up. mod_rewrite requires following symlinks & Order allow,deny (apache 2.2) or Require all granted (apache 2.4) is set. To test functionality of mod_rewrite we will need to make a few files.

   Note

If you want to test this for web applications such as mediawiki adjust the path to /var/www/localhost/htdocs/mediawiki/.htaccess

   /var/www/localhost/htdocs/.htaccess - enable the rewrite engine
RewriteEngine on 
RewriteRule ^test.html$ rewrite.html
   /var/www/localhost/htdocs/test.html - set system wide apache2 useflag
rewrite is not working
   /var/www/localhost/htdocs/rewrite.html - set system wide apache2 useflag
rewrite is working

Then point your browser to http://127.0.0.1/test.html. You should see that the text from rewrite.html has been loaded.