mac osx10.9.* comes with apache, php
Apache Configuration
1- Start
sudo apachectl start
After startup, visit http://localhost/ and you should see the "It works!" initial page,
vi /etc/apache2/httpd.conf
You can see the following code snippet at line 197:
<Directory "/Library/WebServer/Documents"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. # Options Indexes FollowSymLinks MultiViews # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. # Order allow,deny Allow from all </Directory>
cd /Library/WebServer/Documents
It Works content is in index.html.en This is the default page of apache
2- Stop/Restart
sudo apachectl stop
sudo apachectl restart
3- Create a personal site directory
cd ~
mkdir Sites
echo "helloWorld" >> index.html
sudo apachectl restart
Then visit http://localhost/~shelley/ and you should be able to see the initial page of the personal directory of "helloWorld" (Note: ~shelley needs to be replaced with ~your username )
If failed
sudo vi /etc/apache2/users/Guest.conf
<Directory "<span>/Users/shelley/Sites</span>"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory>
Why must it be the Sites directory name?
vi /etc/apache2/extra/httpd-userdir.conf
Line 10
# Settings for user home directories # # Required module: mod_userdir # # UserDir: The name of the directory that is appended onto a user's home # directory if a ~user request is received. Note that you must also set # the default access control for these directories, as in the example below. # UserDir Sites # # Users might not be in /Users/*/Sites, so use user-specific config files. # Include /private/etc/apache2/users/*.conf <IfModule bonjour_module> RegisterUserSite customized-users </IfModule>
4- Start virtual host
By default, Apache’s virtual host function is turned off
sudo vi /etc/apache2/httpd.conf
Release comments
#Virtual hosts #Include /private/etc/apache2/extra/httpd-vhosts.conf
Modify file
sudo vi /etc/apache2/extra/httpd-vhosts.conf
Similar to the following
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot "/Users/shelley/Sites" ServerName www.shelleymyl.com ErrorLog "/Users/shelley/Sites/log/error.log" CustomLog "/Users/shelley/Sites/log/access.log" common <Directory /> Options Indexes FollowSymLinks MultiViews AllowOverride None Order deny,allow Allow from all </Directory> </VirtualHost>
5- URL forwarding
Open httpd.conf first and make sure the following two lines are not commented out:
LoadModule proxy_module libexec/apache2/mod_proxy.so LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so
Then add
at the end of httpd.confProxyPass /HelloWorldApp http://localhost:8080/HelloWorldApp/<br />ProxyPassReverse /HelloWorldApp http://localhost:8080/HelloWorldApp/
Accessing http://localhost/HelloWorldApp, http://ip/HelloWorldApp, http://www.shelleymyl.com/HellpWorldApp in this way is equivalent to accessing http://localhost:8080/HelloWorldApp
6- Port Forwarding
Suppose there is an application http://x.x.x.x:8080/ on the server. If you want to access it directly through a domain name like http://www.shelleymyl.com, you need to do port forwarding and still open httpd.conf
LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
On the basis of "5. URL forwarding", open these two items
Then modify
sudo vi /etc/apache2/extra/httpd-vhosts.conf
NameVirtualHost *:80 <VirtualHost *:80> ProxyPreserveHost On ServerName www.yjmyzz.com ProxyPass / http://www.yjmyzz.com:8000/ ProxyPassReverse / http://www.yjmyzz.com:8000/ ServerAdmin webmaster@localhost </VirtualHost>
This is equivalent to forwarding port 80 to port 8080
PHP Configuration
The configuration of PHP is very simple, just one thing
vi /etc/apache2/httpd.conf
LoadModule php5_module libexec/apache2/libphp5.so
Release comments
Then sudo apachectl restart to restart, create a new index.php in the Sites folder of the user directory, echo phpinfo() in it, and you can see the effect:
reference:
http://www.cnblogs.com/yjmyzz/p/3920361.html