{"id":139,"date":"2025-02-22T04:48:34","date_gmt":"2025-02-22T04:48:34","guid":{"rendered":"https:\/\/kingstatue.com\/?p=13"},"modified":"2025-02-22T04:48:34","modified_gmt":"2025-02-22T04:48:34","slug":"how-to-install-and-configure-wordpress-and-mysql-on-aws-lightsail-ubuntu-instance","status":"publish","type":"post","link":"https:\/\/www.kingstatue.com\/?p=139","title":{"rendered":"How to install and configure wordpress and MySQL on AWS Lightsail Ubuntu instance"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Step-by-step guide for installing and configuring WordPress and MySQL on an AWS Lightsail Ubuntu instance:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 1: Create an AWS Lightsail Instance<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Log in to AWS Lightsail<\/strong>: <a href=\"https:\/\/lightsail.aws.amazon.com\">https:\/\/lightsail.aws.amazon.com<\/a><\/li>\n\n\n\n<li>Click <strong>Create Instance<\/strong>.<\/li>\n\n\n\n<li>Choose <strong>Linux\/Unix<\/strong> as the platform.<\/li>\n\n\n\n<li>Select <strong>Ubuntu 22.04 LTS<\/strong> (or latest version).<\/li>\n\n\n\n<li>Choose a plan (at least <strong>1GB RAM<\/strong> for better performance).<\/li>\n\n\n\n<li>Name your instance (e.g., wordpress-server).<\/li>\n\n\n\n<li>Click <strong>Create Instance<\/strong>.<\/li>\n\n\n\n<li>Wait for the instance to launch.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 2: Connect to the Lightsail Ubuntu Instance<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>In the <strong>Lightsail Dashboard<\/strong>, select your instance.<\/li>\n\n\n\n<li>Click <strong>Connect using SSH<\/strong> (or use your terminal: ssh ubuntu@your-instance-ip).<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 3: Update and Install Required Packages<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Run the following commands to update the system and install dependencies:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo apt update &amp;&amp; sudo apt upgrade -y<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo apt install apache2 mysql-server php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip unzip -y<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 4: Configure MySQL Database<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Secure the MySQL installation:<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">sudo mysql_secure_installation<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Set a root password: <strong>Yes<\/strong><\/li>\n\n\n\n<li>Remove anonymous users: <strong>Yes<\/strong><\/li>\n\n\n\n<li>Disallow remote root login: <strong>Yes<\/strong><\/li>\n\n\n\n<li>Remove test database: <strong>Yes<\/strong><\/li>\n\n\n\n<li>Reload privilege tables: <strong>Yes<\/strong><\/li>\n\n\n\n<li>Log in to MySQL:<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">sudo mysql -u root -p<\/p>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Create a database and user for WordPress:<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">CREATE DATABASE wordpress_db;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CREATE USER &#8216;wp_user&#8217;@&#8217;localhost&#8217; IDENTIFIED BY &#8216;your_password&#8217;;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GRANT ALL PRIVILEGES ON wordpress_db.* TO &#8216;wp_user&#8217;@&#8217;localhost&#8217;;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">FLUSH PRIVILEGES;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">EXIT;<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 5: Install WordPress<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Download and extract WordPress:<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">cd \/var\/www\/html<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo rm -rf index.html<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo wget https:\/\/wordpress.org\/latest.tar.gz<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo tar -xvzf latest.tar.gz<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo mv wordpress\/* .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo rm -rf wordpress latest.tar.gz<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Set correct permissions:<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">sudo chown -R www-data:www-data \/var\/www\/html<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo chmod -R 755 \/var\/www\/html<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 6: Configure WordPress<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Copy the sample config file:<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">sudo cp \/var\/www\/html\/wp-config-sample.php \/var\/www\/html\/wp-config.php<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Edit the wp-config.php file:<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">sudo nano \/var\/www\/html\/wp-config.php<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Update these lines with your database details:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">define(&#8216;DB_NAME&#8217;, &#8216;wordpress_db&#8217;);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">define(&#8216;DB_USER&#8217;, &#8216;wp_user&#8217;);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">define(&#8216;DB_PASSWORD&#8217;, &#8216;your_password&#8217;);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">define(&#8216;DB_HOST&#8217;, &#8216;localhost&#8217;);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Save and exit (CTRL+X, Y, ENTER).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 7: Configure Apache for WordPress<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Create a new Virtual Host file:<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">sudo nano \/etc\/apache2\/sites-available\/wordpress.conf<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&lt;VirtualHost *:80&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp; ServerAdmin admin@yourdomain.com<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp; DocumentRoot \/var\/www\/html<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp; ServerName yourdomain.com<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp; ServerAlias www.yourdomain.com<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp; &lt;Directory \/var\/www\/html&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AllowOverride All<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp; &lt;\/Directory&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp; ErrorLog ${APACHE_LOG_DIR}\/error.log<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp; CustomLog ${APACHE_LOG_DIR}\/access.log combined<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&lt;\/VirtualHost&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Save and exit (CTRL+X, Y, ENTER).<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Enable the new site and required modules:<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">sudo a2ensite wordpress.conf<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo a2enmod rewrite<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo systemctl restart apache2<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 8: Complete WordPress Installation<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Open your browser and visit:<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">http:\/\/your-instance-public-ip<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Follow the WordPress installation wizard:\n<ul class=\"wp-block-list\">\n<li>Choose your language.<\/li>\n\n\n\n<li>Enter database details.<\/li>\n\n\n\n<li>Set up admin username and password.<\/li>\n\n\n\n<li>Click <strong>Install WordPress<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 9: Secure Your WordPress Site (SSL)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To install a <strong>Let&#8217;s Encrypt SSL certificate<\/strong>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo apt install certbot python3-certbot-apache -y<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo certbot &#8211;apache<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enter your domain name when prompted.<\/li>\n\n\n\n<li>Certbot will automatically configure SSL.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Renew SSL automatically:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo certbot renew &#8211;dry-run<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 10: Enable Firewall (Optional)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Run the following commands to allow traffic:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo ufw allow OpenSSH<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo ufw allow &#8220;Apache Full&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo ufw enable<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Step 11: Access WordPress Admin Panel<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Go to:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">http:\/\/yourdomain.com\/wp-admin<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Log in with the username and password you set during installation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Step-by-step guide for installing and configuring WordPress and MySQL on an AWS Lightsail Ubuntu instance:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-139","post","type-post","status-publish","format-standard","hentry","category-wordpress"],"_links":{"self":[{"href":"https:\/\/www.kingstatue.com\/index.php?rest_route=\/wp\/v2\/posts\/139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kingstatue.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kingstatue.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kingstatue.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kingstatue.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=139"}],"version-history":[{"count":0,"href":"https:\/\/www.kingstatue.com\/index.php?rest_route=\/wp\/v2\/posts\/139\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.kingstatue.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kingstatue.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kingstatue.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}