Step-by-Step Tutorial: How to Setup Your Own e-Commerce Online Store using WooCommerce 3.4.5, Wordpress 4.9.8, and CentOS 1805 (LAMP) in Amazon AWS Cloud
From: Turritopsis Dohrnii Teo En Ming
Date: Fri Sep 28 2018 - 21:10:12 EST
Step-by-Step Tutorial: How to Setup Your Own e-Commerce Online Store
using WooCommerce 3.4.5, Wordpress 4.9.8, and CentOS 1805 (LAMP) in
Amazon AWS Cloud
Author: Mr. Turritopsis Dohrnii Teo En Ming
Country: Singapore
Date: 28th September 2018 Friday
Document Version: 1809.01
Abbreviations
=============
LAMP: Linux + Apache Web Server + MySQL/MariaDB + PHP
WAMP: Windows + Apache Web Server + MySQL/MariaDB + PHP
SECTION 1 CREATING YOUR CENTOS 7.5 (1805) LINUX INSTANCE
========================================================
001. Login to Amazon Web Services.
002. Click Services > Compute > EC2.
003. Click Network & Security > Key Pairs
004. Click Create Key Pair.
005. Enter your key pair name. Then click Create.
006. Be sure to download your private key in the form of a .PEM file.
You will need to convert it to a .PPK file later.
007. Click Instances > Instances.
008. Click Launch Instance.
009. Click AWS Marketplace.
010. Search for CentOS.
011. Select CentOS 7 (x86_64) - with Updates HVM Amazon Machine Image (AMI).
012. Click Continue.
013. Select General Purpose, t2.micro, 1 vCPU, 1 GB RAM (FREE TIER ELIGIBLE).
014. Click Next: Configure Instance Details.
015. Select Network: <Your VPC network>
016. Select Subnet: <Your subnet>
017. Click Protect against accidental termination.
018. Click Next: Add Storage.
019. Click Next: Add Tags. Click Add tag.
020. Enter Key = Name and Value = Online Store.
021. Click Next: Configure Security Group
022. Click Select an existing security group.
023. Select VS_SG (Virtual Server Security Group).
024. Click Review and Launch. Click Launch.
025. Select a key pair. Click Launch Instances.
026. Click View Instances.
027. Click Network & Security > Elastic IPs.
028. Select an unused IPv4 address.
029. Click Actions > Associate address.
030. Select the Online Store instance.
031. Click Allow Elastic IP to be reassociated if already attached.
032. Click Associate. Click Close.
033. Login to CentOS 7.5 Linux using Putty.
SECTION 2 INSTALLING WORDPRESS 4.9.8
====================================
034. sudo yum install php php-mysql php-devel php-gd php-pecl-memcache
php-pspell php-snmp php-xmlrpc php-xml
Guide: How To Install MySQL / MariaDB on CentOS 7
Link: https://www.liquidweb.com/kb/how-to-install-mysql-mariadb-on-centos-7/
035. sudo yum -y install mariadb-server mariadb
036. sudo yum install wget
Guide: Installing WordPress: Detailed Instructions
Link: https://codex.wordpress.org/Installing_WordPress#Detailed_Instructions
037. wget https://wordpress.org/latest.tar.gz
038. tar xfvz latest.tar.gz
039. sudo passwd root
040. su -
041. systemctl start mariadb
042. systemctl enable mariadb
043. mysql
044. MariaDB [(none)]> CREATE DATABASE wordpress;
045. MariaDB [(none)]> GRANT ALL PRIVILEGES ON wordpress.* TO
"wordpress"@"localhost" IDENTIFIED BY "password";
046. MariaDB [(none)]> FLUSH PRIVILEGES;
047. MariaDB [(none)]> EXIT
048. cd /home/centos/wordpress
AFAIK Wordpress 4.9.8 cannot be installed in a subdirectory. If you
encounter a HTTP error code 500 doing so, be sure to check the Apache
Web Server error logs, that is, tail -f /var/log/httpd/error_log.
049. cp -R * /var/www/html
050. systemctl start httpd
051. systemctl enable httpd
052. sudo yum install nano
053. nano /etc/httpd/conf/httpd.conf
054. Append the following line
AddType application/x-httpd-php .php
055. systemctl restart httpd
Wordpress 4.9.8's PHP code won't execute on php-5.4.16, which is
installed by default on CentOS 7.5. It will return a HTTP error code
of 500. Install PHP-7.2.10 instead.
Guide: How to Install PHP 7 in CentOS 7
Link: https://www.tecmint.com/install-php-7-in-centos-7/
056. yum install
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
057. yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
058. yum install yum-utils
You will need minimum PHP 7.2.
059. yum-config-manager --enable remi-php72
060. yum install php php-mcrypt php-cli php-gd php-curl php-mysql
php-ldap php-zip php-fileinfo
061. php -v
PHP 7.2.10 is now installed.
062. systemctl stop httpd && systemctl start httpd
063. Go to http://<IP_address_of_eCommerce_Online_Store>
064. Click Let's go!
065. Fill in the following MySQL/MariaDB database connection information.
Database Name: wordpress
Username: wordpress
Password: password
Database Host: localhost
Table Prefix: wp_
066. Click Submit.
067. cd /var/www/html
068. nano wp-config.php
069. Copy and paste the contents of wp-config.php shown on the
Wordpress installation screen on your browser.
070. Click Run the installation.
071. Fill in the following information.
Site Title: Teo En Ming Corporation Online Store
Username: admin
Password: password
Your email: user@xxxxxxxxxxx
Uncheck Discourage search engines from indexing this site
072. Click Install wordpress.
073. Click Login.
SECTION 3 INSTALLING WOOCOMMERCE 3.4.5
======================================
Follow the WooCommerce installation guide here:
https://docs.woocommerce.com/document/installing-uninstalling-woocommerce/
074. Login to your new wordpress site.
075. Click Plugins > Add new.
076. Search for WooCommerce.
077. Click Install Now on WooCommerce by Automattic.
Installing FTP Server in CentOS 7.5.
Guide: How to Install and Configure vsftpd on CentOS 7
Link: https://www.liquidweb.com/kb/how-to-install-and-configure-vsftpd-on-centos-7/
078. sudo yum -y install vsftpd
079. sudo nano /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
080. sudo systemctl restart vsftpd
081. sudo systemctl enable vsftpd
082. sudo passwd centos
Change National Security Agency (NSA)âs SELinux mode.
083. sudo nano /etc/selinux/config
SELINUX=permissive
084. reboot
085. su -
086. echo 'allow_writeable_chroot=YES' >> /etc/vsftpd/vsftpd.conf
087. systemctl restart vsftpd
088. Go back to WooCommerce installation page on your browser.
089. Fill in the Connection Information.
Hostname: <IP address of e-Commerce Online Store>
FTP Username: ftpuser
FTP Password: password
Connection type: FTP
090. Click Proceed.
Installation failed: Unable to locate WordPress content directory (wp-content).
To resolve this issue, see
https://wordpress.stackexchange.com/questions/206022/unable-to-locate-wordpress-content-directory-wp-content
091. cd /var/www/html
092. nano wp-config.php
Append the following lines
if(is_admin()) {
add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
define( 'FS_CHMOD_DIR', 0751 );
}
093. Go back to WooCommerce installation page.
094. Fill in the Connection Information.
Hostname: <IP address of e-Commerce Online Store>
FTP Username: ftpuser
FTP Password: password
Connection type: FTP
095. Click Proceed.
WooCommerce will be installed.
096. Click Activate.
097. Click Run the Setup Wizard.
098. WooCommerce Store setup page:
Where is your store based? Singapore
Address: Singapore
City: Singapore
Postcode/ZIP: 123456
What currency do you accept payments in? Singapore dollar ($ / SGD)
What type of products do you plan to sell? I plan to sell both
physical and digital products
Check I will also be selling products or services in person.
Check Help WooCommerce improve with usage tracking.
099. Click Let's go!
100. WooCommerce Payment page:
Stripe: Enabled
Click Create a new Stripe account for me
Paypal: Enabled
Click Accept payments without linking a PayPal account
Expand Offline Payments.
Check Payments: Enabled
Bank transfer (BACS) payments: Enabled
Cash on delivery: Enabled
101. Click Continue.
102. WooCommerce Shipping page:
Shipping Zone
Singapore: Flat Rate
Cost: $5
Locations not covered by your other zones: Flat Rate
Cost: $5
Weight unit: kg
Dimension unit: cm
103. Click Continue.
104. Recommended for All WooCommerce Stores page:
Storefront Theme: Enabled
MailChimp: Enabled
105. Click Continue.
106. Click Continue with Jetpack.
107. Create an account to set up Jetpack
Your email address: user@xxxxxxxxxxx
Choose a username: jetpackuser
Choose a password: password
108. WooCommerce Ready! page:
109. Click Create a Product
SECTION 4 INSTALLING MOD_SSL TO SERVE SECURE WEB PAGES
=========================================================
110. sudo yum -y install mod_ssl
110. sudo systemctl restart httpd
SSL is now available.
111. Go to https://<IP_address_of_eCommerce_Online_Store>/wp-admin and login.
112. On the Dashboard, click Let's go!
113. Click Publish.
114. Setup is complete.
SECTION 5 CREATING DNS HOST RECORD
===================================
SECTION 5.1 CPANEL
==================
115. Login to your cpanel.
116. Click DNS Functions > Edit DNS Zone.
117. Choose a zone to edit. Click Edit.
118. On the Add New Entries Below this Line section, fill in the
following information:
store.example.com.
Select A record
IPv4 address: <IP address of e-Commerce Online Store>
119. Click Save.
120. Repeat Steps 116 to 119 for other DNS Zones.
121. Click DNS Functions > Synchronize DNS Records
122. Select Synchronize all zones to all servers
123. Click Synchronize.
Error: DNS Records failed to synchronize! I will need to investigate
further why the cPanel virtual server failed to synchronize DNS
records with the 2 name servers.
SECTION 5.2 WINDOWS SERVER 2019 ACTIVE DIRECTORY DNS SERVER
===========================================================
115. Login to your Windows Server 2019 Domain Controller.
116. Under Server Manager, click Tools > DNS.
117. Click Forward Lookup Zones > EXAMPLE.COM
118. Right click, select New Host (A or AAAA)...
Name (uses parent domain name if blank):
store
Fully qualified domain name (FQDN):
EXAMPLE.COM
IP address: <IP address of e-Commerce Online Store>
119. Click Add Host. Click Done.
120. Right Click, select Reload. Click Yes.
SECTION 6 WORDPRESS Address Settings
====================================
6.1 Go to https://store.example.com/wp-admin and login.
6.2 Click Settings > General Settings.
WordPress Address (URL): https://store.example.com
Site Address (URL): https://store.example.com
6.3 Click Save Changes
SECTION 7 Purchase and Install SSL Certificate
======================================
7.1 Please remember to purchase and install SSL certificate in your
Apache web server! There are free 90-day SSL certificates available.
All done!
I have just completed setting up my Teo En Ming Corporation Online
Store. Have you done yours?
If all of these sound too technical and complicated for you, I may be
able to help you in setting up your very own e-Commerce Online Store!
===BEGIN SIGNATURE===
Turritopsis Dohrnii Teo En Ming's Academic Qualifications as at 30 Oct 2017
[1] https://tdtemcerts.wordpress.com/
[2] http://tdtemcerts.blogspot.sg/
[3] https://www.scribd.com/user/270125049/Teo-En-Ming
===END SIGNATURE===