Introduction
Host your Application in the Amazon Cloud, If you’re a PHP developer constructing a public-facing Web software, there are a number of appropriate motives why the cloud should be on your radar.
It’s especially scalable, permitting you to quickly scale up in case you software seems to be successful.
It’s value-green, due to the fact you simplest pay for the assets – bandwidth, CPU cycles, memory – you use.
And it’s relaxed, due to the fact cloud providers have invested a extremely good deal of time and concept into ring-fencing packages and consumer statistics.
However, if you’re new to the cloud or do maximum of your improvement domestically, getting your PHP utility out of your local XAMPP container to the cloud may be a bit difficult.
That’s wherein this educational is available in. Over the following couple of pages, I’ll walk you, step by step, via the manner of deploying a PHP/MySQL application jogging in your local XAMPP server, to a cloud server running Bitnami’s LAMP Stack. Keep studying!
What You Will Need
Before we begin, a few brief assumptions. This educational assumes which you have a XAMPP set up with a operating PHP/MySQL utility.
It additionally assumes that you’re familiar with the MySQL command-line patron and which you have a working know-how of moving files between servers using FTP.
If you don’t have a custom PHP/MySQL utility handy, use the instance utility included with this academic: it’s a easy to-do listing, created with Twitter Bootstrap and PHP. You can download it from here.
Now, if you’re new to the cloud, you is probably wondering what Amazon Web Services and Bitnami are.
Very briefly, Amazon Web Services is a cloud platform, which permits you to easily create Windows and Linux digital servers on line.
Bitnami affords pre-packaged server photos for these cloud servers, so you can emerge as efficient with them the moment they arrive on line.
In short, Amazon provides the cloud infrastructure, and Bitnami gives the server snap shots and software.
And since both Amazon and Bitnami have a loose tier, you may run and manage a full-featured PHP server at no cost for 1 yr.
For this academic, I’ll be the usage of the Bitnami LAMP Stack, that is Linux-primarily based and bundles PHP, MySQL and Apache. Together with key applications and components like phpMyAdmin, SQLite, Memcache, OpenSSL, APC and cURL.
The LAMP stack also consists of a number of commonplace PHP frameworks. Such as the Zend Framework, Symfony, CodeIgniter, CakePHP, Smarty and Laravel.
To installation your software to the Amazon cloud with the Bitnami LAMP Stack, right here are the steps you’ll follow:
- Register with Amazon Web Services (AWS)
- Register with Bitnami
- Connect your AWS and Bitnami money owed
- Provision an AWS cloud server with the Bitnami LAMP Stack
- Validate the cloud server
- Deploy and take a look at your utility at the cloud server
The subsequent sections will stroll you through those steps in element.
Step 1: Register with Amazon Web Services
At the give up of this step, you may have signed up for the Amazon Web Services free tier.
Begin by means of creating an AWS account, through browsing to http://aws.Amazon.Com and clicking the “Sign Up” button on the pinnacle of the web page.
You will need an existing Amazon account to log in and sign on; in case you don’t have one, create one to proceed.
Once you’ve signed in to Amazon, sign on for AWS through providing a few fundamental touch information and your cellular smartphone quantity.
Once that’s done, proceed to the next stage by entering your credit card information.
If you’re worried about how a lot you’ll be billed for offerings, loosen up. When you first join up for AWS, you get computerized get admission to to the AWS free tier. Which entitles you to twelve months of free usage as much as positive limits.
This consists of 750 hours in line with month of free usage of Amazon EC2 micro servers, which include 2.5-three.Three GHz Intel Xeon processors. 1 GB of memory and 1 virtual center – just right for development or low-visitors website hosting.
So long as your utilization falls in the limits of the unfastened tier, your credit card will by no means be billed.
However, Amazon nonetheless wishes your credit score card facts for safety functions, to keep away from provider misuse and to confirm your identity.
Note: nYou have to completely understand the bounds of the AWS loose tier to keep away from being unduly charged for carrier utilization.
Amazon will now confirm your identification, by using making an automated call to your mobile telephone quantity and prompting you to go into the PIN number displayed on the display.
Once your identity is verified, choose the “Basic” support plan (also free) and confirm your account.
The AWS account registration machine will churn away for a minute. And you will then be redirected to a welcome web page, which includes a link to the AWS control console.
You ought to additionally get hold of an account confirmation email, which tells you that your account is right to move.
Step 2: Register with Bitnami
At the end of this step, you will have created a Bitnami account.
Host your Application in the Amazon Cloud, The next step is to create a Bitnami account. So you can launch a cloud server with Bitnami’s LAMP Stack picture.
If you have a Google, Facebook, Yahoo! Or Github account, you could use your credentials from the ones offerings with OpenID to create your Bitnami account.
If you don’t have bills with those services (otherwise you don’t need to apply them). You can use your email address and password to create a Bitnami account, as defined underneath:
- Head to the Bitnami signal-up web page.
- Enter your name and electronic mail address.
- Choose a password.
- Review and comply with the Bitnami phrases of provider.
Then, use the “Sign up” button to create your account.
Bitnami will ship you an e mail with a verification hyperlink which you’ll want to click on or browse to, to activate your account.
This will also sign you in in your Bitnami account.
Step 3: Connect your AWS and Bitnami Accounts
At the end of this step, your Bitnami Cloud Hosting account might be configured and you will be equipped to provision a cloud server.
The easiest way to set up your AWS cloud server with Bitnami’s LAMP Stack is via Bitnami Cloud Hosting. Which offers you a simple manage panel to provision, begin, prevent and test fame of your AWS cloud servers.
Host your Application in the Amazon Cloud Bitnami Cloud Hosting additionally has a unfastened tier that lets in you to set up, display and backup your AWS servers without spending a dime.
However, to use it, you need to first connect your AWS and Bitnami accounts. By using obtaining security credentials in your AWS account and saving the ones credentials in your Bitnami Cloud Hosting account.
To achieve protection credentials to your AWS account:
- Log in for your AWS account in case you’re not already logged in.
- Launch the AWS control console, by surfing to https://console.Aws.Amazon.Com/
- Click your consumer call in the pinnacle menu bar and from the resulting menu, click on “Security Credentials”.
- On the resulting page, select the “Access Keys” sub-menu and the “Create New Access Key” command.
AWS will generate a brand new key pair on your account, which you can see with the aid of selecting the “Show Access Key” command within the ensuing pop-up window.
- Note the Access Key ID and Secret Access Key.
You’re now equipped to attach AWS with Bitnami. To do this:
- Log in on your Bitnami account if you’re no longer already logged in
- Browse to https://app.Bitnamihosting.Com
- Click the “Access Console” button.
Bitnami Cloud Hosting will understand your Bitnami credentials and automatically sign you in.
The next step is to set up an administrative password to your Bitnami Cloud Hosting account and join your AWS account together with your Bitnami account.
- Click the “Dashboard” menu object inside the left sidebar menu. Then the huge green “Create a Server” button on the resulting web page.
- Since this is your first time, you’ll be prompted to enter your AWS credentials and an administrative password. You can also later access this screen from the “Clouds” menu item.
- Enter the credentials from the previous step, as well as a hard-to-guess administrative password.
The administrative password offers an additional degree of safety against misuse: you’ll need to go into it when appearing certain operations, together with growing new AWS server times. Again, ensure you observe it down for destiny reference.
Your AWS and Bitnami money owed will now be connected.
Step 4: Host your Application in the Amazon CloudProvision an AWS Cloud Server
At the stop of this step, your AWS cloud server can be strolling and you will be able to access it thru your Web browser.
To provision your AWS cloud server:
- Select “Servers” in the left sidebar menu.
- On the Server Management display, click on “New” and then “Launch Regular Server” to release a brand new server.
Define a name and area call to your AWS server. The default server configuration is a “Micro” server with Ubuntu, a thousand MB RAM and 10 GB EBS storage, that’s eligible for the AWS unfastened tier.
The Bitnami Cloud Hosting dashboard does no longer yet have the potential to locate whether or not your AWS servers are in the unfastened tier or now not, as Amazon does no longer provide an API to retrieve this information from AWS. Therefore, it calculates and presentations expected prices in your AWS cloud server as consistent with regular conventions. So long as your utilization does no longer exceed the boundaries of the AWS free tier, not anything will surely be charged on your credit card and you may appropriately forget about the envisioned fees proven in the Bitnami Cloud Hosting dashboard.
Should you desire to pay for a greater sophisticated server, you may pick out from a “Small” server (1 committed virtual middle) all of the way up to a “8xLarge” server (32 devoted digital cores) depending on the desires of your utility. For more statistics, discuss with the AWS pricing sheet.
“Micro” servers work simply pleasant for most PHP software development responsibilities.
Host your Application in the Amazon Cloud, Confirm your selection with the aid of hitting the “Build and Launch” button.
Bitnami Cloud Hosting will now begin spinning up the server. The process commonly takes a couple of minutes: a status indicator at the page gives a progress replace.
Once the cloud server has been provisioned, the fame indicator will display that it’s “jogging”. And the “Go to Application” button in the decrease panel of the dashboard will become an active link.
At this point, you need to be capable of browse to the cloud server. Either by clicking the “Go to Application” button or coming into the cloud server host call directly into your browser’s cope with bar. You ought to see a welcome web page like the one under (simply so that you recognise, it’s served up via Apache, which is a part of the Bitnami LAMP Stack).
Host your Application in the Amazon Cloud, Once the server is provisioned, you want to acquire the security credentials you may need to begin the use of it. To do this:
- Go back in your Bitnami Cloud Hosting dashboard and within the “Servers” phase, choose the going for walks server after which click the “Manage” button within the pinnacle menu.
- This will release the Manage Server screen. Click the “Connect” button.
In the resulting pop-up window, down load the .Ppk file which contains the SSH get admission to credentials you will want to hook up with the server. Typically, this document is called bitnami-website hosting.Ppk.
By default, Bitnami Cloud Hosting creates a consumer account named ‘person’ and an automobile-generated password while a brand new server is provisioned.
Host your Application in the Amazon Cloud, You will need this password while having access to Bitnami-provided applications (together with MySQL).
Go returned to the “Manage Server” display screen, look within the “Properties” tab in the lower panel, and show and make a note of the utility password.
At the quit of this step, you may have logged in for your cloud server and established that PHP, MySQL and phpMyAdmin are operating successfully.
You can now connect to the cloud server and take a look at PHP to make certain it’s operating successfully and has all the extensions you want. The easiest manner to do this is with PuTTY, a unfastened SSH customer for Windows and UNIX systems.
- Download the PuTTY ZIP archive from its internet site.
- Extract the contents to a folder on your laptop.
- Double-click the putty.Exe report to convey up the PuTTY configuration window.
- Enter the host name of your cloud server into the “Host Name (or IP deal with)” subject, as well as into the “Saved Sessions” area.
- Click “Save” to shop the new consultation so that you can reuse it later.
- In the “Connection → SSH → Tunnels” phase, create a comfy tunnel for the phpMyAdmin utility via forwarding supply port “8888” to vacation spot port “localhost:80”.
- Click the “Add” button to add the comfortable tunnel configuration to the consultation.
In the “Connection → SSH → Auth” section, select the private key file (*.ppk) you saved in the previous step.
- In the “Connection → Data” section, enter the username ‘bitnami’ into the “Auto-login username” field.
- Go returned to the “Session” segment and store your modifications with the aid of clicking the “Save” button.
- Click the “Open” button to open an SSH consultation to the server.
- PuTTY will first ask you to confirm the server’s host key and add it to the cache. Go in advance and click “Yes” to this request.
You should now be logged in to your cloud server.
By default, the Bitnami LAMP stack consists of going for walks Apache and MySQL servers, and all the packages that come with the stack are placed inside the /choose/bitnami directory.
Your first step should be to create a phpinfo.Personal home page document inside the Apache internet server root at /decide/bitnami/apache2/htdocs listing to verify PHP’s capabilities.
shell> cd /opt/bitnami/apache2/htdocs
shell> echo "<?php phpinfo(); ?>" > phpinfo.php
Once the report has been copied, browse to http://[your-cloud-server-hostname]/phpinfo.Personal home page and also you need to see the output of the phpinfo() command.
With this, you know that your PHP installation is configured and running correctly.
Host your Application in the Amazon Cloud, You also can test that MySQL is working through launching the MySQL command-line patron at the shell spark off.
shell> mysql -u root -p
When brought on, enter the application password retrieved inside the previous step. The client have to begin up and connect to the nearby MySQL server, showing a welcome message as shown below.
You should also be able to access phpMyAdmin through the secure SSH tunnel you created, by browsing to http://127.0.0.1:8888/phpmyadmin.
To log in, use username ‘root’ with the application password from the previous step.
In case you’d want to troubleshoot errors or modify the configuration for Apache, PHP or MySQL – for example, adjusting the most add record length in PHP or changing the path to the MySQL facts directory – right here are the locations for key configuration and log files in the Bitnami LAMP Stack:
Configuration file(s) | Log file(s) | |
Apache | /opt/bitnami/apache2/conf/httpd.conf | /opt/bitnami/apache2/logs/error_log |
PHP | /opt/bitnami/php/etc/php.ini | – |
MySQL | /opt/bitnami/mysql/my.cnf | /opt/bitnami/mysql/data/mysqld.log |
Usually, you’ll want to restart your server(s) for your changes to take impact. The Bitnami LAMP Stack consists of a control script that lets you without problems prevent, start and restart Apache, MySQL and PHP. The script is positioned at /decide/bitnami/ctlscript.Sh. Call it with none arguments to restart all services:
shell> sudo /opt/bitnami/ctlscript.sh restart
Or use it to restart a selected provider most effective by passing the provider call as argument – for example ‘mysql’:
shell> sudo /opt/bitnami/ctlscript.sh restart mysql
Step 6: Deploy the XAMPP Application to the Cloud Server
At the cease of this step, your PHP/MySQL utility may be strolling within the cloud.
Your cloud server is now provisioned, secured and has a purposeful PHP/MySQL surroundings.
All that’s left is so that you can transfer your software code out of your neighborhood XAMPP surroundings to your cloud server and installation the database.
Host your Application in the Amazon Cloud, The simplest manner to switch files to the server is with FTP or SFTP. Although you may use any FTP/SFTP consumer, I like FileZilla, a go-platform, open source and function-rich patron.
Download it from the FileZilla website and install it the use of the automatic installer – it’s a short procedure, simplest requiring you to conform to the license, choose the components (the default selection is typically quality) and specify the set up listing.
Once FileZilla is set up, release it and you’ll arrive at the primary split-screen interface, one aspect for your neighborhood directories and the other for remote directories.
To hook up with the cloud server and installation your application, observe those steps:
- Use the “Edit → Settings” command to deliver up FileZilla’s configuration settings.
- Within the “Connection → SFTP” phase, use the “Add keyfile” command to pick the non-public key document for your server. FileZilla will use this non-public key to log in to the cloud server.
- Use the “File → Site Manager → New Site” command to bring up the FileZilla Site Manager, where you could installation a connection to your cloud server.
- Enter your server host name or IP address and user name.
- Select “SFTP” as the protocol and “Normal” because the logon kind.
- Use the “Connect” button to connect with the cloud server and begin an SFTP consultation.
- On the faraway server aspect of the window, alternate to the /choose/bitnami/apache2/htdocs directory
- On the neighborhood server facet of the window, change to the listing containing your software code.
- Upload your XAMPP software code to the far off directory via dragging and losing the documents from the local server to the cloud server (you may back up the original contents of the listing if you desire, by means of downloading them first).
- Once the files are transferred, log in to the server console using PuTTY.
- Create a database for the application using the MySQL command-line client (you can use phpMyAdmin if you prefer a graphical interface). For example, since the application is a to-do list, let’s call the database ‘tasks’.
mysql> CREATE DATABASE tasks;
- Follow best practices and create a separate MySQL user with privileges to access only this database.
mysql> GRANT ALL ON tasks.* TO 'tasks'@'localhost' IDENTIFIED BY 'klio89';
If required, replace database credentials for your software. Then, install the software schema in the new database (assuming you already uploaded it with the software code).
For example, you can use the following command with the MySQL command-line client:
shell> mysql -u tasks -D tasks -p < schema/tasks.sql
If you’re logged in to phpMyAdmin, you could also import the database schema out of your local XAMPP gadget.
To do this, select the “Import” tab of the phpMyAdmin dashboard, select the record containing the schema, and click “Go” to have the tables created in your selected database.
Host your Application in the Amazon Cloud, You can also research more about the use of phpMyAdmin to back up and restore databases.
Browse to your cloud server’s host name and your software need to be lively. Here are some screenshots of the example to-do list application strolling on the cloud server.
Congratulations! You’ve successfully deployed your XAMPP application in the cloud.
Understand the Bitnami Cloud Hosting Dashboard Monitoring Tools
To assist you get the most out of your cloud server, Bitnami makes a number of administrative and monitoring gear to be had.
These help you maintain song of your utility’s performance within the cloud and optimize your server and software program configuration as wished.
To see these tools in motion:
- Browse to the Bitnami Cloud Hosting dashboard and sign in if required using your Bitnami account.
- Select the “Servers” menu item.
- Select your cloud server from the resulting listing and click the “Manage” button.
- Click the “Monitoring” tab inside the decrease pane.
This tab presents an outline of CPU, reminiscence and disk utilization over the last 3 hours or 24 hours. You can also use the toolbar inside the top pane to restart, close down, delete or clone the cloud server.
You also can use the Bitnami Cloud Hosting dashboard to resize your digital server. To try this:
- Select the “Resize” button within the toolbar within the upper pane.
- Select a new “Server Type” and “Disk Size” on the resulting page.
- Click the “Resize” button at the bottom of the page.
Bitnami Cloud Hosting will resize and restart your cloud server with the new configuration.
Host your Application in the Amazon Cloud Finally, Bitnami Cloud Hosting also consists of equipment to clone and back up your servers.
- Cloning lets in you to make an genuine copy of your server so that you can test with exclusive settings without affecting the unique server. You can clone the server via clicking the “Clone” button on the server control screen.
Backups allows you to recover from accidental or malicious server failures. Backups can be performed ad-hoc or scheduled. You can backup the server by clicking the “Create Backup” button on the “Backups” tab of the server management screen.
Host your Application in the Amazon Cloud, Improve Application Performance
Web software performance issues are difficult to debug on the high-quality of times, and extra so while your server is within the cloud and jogging a pre-packaged stack. The responsiveness of your software at any given moment depends on numerous elements: server kind, community bandwidth, cloud company load, database load, caching machine in use, software code shape, question shape and various different variables.
The Bitnami LAMP Stack already makes use of the Apache Event MPM and PHP-FPM for reduced memory usage and an growth in the quantity of simultaneous requests that the server can handle (extra records). It additionally comes with the mod_pagespeed Apache module activated to rewrite pages at the fly and improve latency.
If you’re finding that your PHP/MySQL software’s overall performance isn’t always as much as scratch, right here are a few trendy hints you can don’t forget:
- The Bitnami LAMP Stack consists of APC, a famous PHP bytecode cache. Usually, while a PHP script is performed, the PHP compiler converts the script to opcodes and then executes the opcodes. APC gives a framework for opcode caching, thereby speeding up PHP packages while not having any code modifications. Make sure your APC cache has sufficient memory and an extended TTL. Read more approximately APC and how to use APC with PHP and Bitnami.
Host your Application in the Amazon Cloud, The Bitnami LAMP
- The Bitnami LAMP Stack also includes the PHP memcache extension. Memcache is a excessive-performance, distributed memory item caching device. Consider using memcache to save frequently-accessed fragments of statistics in memory as arrays, thereby reducing the burden on your MySQL database server. Read more about memcache in PHP and the way to use memcache with PHP and Bitnami.
- Turn on MySQL’s gradual query log and set MySQL’s ‘long_query_time’ variable to a low number. This helps you to tune which of your queries are acting inefficiently and regulate them, both structurally or by applying desk indexes as needed, to enhance performance. You can use gear like mysqldumpslow or mysql-slow-query-log-visualizer to parse and examine the sluggish question logs generated.
- If your application is database-heavy, you’ll benefit overall performance with the aid of giving the MySQL server greater memory. Use a device like MySQLTuner to become aware of which server parameters need tuning, and incrementally make changes in your server’s cache and buffers to enhance overall performance. If your tables are all MyISAM, disable InnoDB in your my.Cnf document to keep similarly memory.
- Unload Apache modules that you don’t need to store memory, and adjust the log stage to mistakes only.
- Minify your JavaScript code, and don’t forget using a CDN for static content like images.