====== 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 xampp start apache start sql xampp start mysql start web xampp stop apache start sql xampp stop mysql ===== 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. 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 ===== Access from local and LAN network ===== Enter in Browser like ServerName.local or 192.168.1.machineIP or ServerName ===== 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 \xampp\php\php.ini * remove ; from ;extension=zip * 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 # DocumentRoot "/App/xampp/htdocs" DocumentRoot "/SiteDir" - and search and replace the configure setting as following # - server root (optional, only if yours apache server not working, just check path to apache server) # ServerRoot "/xampp/apache" ServerRoot "/PATHTOHERE/xampp/apache" - 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 Require all granted Alias /web2 "/Dev/WebSys2" * if you want allow htaccess for url rewrite, make sure like this AllowOverride All Require all granted Alias /web2 "/Dev/WebSys2" * also make your rewrite module for php is loaded in httpd.conf LoadModule rewrite_module modules/mod_rewrite.so ====== 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 127.0.0.1 localhost 127.0.0.1 test.com - 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 DocumentRoot "/App_Server/xampp/htdocs/wp_site_test_com" ServerName test.com Order allow,deny Allow from all ServerAlias www.test.com ErrorLog "logs/test.com-error.log" CustomLog "logs/test.com-access.log" common DocumentRoot "/App_Server/xampp/htdocs" ServerName localhost - 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 ServerName localhost:80 - and search and replace "80" in Listen 80 ====== Security and Site Protection ====== ===== Blocking "Domain Smacks" in Apache ===== ref: http://blog.foxxtrot.net/2010/02/blocking-domain-smacks-in-apache.html RewriteEngine on RewriteCond %{HTTP_REFERER} smackingdomain.com RewriteRule .+ [F] # Return 403 Forbidden RewriteRule .+ http://jokestersite.com/ [R] # Redirect back on the joker. ===== Set Security for XAMPP ===== * run command in terminal: xampp security 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 | * SHOW GRANTS FOR 'joe'@'office.example.com'; * 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 upload_max_filesize = 50M post_max_size = 50M