This is a sample e-commerce application built for learning purposes.
Here’s how to deploy it on CentOS systems:
sudo yum install -y firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl status firewalld
sudo yum install -y mariadb-server
sudo vi /etc/my.cnf
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
$ mysql
MariaDB > CREATE DATABASE ecomdb;
MariaDB > CREATE USER 'ecomuser'@'localhost' IDENTIFIED BY 'ecompassword';
MariaDB > GRANT ALL PRIVILEGES ON *.* TO 'ecomuser'@'localhost';
MariaDB > FLUSH PRIVILEGES;
ON a multi-node setup remember to provide the IP address of the web server here:
'ecomuser'@'web-server-ip'
Create the db-load-script.sql
cat > db-load-script.sql <<-EOF
USE ecomdb;
CREATE TABLE products (id mediumint(8) unsigned NOT NULL auto_increment,Name varchar(255) default NULL,Price varchar(255) default NULL, ImageUrl varchar(255) default NULL,PRIMARY KEY (id)) AUTO_INCREMENT=1;
INSERT INTO products (Name,Price,ImageUrl) VALUES ("Laptop","100","c-1.png"),("Drone","200","c-2.png"),("VR","300","c-3.png"),("Tablet","50","c-5.png"),("Watch","90","c-6.png"),("Phone Covers","20","c-7.png"),("Phone","80","c-8.png"),("Laptop","150","c-4.png");
EOF
Run sql script
sudo mysql < db-load-script.sql
sudo yum install -y httpd php php-mysqlnd
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --reload
Change DirectoryIndex index.html
to DirectoryIndex index.php
to make the php page the default page
sudo sed -i 's/index.html/index.php/g' /etc/httpd/conf/httpd.conf
sudo systemctl start httpd
sudo systemctl enable httpd
sudo yum install -y git
sudo git clone https://github.com/kodekloudhub/learning-app-ecommerce.git /var/www/html/
Create and Configure the .env
File
Create an .env
file in the root of your project folder.
```sh cat > /var/www/html/.env «-EOF DB_HOST=localhost DB_USER=ecomuser DB_PASSWORD=ecompassword DB_NAME=ecomdb EOF
Update index.php
Update the index.php
file to load the environment variables from the .env
file and use them to connect to the database.
```php <?php // Function to load environment variables from a .env file function loadEnv($path) { if (!file_exists($path)) { return false; }
$lines = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
if (strpos(trim($line), '#') === 0) {
continue;
}
list($name, $value) = explode('=', $line, 2);
$name = trim($name);
$value = trim($value);
putenv(sprintf('%s=%s', $name, $value));
}
return true; }
// Load environment variables from .env file loadEnv(DIR . ‘/.env’);
// Retrieve the database connection details from environment variables $dbHost = getenv(‘DB_HOST’); $dbUser = getenv(‘DB_USER’); $dbPassword = getenv(‘DB_PASSWORD’); $dbName = getenv(‘DB_NAME’);
?>
ON a multi-node setup, remember to provide the IP address of the database server in the .env file.
Test
curl http://localhost