appwiki:xampp

Differences

This shows you the differences between two versions of the page.


Previous revision
appwiki:xampp [2024/04/14 15:55] (current) – [configure file] ying
Line 1: Line 1:
 +====== XAMPP Quick Setup walkthrough ======
  
 +**Official Method**
 +  * download and install XAMPP
 +  * open xampp-control software, and run Apache server and SQL server
 +  * open http://localhost to make sure everything runnning
 +  * open http://localhost/phpmyadmin, to make sure database running
 +  * check password.txt in the install directory for defaut SQL server password and ftp password
 +  * now you can start work on your web project in htdoc directory under install directory
 +    * http://localhost/ is pointing to htdoc directory, so use your sub directory to separate project folders.
 +
 +**Portable Method**
 +  * download portable version, either 7z, zip, or installer version of portable
 +    * https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/5.6.21/
 +  * run setup_xampp.bat to tell XAMPP the current correct directory for its structure
 +  * run the xampp-control.exe, it will run smoothly (or run as admin)
 +
 +**Default Password for MySQL**
 +  * it is under xampp folder, password.txt file
 +
 +**Create a Database for Wordpress site**
 +  * name as wp_test01, collation as choice, create
 +====== xampp setup ======
 +Download from http://www.apachefriends.org
 +
 +click on the xampp-control application to go.
 +start web <code>xampp start apache</code>
 +start sql <code>xampp start mysql</code>
 +start web <code>xampp stop apache</code>
 +start sql <code>xampp stop mysql</code>
 +===== auto start on startup =====
 +  * windows: simple, put shortcut in windows startup folder
 +  * mac: (2 methods)
 +    * ref: http://www.kharysharpe.com/2011/04/automatically-starting-xampp-on-mac-osx-boot-up/
 +    * do shell script "sudo /Applications/xampp/xamppfiles/mampp start" password "YOUR ADMIN PWD" with administrator privileges
 +  * linux
 +
 +===== Linux LAMPP install guide=====
 +
 +in Linux, extract the LAMPP with sudo, or "MySQL couldn't start" error will pop-up later.
 +
 +<code bash>sudo tar xvfz xampp-linux-1.7.3a.tar.gz -C /opt
 +
 +# or if you want to extract here
 +sudo tar xvfz xampp-linux-1.7.3a.tar.gz
 +</code>
 +
 +
 +
 +===== Access from local and LAN network =====
 +
 +Enter in Browser like
 +<code>ServerName.local</code>
 +or
 +<code>192.168.1.machineIP</code>
 +or
 +<code>ServerName</code>
 +===== configure file =====
 +
 +^Apache configuration |/Applications/xampp/etc/httpd.conf, \\ /Applications/xampp/etc/*.conf |
 +^Apache logs | /Applications/xampp/xamppfiles/logs/access_log, \\ /Applications/xampp/xamppfiles/logs/error_log |
 +^PHP configuration |/Applications/xampp/etc/php.ini | like upload_max_filesize |
 +^MySQL configuration |/Applications/xampp/etc/my.cnf |
 +
 +  * enable PHPZip module for php <code>\xampp\php\php.ini</code>
 +    * remove ; from <code>;extension=zip</code>
 +    * save and restart
 +====== xampp customize htdoc location path ======
 +
 +  - go to directory : xampp/apache/conf;
 +  - backup httpd.conf;
 +  - edit httpd.conf, search and replace "DocumentRoot" as following <code> 
 +# DocumentRoot "/App/xampp/htdocs"
 +DocumentRoot "/SiteDir"
 +</code>
 +  - and search and replace the <Directory "/xampp/htdocs"> configure setting as following <code>
 +# <Directory "/App/xampp/htdocs">
 +<Directory "/SiteDir">
 +</code>
 +  - server root (optional, only if yours apache server not working, just check path to apache server) <code>
 +# ServerRoot "/xampp/apache"
 +ServerRoot "/PATHTOHERE/xampp/apache"
 +</code>
 +  - to add extra directory into server alias list, means, you can ask apache server to use a short name to find other directory on your computer. 
 +    * basically, when people use url ServerName/web2/index.htm, it doesn't look at defaut root directory for web2 folder, but go /Dev/WebSys computer folder to find index.htm
 +    * here is example code to add in httpd.conf, and shut down and restart server to make it work <code>
 +<Directory "/Dev/WebSys2">
 +    Require all granted
 +</Directory>
 +Alias /web2 "/Dev/WebSys2"
 +</code>
 +    * if you want allow htaccess for url rewrite, make sure like this <code>
 +<Directory "/Dev/WebSys2">
 +    AllowOverride All
 +    Require all granted
 +</Directory>
 +Alias /web2 "/Dev/WebSys2"
 +</code>
 +    * also make your rewrite module for php is loaded in httpd.conf <code>LoadModule rewrite_module modules/mod_rewrite.so</code>
 +
 +
 +====== xampp customize local domain for a local web path ======
 +
 +Steps:
 +  - use hosts file to point the domain to local 127.0.0.1, example "test.com", also include localhost to be safe <code>
 +127.0.0.1       localhost
 +127.0.0.1       test.com
 +</code>
 +  - in xampp/apache/conf/extra/httpd-vhosts.conf, add your local domain solver "test.com", and since localhost is default domain name for root dir, be sure add it as well to use localhost as usual <code>
 +<VirtualHost *>
 +    DocumentRoot "/App_Server/xampp/htdocs/wp_site_test_com"
 +    ServerName test.com
 +    <DIRECTORY "/App_Server/xampp/htdocs/wp_site_test_com">
 +    Order allow,deny
 +    Allow from all
 +    </DIRECTORY>
 +    ServerAlias www.test.com
 +    ErrorLog "logs/test.com-error.log"
 +    CustomLog "logs/test.com-access.log" common
 +</VirtualHost>
 +<VirtualHost *>
 +    DocumentRoot "/App_Server/xampp/htdocs"
 +    ServerName localhost
 +</VirtualHost>
 +</code>
 +  - now, restart apahce server, type "test.com" should visit your local path for test.com
 +  - extra tips:
 +    - for wordpress install at that path, it will pop up ask database server setting in wordpress initial step,
 +    - since wordpress alone dont create database for itself, you need go http://localhost/phpmyadmin/ to create a database for wordpress, i would suggest name as "wpdb_test_com" with collation setting
 +    - then, continue wordpress db connection with the db name you created, default db for xampp is root/no pass. rest as default should finish wordpress initialization
 +====== xampp customize http broadcast port ======
 +  - edit xampp/apache/conf/httpd.conf;
 +  - search and replace "80" to your port number <code>ServerName localhost:80</code>
 +  - and search and replace "80" in <code>Listen 80</code>
 +
 +====== Security and Site Protection ======
 +
 +===== Blocking "Domain Smacks" in Apache =====
 +
 +ref: http://blog.foxxtrot.net/2010/02/blocking-domain-smacks-in-apache.html <code>RewriteEngine on
 +RewriteCond %{HTTP_REFERER} smackingdomain.com
 +RewriteRule .+ [F] # Return 403 Forbidden
 +RewriteRule .+ http://jokestersite.com/ [R] # Redirect back on the joker. </code>
 +
 +===== Set Security for XAMPP =====
 +
 +  * run command in terminal: <code>xampp security</code>
 +
 +ref: http://robsnotebook.com/xampp-builtin-security
 +
 +====== MySQL Server Guide ======
 +
 +  * MySQL database server configuration is stored in the "mysql" database inside itself.
 +    * the server user is stored in DB: "mysql" > Table: "user"
 +  * phpmyadmin control panel system is a front interface for the database server
 +
 +^ tables ^ MySQL access control ^^^
 +^ user | host name + user name + password | select,insert,update,delete rights | which means knowing user and pass wont grant access, \\ and possible to set local only access from its php server; \\ also it mean sets foreign server call possible with maybe coincided names |
 +^ db | database level access control |
 +^ table priv | table level access control |
 +^ columns_priv | column level access control |
 +^ procs_priv | procs access control |
 +
 +
 +
 +  * <code sql>SHOW GRANTS FOR 'joe'@'office.example.com';</code>
 +
 +  * limits of MyServer server:
 +    * A password applies globally to an account. You cannot associate a password with a database, table
 +
 +
 +====== Error and Solution======
 +
 +  * error: Apache cant start,
 +    * solution 1: run setup_xampp.bat after copy, to auto set root directory correctly
 +    * solution 2: make sure the website folder that defined in \xampp\apache\conf\httpd.conf portion DocumentRoot directory exists.
 +      * also check httpd.conf and change to 82 if 80 port in use.
 +    * solution 3: just go to \xampp\apache\logs folder, and delete all 4 files, so it can generate itself again.
 +    * solution 4: run with admin rights
 +  * error: MySQL cant start, access right
 +    * solution: delete the file that has no access right
 +  * error: php time out, especially when do install type of script
 +    * go php.ini configure file, and search and update "max_execution_time = 300" (5min)
 +  * error: upload failed
 +    * make sure php.ini allow the big size upload, search and replace these 2 line in php.ini from configure button menu <code>upload_max_filesize = 50M
 +post_max_size = 50M</code>