+ All Categories
Home > Education > 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Date post: 08-May-2015
Category:
Upload: telerik-software-academy
View: 8,024 times
Download: 18 times
Share this document with a friend
Description:
Advanced concepts about PHP, Apache and MySQLTelerik Software Academy: http://academy.telerik.com/school-academy/meetings/details/2011/10/11/php-school-academy-meetingThe website and all video materials are in Bulgarian.This lecture discusses the following topics:PHP Settings: Modifying PHP settings at runtime, Modifying trough .htaccessApache Settings: Virtual Hosts, Modules – mod_rewrite, mod_autoindex, mod_expires, etcMySQL Settings: Performance
56
Advanced PHP, Apache and MySQL Advanced Settings Nikolay Kostov Telerik Software Academy academy.telerik.com Technical Trainer http://nikolay.it 1 ademy.telerik.com/.../ php -school- academy-meeting
Transcript
Page 2: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Summary PHP Settings

Modifying PHP settings at runtime

Modifying trough .htaccess Apache Settings

Virtual Hosts

Modules – mod_rewrite, mod_autoindex, mod_expires, etc

MySQL Settings Performance

Page 3: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Configuring PHPThe php.ini fileThe php.ini file

Page 4: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

PHP Settings PHP settings are in the php.ini file

Set of name=value statements

Location of the file is different across the operating systems and versions

Which php.ini file is loaded can be checked with the phpinfo() function

PHP supports add-ons Most add-ons read their settings

from the same file

Page 5: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Code Settings

short_open_tags (on or off) Defines if <? and <?= should be

considered PHP opening tags

Will be deprecated, do not turn on

asp_tags (on or off) Defines if <% and %> should be

considered PHP open and close tags

Page 6: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

File Upload Settings file_uploads (on or off)

Turns PHP file upload handling on and off

upload_tmp_dir

Defines the directory where PHP should store the temporary uploaded files

upload_max_filesize

Defines the maximum allowed uploaded file size (in megabytes)

Page 7: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Buffer Settings output_buffering (on or off)

Sets whether the entire PHP output should be buffered

Emulates ob_start and ob_end_flush

implicit_flush (on or off) Sets if the buffer should be flushed

to the browser automatically after every output block

Page 8: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Other Settings magic_quotes_gpc (on or off)

defines whether data received in $_GET, $_POST, $_COOKIE arrays should be escaped with back slashes

Deprecated, never turn on! register_globals (on or off)

When turned on all data from $_GET, $_POST, etc. arrays is converted to variables

$_GET['name'] becomes $name

Deprecated, never turn on!

Page 9: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Changing Configuration Settings at Runtime

Use ini_set function to change php.ini settings at runtime

Use ini_get function to check a value of php.ini variable

Use phpinfo() function to see the current values of the PHP settings<?php ini_set('include_path','c:/php/PEAR'); ?><?php ini_set('include_path','c:/php/PEAR'); ?>

<?php echo ini_get('upload_max_filesize'); ?><?php echo ini_get('upload_max_filesize'); ?>

<?php phpinfo() ?><?php phpinfo() ?>

Page 10: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Configuring ApacheThe httpd.conf fileThe httpd.conf file

Page 11: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Apache Settings Apache settings are defined in the httpd.conf file Location and name may differ

across platforms and Apache versions

Older version read from multiple files

The site-specific settings and module-specific settings are in separate files

Follows syntax close to XML format Name value pairs sometimes in tags

Page 12: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Prefork vs. Worker Apache has two core modules (versions) – prefork and worker Different behavior

Prefork is process based, doesn't utilize threads much, better for single/dual core CPU servers

Worker utilizes threaded-architecture – better for multi-core/CPU servers

Some tests say prefork is better, some say worker

Page 13: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Apache Modules Loading a module

Using conditional configuration settings:

Loading mod_php

LoadModule ssl_module modules/mod_ssl.soLoadModule ssl_module modules/mod_ssl.so

<IfModule dir_module> DirectoryIndex index.php DirectoryIndex index.html</IfModule>

<IfModule dir_module> DirectoryIndex index.php DirectoryIndex index.html</IfModule>

LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll"LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll"

Page 14: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Connection Settings Timeout (in seconds)

The number of seconds before it sends timeout to a dead connection

Keepalive (on or off) Turns on and off persistent

connections MaxKeepAliveRequests

The maximum number of persistent connections allowed

KeepAliveTimeout The number of seconds before

closing a dead persistent connection

Page 15: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

More Settings Listen

Sets port for apache to listen for connections

Can be repeated with different ports

Usually separated in ports.conf file

HostnameLookups (on or off) If turned on logs the host names of

remote clients instead of IP addresses

User, Group – set the user and group that apache process should work in

Page 16: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

More Settings DirectoryIndex

Sets default file names that should be shown in case directory is requested

Example:

If the user requests http://www.example.com/test/ the server will look for index.php and then for index.html in the requested directory

DirectoryIndex index.php index.htmlDirectoryIndex index.php index.html

Page 17: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Log Settings ErrorLog

Sets the file apache logs errors to

Can be specified separately for each site

LogLevel

Sets the level of logging to the error log

One of debug, info, notice, warn, error, crit

LogFormat

Specifies nick names for different log formats

Can be used for site-specific access logs

Page 18: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Virtual Hosts Apache supports multiple sites on the same IP address/port Specified in VirtualHost directives

Usually virtual hosts are separated in different files

Requires NameVirtualHost directive Sets the IP address and port on

which the apache will receive requests for the name-based virtual hosts

IP and Port can be replaced with * (any)

Page 19: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Example Virtual Host

ServerName specifies the (domain) name of the virtual host

ServerAlias specifies additional names (domains) for this virtual host

NameVirtualHost *:80

<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example/htdocs ErrorLog /var/www/example/logs/err CustomLog /var/www/example/logs/custom</VirtualHost>

NameVirtualHost *:80

<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example/htdocs ErrorLog /var/www/example/logs/err CustomLog /var/www/example/logs/custom</VirtualHost>

Page 20: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

VirtualHost Settings DocumentRoot

Sets the root directory for this host

Passed to PHP in the $_SERVER['DOCUMENT_ROOT'] variable

Be careful with the ending slash

ErrorLog sets the host-specific error log

CustomLog sets the location and format for the host access log file

Page 21: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Location Directive The Location directive is used to define URL-specific settings Settings are directory based

Can be placed in VirtualHost or for server-wide<VirtualHost *:80>

…<Location /admin>

Require valid-user</Location>

</VirtualHost>

<VirtualHost *:80>…<Location /admin>

Require valid-user</Location>

</VirtualHost>

Page 22: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Directory Directive

The Directory directive is used to define file system directory settings Can be defined server-wide or host-

specific

<VirtualHost *:80>…<Directory /var/www/includes>

Allow from localhostDeny from all

</Directory></VirtualHost>

<VirtualHost *:80>…<Directory /var/www/includes>

Allow from localhostDeny from all

</Directory></VirtualHost>

Page 23: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Deny and Allow The Deny from, Allow from and Order

directives are used to limit access to certain hosts

Deny and Allow values are lists of hosts (space-separated), partial domain names, partial IPs or "all"

The Order directive sets whether deny or allow should be higher priority Value is "Allow,Deny" or "Deny,Allow"

First is with higher priority, if host is not matched, second in list is used

Page 24: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Deny and Allow – Examples

Allow from localhostDeny from allOrder Allow, Deny

Allow from localhostDeny from allOrder Allow, Deny

Allow from .net # partial domainDeny from 192.168 # partial IPOrder Deny, Allow

Allow from .net # partial domainDeny from 192.168 # partial IPOrder Deny, Allow

Allow from localhost 192.168.0.1Deny from 85.187.0.0/16 # deny a networkOrder Deny, Allow

Allow from localhost 192.168.0.1Deny from 85.187.0.0/16 # deny a networkOrder Deny, Allow

Allow from 2001:db8::a00:20ff:fea7:cceaDeny from allOrder Allow, Deny

Allow from 2001:db8::a00:20ff:fea7:cceaDeny from allOrder Allow, Deny

Page 25: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

The Options Directive Sets values of several additional directory-based options Each option is prefixed with + or –

to turn on or off; if no prefix is supplied, on is assumed

ExecCGI – whether CGI scripts execution is allowed in the directory

FollowSymLinks – whether Apache should use only files or can follow symbolic links in the directory

Page 26: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

The Options Directive Indexes – If a URL maps to directory

and there is no file that matches the DirectoryIndex directive then mod_autoindex will return page with the list of files in the directory

Turning this on for hosts/locations that do not explicitly require it is considered security risk!

<Directory /var/www/docs> Options +Indexes +FollowSymLinks -ExecCGI</Directory

<Directory /var/www/docs> Options +Indexes +FollowSymLinks -ExecCGI</Directory

Page 27: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Setting-up a Virtual Host – Example

To set-up a virtual host follow the steps:

1. Set your domain name to point to your external IP address

For testing you can modify the "hosts file"

/etc/hosts in Linux

C:\WINDOWS\System32\drivers\etc\hosts in Linux

2. Add NameVirtualHost and VirtualHost directives in the httpd.conf

3. Restart Apache

Page 28: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Using HTTPS HTTPS is HTTP over SSL/TLS Apache has separate module for handling https

Running virtual host over https requires certificate and connection on port 443 In Linux the packages openssl and ssl-cert are necessary too

Apache has automated script for generating certificates – apache2-ssl-certificate

Page 29: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Configuring HTTPS Example of virtual host with SSL

The SSLEngine directive turns on the SSL security engine

SSLCertificateFile supplies valid certificate file The domain property in the file must

match the host name

<VirtualHost *:443>ServerName phpmyadmin.example.comDocumentRoot /usr/shared/phpmyadmin/SSLEngine onSSLCertificateFile

/etc/apache2/ssl/myadmin.pem</VirtualHost>

<VirtualHost *:443>ServerName phpmyadmin.example.comDocumentRoot /usr/shared/phpmyadmin/SSLEngine onSSLCertificateFile

/etc/apache2/ssl/myadmin.pem</VirtualHost>

Page 30: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Configuring HTTPS – Example

1. First ensure that httpd-ssl.conf file will be loaded. Put this code in httpd.conf:

2. Create a self-signed SSL certificate:

3. Define a virtual host on port 443 with SSL engine switched on

4. Restart Apache

Include conf/extra/httpd-ssl.confInclude conf/extra/httpd-ssl.conf

openssl genrsa 1024 > host.keyopenssl genrsa 1024 > host.key

openssl req -new -x509 -nodes -sha1 -days 365 -key host.key > host.certopenssl req -new -x509 -nodes -sha1 -days 365 -key host.key > host.cert

cat host.cert host.key > host.pemcat host.cert host.key > host.pem

Page 31: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

HTTP Authentication The apache module mod_auth allows the use of HTTP Basic Authentication Restrict or allow access to certain

areas Requires user and password input

For stronger authentication and scalability use mod_auth_digest or mod_auth_dbm

Usernames and password are stored encrypted in a file

Page 32: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

mod_auth directives AuthType

Sets the type of user authentication Possible values are Basic and Digest

AuthName User-friendly name of the realm

that requires authorization Must be enclosed in quotation

marks AuthUserFile

Specifies the file that stores users and passwords

Page 33: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

mod_auth directives AuthGroupFile

Specifies the file that stores the groups of users

Groups are simply alias to list of users

Example content of group file:

Groups cannot be nested or inherited

Never put the user file or groups file in the document tree of the site!

Boss: john peshoAccounting: mara cecaTesters: chocho bobo shusi

Boss: john peshoAccounting: mara cecaTesters: chocho bobo shusi

Page 34: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Require Directive Require sets which users/groups are allowed to access the realm Possible values are:Require user [list of users]Require group [list of groups]Require valid-user

Page 35: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

The htpasswd tool Apache comes with a small tool for generating user files named htpasswd Encrypts the passwords

Usually these files are named .htpasswd// the –c flag means "create a new file"

htpasswd –c .htpasswd mara// asks you to supply password

// add new userhtpasswd .htpasswd john// again asks for password

// the –c flag means "create a new file"htpasswd –c .htpasswd mara// asks you to supply password

// add new userhtpasswd .htpasswd john// again asks for password

Page 36: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Authentication – Example

<VirtualHost *:80>

ServerName example.comDocumentRoot /var/www/ex/htdocs…<Location /admin>

AuthType BasicAuthName "Example admin area"AuthUserFile /var/www/ex/.htpasswd

</Location></VirtualHost>

<VirtualHost *:80>ServerName example.comDocumentRoot /var/www/ex/htdocs…<Location /admin>

AuthType BasicAuthName "Example admin area"AuthUserFile /var/www/ex/.htpasswd

</Location></VirtualHost>

Page 37: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Using .htaccess Apache can read additional settings from files in the site document tree The name of the file is controlled by

the AccessFileName server directive

Usually named .htaccess

In the .htaccess file can be placed all directives, valid for Location

Slows down the Apache It has to read it on every request

Page 38: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Example .htaccess

Apache reads all .htaccess files in the directories from the document root up to the requested resource and combines them

Can contain mod_rewrite settings Can contain PHP settings with the php_value directive

Options +IndexesAuthType BasicAuthName "test"AuthUserFile ".htpasswd"php_value magic_quotes_gpc off

Options +IndexesAuthType BasicAuthName "test"AuthUserFile ".htpasswd"php_value magic_quotes_gpc off

Page 39: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

mod_rewrite mod_rewrite allows rule-based

rewriting and redirecting of requests Example: user requests index.html but

the rewrite rules change this to index.php

This is NOT redirecting!

Used to make friendly URLs, rename resources, etc.

Based on regular expressions

Operates on per-server or per-directory context

Page 40: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Rewriting Directives RewriteEngine (on or off) RewriteBase

Sets the base URL for per-directory (.htaccess) rewriting

RewriteRule [pattern] [substitution][flags]

If the requested URL matches the pattern it is rewritten with the replacement

Allows using back-references and groups

Page 41: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

RewriteRule flags [L] – rewriting should stop and no other

rules should be checked

[F] – force 403 forbidden response code

[G] – force 410 gone response code

[R=(code)] – force redirect with response code

User is redirected to the result URL

[N] – restart rewriting with the new address

[NC] – case insensitive match

[C] – chain rule with the next

If not matched, skips the chained rules

Page 42: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

URL Rewriting – Example

RewriteEngine On#rewrite directories to index filesRewriteRule ^(.*)/$ $1/index.html

#send all html files to the template engine#so the URLs are friendlyRewriteRule ^(.*).html$ /template.php?page=$1

#generate the human validation imageRewriteRule ^captcha.gif$ /captcha_gen.php

#stream the videosRewriteRule ^/(.{10}).swf$ /stream.php?vid=$1

#rewrite product URLsRewriteRule ^/products/(.*)/(.*).html$

/product.php?category=$1&product=$2

RewriteEngine On#rewrite directories to index filesRewriteRule ^(.*)/$ $1/index.html

#send all html files to the template engine#so the URLs are friendlyRewriteRule ^(.*).html$ /template.php?page=$1

#generate the human validation imageRewriteRule ^captcha.gif$ /captcha_gen.php

#stream the videosRewriteRule ^/(.{10}).swf$ /stream.php?vid=$1

#rewrite product URLsRewriteRule ^/products/(.*)/(.*).html$

/product.php?category=$1&product=$2

Page 43: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

RewriteCond The RewriteCond directive defines a rule condition Used to match HTTP headers,

connection and request properties, server settings, system properties, etc.

One or more RewriteCond directives can precede RewriteRule directive All must match to rewrite the URL

Page 44: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

RewriteCond example

#mozila users special page ;)RewriteCond ${HTTP_USER_AGENT} ^Mozilla.*RewriteRule ^/index.html$ /index.mozilla.php

#internal network special home page#use for the 10.0 and 192.168 networksRewriteCond %{REMOTE_HOST} ^10.0.*$ [OR]RewriteCond %{REMOTE_HOST} ^192.168.*$RewriteRule ^/index.html$ /index.internal.php

#only HTTP authenticated user admin !RewriteCond %{REQUEST_METHOD} ^HEAD$RewriteCond %{REMOTE_USER} ^admin$RewriteRule .* $1 [F] # Force forbidden!

#mozila users special page ;)RewriteCond ${HTTP_USER_AGENT} ^Mozilla.*RewriteRule ^/index.html$ /index.mozilla.php

#internal network special home page#use for the 10.0 and 192.168 networksRewriteCond %{REMOTE_HOST} ^10.0.*$ [OR]RewriteCond %{REMOTE_HOST} ^192.168.*$RewriteRule ^/index.html$ /index.internal.php

#only HTTP authenticated user admin !RewriteCond %{REQUEST_METHOD} ^HEAD$RewriteCond %{REMOTE_USER} ^admin$RewriteRule .* $1 [F] # Force forbidden!

Page 45: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Configuring MySQLThe my.cnf and my.ini filesThe my.cnf and my.ini files

Page 46: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

MySQL Settings MySQL settings are in the:

my.cnf my.ini

Split into sections Section name is defined in [ and ]

Settings are in name=value form

Page 47: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Network Settings port

Sets the connection port (usually 3306)

Passed to all clients

bind-address

Sets interfaces to listening on

For security reasons usually set 127.0.0.1 (allows only local connections)

Page 48: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Fine tuning settings Fine tuning of MySQL is done in the mysqld section

Defines memory usages for buffers and connections

key_buffer

Sets the size of the cache buffer for primary and foreign keys

join_buffer

The size of the cache buffer for matching fields from two tables

Set higher if multiple joins in one query are used often

Page 49: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Fine Tuning Settings sort_buffer_size

Size of buffer for sorting

Increase when sorting too many rows

thread_cache_size

Size of cache for each thread

Increase when running multiple queries on same tables in a single script

table_cache

Size of per-table cache

Page 50: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Fine Tuning Settings thread_concurrency

Sets the level of concurrency of threads

Supposed to affect only Solaris platforms

seems it works fine under Linux platforms

Set to double the number of CPU cores wait_timeout

The number of seconds to wait before closing dead connection

wait_interactive_timeout

The time the server waits for persistent connection

Page 51: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

MySQL Tuning – Example Always play around with the settings, testing with benchmarks Apache Benchmark (AB)key_buffer = 250Mmax_allowed_packet = 16Mthread_stack = 128Kthread_cache_size = 128max_connections = 1000table_cache ` = 6000thread_concurrency = 16

wait_timeout = 100interactive_timeout = 100connect_timeout = 10

key_buffer = 250Mmax_allowed_packet = 16Mthread_stack = 128Kthread_cache_size = 128max_connections = 1000table_cache ` = 6000thread_concurrency = 16

wait_timeout = 100interactive_timeout = 100connect_timeout = 10

Page 52: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

MySQL Tuning – Example

join_buffer = 2Msort_buffer_size = 2Mread_buffer_size = 2Mread_rnd_buffer_size = 768Kmyisam_sort_buffer_size = 64M

query_cache_limit = 4Mquery_cache_size = 128Mquery_cache_type = 1

join_buffer = 2Msort_buffer_size = 2Mread_buffer_size = 2Mread_rnd_buffer_size = 768Kmyisam_sort_buffer_size = 64M

query_cache_limit = 4Mquery_cache_size = 128Mquery_cache_type = 1

Page 53: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезания

ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGap

free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиранеНиколай Костов - блог за програмиранеC# курс, програмиране, безплатно

?

? ? ??

?? ?

?

?

?

??

?

?

? ?

Questions?

?

Advanced PHP, Apache and MySQL

http://academy.telerik.com

Page 54: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Exercises1. Configure a virtual host www.music.bg in the Apache server to point the directory C:\TEMP\music.bg

Change the "hosts" file to register www.music.bg to be resolved as 127.0.0.1 Configure the virtual host Configure the directory and enable browsing its files

2. Configure SSL in Apache to allow opening https://www.music.bg Use self-signed certificate created with openssl

Page 55: 15. Advanced PHP-Apache-MySQL - PHP & MySQL Web Development

Exercises3. Configure /admin directory to require authentication

4. Configure mod_rewrite to rewrite requests like http://www.music.bg/Black%20Lab/That %20night as http://www.music.bg/song.php?artist=Black%20Lab&name=Black%20Lab Create song.php script to display the song name and artist


Recommended