<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lyn Muldrow</title>
    <description>The latest articles on DEV Community by Lyn Muldrow (@lynmuldrow_93).</description>
    <link>https://dev.to/lynmuldrow_93</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F359716%2F7a6517c0-27b2-4270-8518-982473b84759.jpg</url>
      <title>DEV Community: Lyn Muldrow</title>
      <link>https://dev.to/lynmuldrow_93</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lynmuldrow_93"/>
    <language>en</language>
    <item>
      <title>How to Optimize WordPress on Ubuntu 20.04</title>
      <dc:creator>Lyn Muldrow</dc:creator>
      <pubDate>Wed, 30 Dec 2020 14:20:50 +0000</pubDate>
      <link>https://dev.to/digitalocean/how-to-optimize-wordpress-on-ubuntu-20-04-2e78</link>
      <guid>https://dev.to/digitalocean/how-to-optimize-wordpress-on-ubuntu-20-04-2e78</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Optimizing Wordpress installations gives the clients and individuals who use your sites the performance, speed, and flexibility they’ve come to expect with WordPress. Whether you’re managing a personal site or a suite of installations for various clients, taking the time to optimize your WordPress installations increases efficiency and performance.&lt;/p&gt;

&lt;p&gt;In this tutorial, you’ll explore how to optimize WordPress installations in a way that’s built for scale, including guidance on configuration, speed, and overall performance. &lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;This is a &lt;strong&gt;conceptual article&lt;/strong&gt; sharing different ways to approach optimization of a WordPress installation on Ubuntu 20.04. While this tutorial references the use of a managed solution via our &lt;a href="https://marketplace.digitalocean.com/apps/wordpress" rel="noopener noreferrer"&gt;WordPress 1-Click App&lt;/a&gt;, there are many different starting points, including: &lt;/p&gt;

&lt;p&gt;A &lt;a href="https://wordpress.org/hosting/" rel="noopener noreferrer"&gt;hosted solution&lt;/a&gt; providing WordPress on Ubuntu 20.04&lt;br&gt;
&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-on-ubuntu-20-04-with-a-lamp-stack" rel="noopener noreferrer"&gt;Manual installation&lt;/a&gt; on a Droplet&lt;br&gt;
A &lt;a href="https://marketplace.digitalocean.com/apps/wordpress" rel="noopener noreferrer"&gt;1-Click App&lt;/a&gt; solution providing WordPress on Ubuntu 20.04&lt;/p&gt;

&lt;p&gt;Whichever you choose, this tutorial will start with the assumption that you have or are prepared to install a fully-working WordPress installation configured with an administrative user on Ubuntu 20.04. &lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 — Consider Your Installation
&lt;/h2&gt;

&lt;p&gt;During the installation and creation of your WordPress installation there are a few variables to take into account, including the location of your potential users, the scope of your WordPress site or suite of sites, and the maintenance and security preferences set that allow your site to be continually optimized. Taking the time to dive into each thoughtfully before building out your site will save time and benefit your WordPress installation as it grows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Considering Your Site’s Potential
&lt;/h3&gt;

&lt;p&gt;The first step in optimizing your WordPress site is to have a deep understanding of how you intend to use and grow your site. Will it be one site, or a network of sites? Is your site a static or dynamic website? Answering these questions before setting up your installation can inform some of your initial decisions regarding hosting, storage size, and performance. &lt;/p&gt;

&lt;p&gt;For example, if you’d like to build a personal blog, &lt;a href="https://www.digitalocean.com/community/tutorials/web-caching-basics-terminology-http-headers-and-caching-strategies" rel="noopener noreferrer"&gt;caching and optimizing images and visual content is important to consider.&lt;/a&gt; If you intend to create a community or ecommerce site with concurrent visitors and frequently changing data, &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-a-remote-database-to-optimize-site-performance-with-mysql-on-ubuntu-18-04" rel="noopener noreferrer"&gt;considerations for server resources should be made.&lt;/a&gt; Being thoughtful about your intention for your WordPress installation from the start will guide the usefulness of security and performance tweaks made to your site, and lend to an overall more efficient installation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimizing Installation Preferences
&lt;/h3&gt;

&lt;p&gt;There are a few preferences that are important to consider while installing WordPress that can reduce latency and increase performance on your site. &lt;/p&gt;

&lt;h4&gt;
  
  
  Hosting and Included Software
&lt;/h4&gt;

&lt;p&gt;First, select a hosting provider that provides the latest &lt;a href="https://www.digitalocean.com/community/tags/wordpress" rel="noopener noreferrer"&gt;WordPress&lt;/a&gt;, &lt;a href="https://www.digitalocean.com/community/tutorials/what-is-apache" rel="noopener noreferrer"&gt;Apache&lt;/a&gt;, &lt;a href="https://www.digitalocean.com/community/tags/mysql" rel="noopener noreferrer"&gt;MySQL&lt;/a&gt;, and &lt;a href="https://www.digitalocean.com/community/tags/php" rel="noopener noreferrer"&gt;PHP&lt;/a&gt; software with firewall and SSL certificate capabilities. A reliable and modern hosting provider will give you the best start for your &lt;code&gt;LAMP&lt;/code&gt; stack installation. With shared hosting, be aware of server usage and customers per server to ensure the best performance for your site. Choosing the right hosting provider for your needs will help you prevent downtime and performance errors. &lt;/p&gt;

&lt;h4&gt;
  
  
  Location and Latency
&lt;/h4&gt;

&lt;p&gt;Be aware of the location of your servers or datacenters when starting a new WordPress installation, and choose the location that best suits the need of your site and general location of your visitors and users. Latency, the time it takes for data to be transmitted between your site and users, fluctuates based on location. The Wordpress documentation on &lt;a href="https://wordpress.com/support/stats/" rel="noopener noreferrer"&gt;site analytic tools&lt;/a&gt; explains how to track visitor location data, as well as the number of visits to your site. Having an idea from the start about where your visitors are from can help determine where to host your site and provide them with a faster browsing experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 — Consider Your Theme
&lt;/h2&gt;

&lt;p&gt;There are a wide range of available themes that can be used or customized for WordPress. Many themes can be configured with user-friendly drag and drop interfaces, integrated with custom plugins and more. When setting up your WordPress site, it’s a good idea to initially consider &lt;strong&gt;only&lt;/strong&gt; the essential features that you’ll use for the lifecycle of your site, adding more as you grow. &lt;/p&gt;

&lt;h3&gt;
  
  
  Optimizing Theme Configuration
&lt;/h3&gt;

&lt;p&gt;Starting with a lightweight theme can help your installation to load more efficiently. A theme will require fewer database calls and by keeping your site free of unnecessary code, your users will have fewer delays in site speed and performance. &lt;/p&gt;

&lt;p&gt;For any theme selected, be sure to &lt;strong&gt;turn off or disable&lt;/strong&gt; any features offered with the theme that you won’t need or use. These can be preferences offered in the &lt;strong&gt;Appearance&lt;/strong&gt; section of the WordPress dashboard, typically under &lt;em&gt;Theme Editor&lt;/em&gt; or &lt;em&gt;Customize&lt;/em&gt;. Turning off features you don’t use reduces the number of requests and calls happening to query for data in the background.&lt;/p&gt;

&lt;p&gt;While there are a number of free and paid options for WordPress themes available online, many use &lt;a href="https://wordpress.org/plugins/wp-pagebuilder/" rel="noopener noreferrer"&gt;page builders&lt;/a&gt; that add excess shortcode and unused code that will affect the performance of your site. Consider your use case when deciding whether or not to use a page builder, as they typically include a lot of extra processes that will have an impact on your site’s speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Considering Plugin Use
&lt;/h3&gt;

&lt;p&gt;WordPress plugins offer extended functionality for WordPress installations through added code that allows users to customize their installations to suit their specific needs. There are over 56,000 currently available plugins, making them an appealing way to add additional features to a WordPress site. &lt;/p&gt;

&lt;p&gt;While plugins can increase the efficiency of your site, care should be taken in selecting quality plugins that are maintained and updated regularly. Because many plugins not only add code to your site but entries to your WordPress installation’s database, using too many plugins may cause site speed issues over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 — Optimize for Security and Performance
&lt;/h2&gt;

&lt;p&gt;Once you have installed all of the plugins, widgets, and additional features you’d like to add to your WordPress installation, there are a few more optimization options to try within the WordPress dashboard that could positively impact your site’s speed and performance. &lt;/p&gt;

&lt;h3&gt;
  
  
  Tweaking WordPress Settings
&lt;/h3&gt;

&lt;p&gt;First, be sure to change your site’s login address. Because most WordPress administrative login pages end in &lt;code&gt;/wp-admin&lt;/code&gt;, this page is often prone to attacks. There are a &lt;a href="https://wordpress.org/plugins/change-wp-admin-login/" rel="noopener noreferrer"&gt;number of tools available&lt;/a&gt; that enable you to change your login URL — be sure to select the one that works best for your use case. &lt;/p&gt;

&lt;p&gt;Next, consider the &lt;strong&gt;Site Health&lt;/strong&gt; tool, located in the &lt;strong&gt;Tools&lt;/strong&gt; section of your WordPress dashboard: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.digitalocean.com%2Farticles%2FinstallWP%2Fsitehealth.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.digitalocean.com%2Farticles%2FinstallWP%2Fsitehealth.jpg" alt="picture of WordPress Site Health page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Consider the results shown, and follow the instructions found in each dropdown on the &lt;strong&gt;Status&lt;/strong&gt; tab to improve security or performance as mentioned within the tabs. &lt;/p&gt;

&lt;p&gt;Using the built-in configuration offered in the WordPress dashboard ensures that you’ve covered all of the readily available configuration tweaks for your installation. &lt;/p&gt;

&lt;h3&gt;
  
  
  Caching for Site Speed
&lt;/h3&gt;

&lt;p&gt;Caching can also help improve your WordPress site’s performance and speed. &lt;a href="https://www.digitalocean.com/community/tutorials/web-caching-basics-terminology-http-headers-and-caching-strategies" rel="noopener noreferrer"&gt;Caching&lt;/a&gt;, a core design feature of the HTTP protocol meant to minimize network traffic while improving the perceived responsiveness of the system as a whole, can be used to help minimize load times when implemented on your site. WordPress offers a number of &lt;a href="https://wordpress.org/plugins/wp-super-cache/" rel="noopener noreferrer"&gt;caching plugins&lt;/a&gt; that are helpful in maintaining a &lt;em&gt;snapshot&lt;/em&gt; of your site to serve static HTML elements, reducing the amount of PHP calls and improving page load speed. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this tutorial you explored a number of different techniques that you can use to make your WordPress installation on Ubuntu 20.04 faster and more efficient. Following the suggestions in this tutorial will help ensure that your site’s performance isn’t an issue as you grow in users and content on your site. &lt;/p&gt;

&lt;p&gt;To learn more about some of the security practices and WordPress optimization tips that are mentioned in this guide, visit our tutorial, &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-configure-secure-updates-and-installations-in-wordpress-on-ubuntu-20-04" rel="noopener noreferrer"&gt;“How To Configure Secure Updates and Installations in WordPress on Ubuntu 20.04”&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>How to Install Spaces for WordPress Solutions</title>
      <dc:creator>Lyn Muldrow</dc:creator>
      <pubDate>Wed, 30 Dec 2020 14:17:34 +0000</pubDate>
      <link>https://dev.to/digitalocean/how-to-install-spaces-for-wordpress-solutions-c22</link>
      <guid>https://dev.to/digitalocean/how-to-install-spaces-for-wordpress-solutions-c22</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/what-is-wordpress"&gt;WordPress&lt;/a&gt; is one of the most widely used &lt;a href="https://www.digitalocean.com/community/tutorials/what-is-a-content-management-system-cms"&gt;content management systems (CMS)&lt;/a&gt; in the world, making up over 33% of the web and providing technical and non-technical users alike a way to build and grow. As WordPress sites scale however, managing large sets of data and assets can sometimes surface latency errors that can affect end user load times. &lt;/p&gt;

&lt;p&gt;In this tutorial, learn how to install &lt;a href="https://www.digitalocean.com/docs/spaces/"&gt;Spaces&lt;/a&gt;, an S3-compatible object storage service that lets you store and serve large amounts of data, to optimize your WordPress site’s speed and performance. &lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;In order to complete this tutorial, you’ll need a &lt;a href="https://www.digitalocean.com/"&gt;DigitalOcean account&lt;/a&gt;, and ideally a WordPress installation on Ubuntu 20.04. There are many different starting points for your WordPress installation, including: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;a href="https://wordpress.org/hosting/"&gt;hosted solution&lt;/a&gt; providing WordPress on Ubuntu 20.04&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-on-ubuntu-20-04-with-a-lamp-stack"&gt;Manual installation&lt;/a&gt; on a Droplet&lt;/li&gt;
&lt;li&gt;A &lt;a href="https://marketplace.digitalocean.com/apps/wordpress"&gt;1-Click App&lt;/a&gt; solution providing WordPress on Ubuntu 20.04&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whichever you choose, this tutorial will start with the assumption that you have a DigitalOcean account and WordPress installation configured with an administrative user on Ubuntu 20.04. &lt;/p&gt;

&lt;h2&gt;
  
  
  Create a Space
&lt;/h2&gt;

&lt;p&gt;From your DigitalOcean control panel, click the &lt;strong&gt;Spaces&lt;/strong&gt; button, in the sidebar on the left: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TrJYHq8Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/1-edit.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TrJYHq8Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/1-edit.jpg" alt="DigitalOcean Control Panel"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you do not have pre existing Spaces created, you’ll see a button prompting you to &lt;strong&gt;create a space.&lt;/strong&gt; You can click that button and follow along. If you have an existing Spaces installation, you'll see a list of your existing Spaces. In this case, you can use the &lt;code&gt;Create&lt;/code&gt; button on the top right of the screen to create a new Space and follow the rest of this tutorial. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g9gLTuml--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g9gLTuml--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/2.jpg" alt="Spaces splash page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, you’ll make a series of choices to customize your Space. Let’s review each choice for your WordPress installation.&lt;/p&gt;

&lt;h4&gt;
  
  
  Select Datacenter Region
&lt;/h4&gt;

&lt;p&gt;Pick the datacenter region closest to your customers general location.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VeozHWrB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VeozHWrB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/3.jpg" alt="Spaces datacenter region"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Enable the CDN
&lt;/h4&gt;

&lt;p&gt;A &lt;a href="https://www.digitalocean.com/community/tutorials/using-a-cdn-to-speed-up-static-content-delivery"&gt;content delivery network (CDN)&lt;/a&gt; is a geographically distributed group of servers optimized to deliver static content to end users. This static content can be almost any sort of data, but CDNs are most commonly used to deliver web pages and their related files, streaming video and audio, and large software packages.&lt;/p&gt;

&lt;p&gt;Using a CDN with your WordPress installation can give site visitors the speed and efficiency they’ve come to expect with WordPress. Should you choose to enable the CDN, you’ll be presented with two choices: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i7DgGCzB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i7DgGCzB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/4.jpg" alt="Spaces CDN selection"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter a subdomain for your Space. For help on configuring your domain or subdomain with DigitalOcean servers, visit our tutorial, &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean-nameservers-from-common-domain-registrars"&gt;“How to Point to DigitalOcean Nameservers From Common Domain Registrars”&lt;/a&gt;. &lt;a href="https://www.digitalocean.com/docs/spaces/how-to/manage-cdn-cache/"&gt;Edge Cache TTL&lt;/a&gt; is set at 1 hour by default – feel free to change this to fit your use case. &lt;/p&gt;

&lt;h4&gt;
  
  
  Static Site Hosting
&lt;/h4&gt;

&lt;p&gt;You can use Static Site Hosting to serve your static html, images and js files. This can be helpful for WordPress installations to reduce content load time — if you decide to use it for your WordPress installation, you can access your Space via http protocol by adding a CNAME record to your DNS host. CDN custom domain cannot be used with static site hosting. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Vp5Y4UFN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Vp5Y4UFN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/5.jpg" alt="Spaces static site hosting selection"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Allowing File Listing
&lt;/h4&gt;

&lt;p&gt;File listing allows for anyone who queries to list the content of your Space. Choose whether or now to enable this setting, keeping in mind that restricting file listing only restricts access to the metadata detailing file contents. The file itself may still be visible. &lt;/p&gt;

&lt;h4&gt;
  
  
  Finalize and Create
&lt;/h4&gt;

&lt;p&gt;Add your &lt;strong&gt;unique subdomain name&lt;/strong&gt; and select the &lt;strong&gt;Project&lt;/strong&gt; that you’d like your space to be assigned to: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jC3VEgdy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jC3VEgdy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/6.jpg" alt="Spaces finalize and create selection"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If everything looks correct in your Spaces configuration, click &lt;strong&gt;Create Space&lt;/strong&gt;. You’ll be taken to your new space, once created: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hKaYV9dl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hKaYV9dl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installSpaces/7.jpg" alt="DigitalOcean Spaces Dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Add to your Space
&lt;/h2&gt;

&lt;p&gt;There are several ways to add connectivity between your WordPress installation and your new Space. &lt;/p&gt;

&lt;p&gt;If you intend to use &lt;a href="https://www.digitalocean.com/docs/spaces/"&gt;DigitalOcean Spaces&lt;/a&gt; for your WordPress media library, follow our tutorial, &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-store-wordpress-assets-on-digitalocean-spaces"&gt;“How to Store WordPress Assets on DigitalOcean Spaces”&lt;/a&gt;, to use the &lt;a href="https://wordpress.org/plugins/do-spaces-sync/"&gt;DigitalOcean Spaces Sync&lt;/a&gt; WordPress plugin to connect your installation with your new Space. &lt;/p&gt;

&lt;p&gt;To extend the speed and performance of asset delivery using your new Space, our tutorial &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-speed-up-wordpress-asset-delivery-using-digitalocean-spaces-cdn"&gt;“How to Speed Up WordPress Asset Delivery Using DigitalOcean Spaces CDN”&lt;/a&gt; shares tips and suggestions on optimizing the Spaces CDN to deliver media assets efficiently. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Using Spaces with your WordPress installation enables you to provide a secure, fast, user-focused experience for site visitors. To dive deeper into using your new Space to benefit the speed and performance of your WordPress installation, visit the following tutorials: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-store-wordpress-assets-on-digitalocean-spaces"&gt;How to Store WordPress Assets on DigitalOcean Spaces&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-speed-up-wordpress-asset-delivery-using-digitalocean-spaces-cdn"&gt;How to Speed Up WordPress Asset Delivery Using DigitalOcean Spaces CDN&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To learn more about how to optimize your &lt;a href="https://www.digitalocean.com/community/tutorials/what-is-wordpress"&gt;WordPress&lt;/a&gt; installation, visit our &lt;a href="https://www.digitalocean.com/community/tags/wordpress"&gt;complete list of resources for Wordpress.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>How To Use the WordPress One-Click Install on DigitalOcean</title>
      <dc:creator>Lyn Muldrow</dc:creator>
      <pubDate>Wed, 30 Dec 2020 14:13:41 +0000</pubDate>
      <link>https://dev.to/digitalocean/how-to-use-the-wordpress-one-click-install-on-digitalocean-5ef7</link>
      <guid>https://dev.to/digitalocean/how-to-use-the-wordpress-one-click-install-on-digitalocean-5ef7</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/what-is-wordpress"&gt;WordPress&lt;/a&gt; is one of the most popular content management and blog platforms in the world, allowing you to create and manage website content efficiently. &lt;/p&gt;

&lt;p&gt;This tutorial will share all the details you need to get your WordPress site set up using the &lt;a href="https://marketplace.digitalocean.com/apps/wordpress"&gt;WordPress 1-Click App&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Software Included
&lt;/h2&gt;

&lt;p&gt;In addition to the features installed in a regular Ubuntu 20.04 Droplet, the WordPress 1-Click image also includes the following components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/what-is-apache"&gt;&lt;strong&gt;Apache&lt;/strong&gt;&lt;/a&gt;: The most widely used web (HTTP) server.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparison-of-relational-database-management-systems"&gt;&lt;strong&gt;MySQL&lt;/strong&gt;&lt;/a&gt;: A commonly used open-source relational database.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tags/php"&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/a&gt;: PHP language support.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These components create the &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-20-04-quickstart"&gt;LAMP stack&lt;/a&gt;, a group of open source software typically installed together to enable a server to host dynamic websites like WordPress. The term &lt;code&gt;LAMP&lt;/code&gt; is an acronym that represents the configuration of a &lt;strong&gt;L&lt;/strong&gt;inux operating system with an &lt;strong&gt;A&lt;/strong&gt;pache web server, with site data stored in a &lt;strong&gt;M&lt;/strong&gt;ySQL database and dynamic content processed by &lt;strong&gt;P&lt;/strong&gt;HP.&lt;/p&gt;

&lt;p&gt;To improve security, the following additional components are included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-20-04"&gt;UFW&lt;/a&gt;: A program to simplify the management of a firewall.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.digitalocean.com/community/tutorials/how-fail2ban-works-to-protect-services-on-a-linux-server"&gt;fail2ban&lt;/a&gt;: A service that automatically updates your firewall configuration to block attackers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this tutorial, we'll create a Wordpress 1-Click Droplet, then explain how to set up your WordPress site, configuring the domain and sharing information on how to access the MySQL database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 — Creating A WordPress Droplet
&lt;/h2&gt;

&lt;p&gt;To create a Wordpress Droplet from the &lt;a href="https://marketplace.digitalocean.com/apps/wordpress"&gt;1-Click App page&lt;/a&gt;, press the &lt;strong&gt;Create WordPress Droplet&lt;/strong&gt; button:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--14QzUHNA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installWP/createdroplet.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--14QzUHNA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installWP/createdroplet.jpg" alt="Create WordPress Droplet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This takes you to the &lt;strong&gt;Create Droplets&lt;/strong&gt; page, where you can customize your settings before creating your WordPress Droplet. &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-create-your-first-digitalocean-droplet"&gt;How to Create your First Droplet&lt;/a&gt; describes each choice in detail. Below, we'll highlight key settings:&lt;/p&gt;

&lt;h4&gt;
  
  
  Choose an image:
&lt;/h4&gt;

&lt;p&gt;If not already set, you'll need to switch from the Distributions tab to the &lt;strong&gt;Marketplace&lt;/strong&gt; tab:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Me5cGvze--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installWP/chooseimage.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Me5cGvze--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installWP/chooseimage.jpg" alt="Choose image tab"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once there, &lt;strong&gt;WordPress 5.5.1 on Ubuntu 20.04&lt;/strong&gt; should be automatically selected. If not, click “WordPress 5.5.1 on Ubuntu 20.04” to select it as the image.&lt;/p&gt;

&lt;p&gt;Once the image is highlighted, you can accept the defaults or adjust settings according to your use case. We recommend the following changes:&lt;/p&gt;

&lt;h4&gt;
  
  
  Choose a plan:
&lt;/h4&gt;

&lt;p&gt;Choose the size you need here — Wordpress One-Click Droplets require 1GB of RAM or more.&lt;/p&gt;

&lt;h4&gt;
  
  
  Add block storage:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.digitalocean.com/products/block-storage/"&gt;Learn more about block storage&lt;/a&gt; and add this to your droplet based on your use case. &lt;/p&gt;

&lt;h4&gt;
  
  
  Choose a datacenter region:
&lt;/h4&gt;

&lt;p&gt;Generally, choose the data center closest to your user base.&lt;/p&gt;

&lt;h4&gt;
  
  
  Select additional options:
&lt;/h4&gt;

&lt;p&gt;We recommend selecting &lt;strong&gt;Monitoring&lt;/strong&gt;, a free service that will help you follow Droplet resource usage over time. You may also want to consider &lt;a href="https://www.digitalocean.com/community/tutorials/understanding-digitalocean-droplet-backups"&gt;enabling automated backups&lt;/a&gt;. You can enable this now or anytime in the future.&lt;/p&gt;

&lt;h4&gt;
  
  
  Choose a hostname:
&lt;/h4&gt;

&lt;p&gt;You can make it easier to identify the Droplet by naming it "WordPress," or naming it after the site you plan to host.&lt;/p&gt;

&lt;p&gt;When you've made your choices, click &lt;strong&gt;Create Droplet&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once the Droplet is created, its address will be displayed:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jFEkBqw_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/pdocs/site/control-panel/droplets/created.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jFEkBqw_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/pdocs/site/control-panel/droplets/created.png" alt="Copy address"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the address to copy it to your clipboard. In the next step, we'll use this to view the WordPress site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 — Checking the Placeholder Page
&lt;/h2&gt;

&lt;p&gt;Open a web browser and paste the Droplet's IP address into the location bar to visit your new site. Until you log in with SSH, the following page will appear:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z23LM1VS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installWP/loginssh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z23LM1VS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/installWP/loginssh.jpg" alt="Before logging in with SSH"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This security measure has been put in place to protect the initial configuration of WordPress, in which the administrative user is set up.&lt;/p&gt;

&lt;p&gt;You can safely leave the installation in this state until you are ready to configure WordPress.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 — Accessing the Droplet via SSH to Enable Configuration
&lt;/h2&gt;

&lt;p&gt;To remove the placeholder web page, you’ll first need to connect to the Droplet via SSH. Once you connect, it's important to complete the WordPress configuration promptly. Until you do, anyone who finds your site could create the administrative user and password.&lt;/p&gt;

&lt;p&gt;To begin, you’ll connect directly to the server from the command line— you’ll need to complete this task once in order to configure WordPress. If you haven't used a terminal program like SSH or PuTTY before, check out &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-connect-to-your-droplet-with-ssh"&gt;How To Connect To Your Droplet with SSH&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When you're ready, open a terminal on your computer and log into your Droplet as root (or your administrative user) via SSH with this command (substitute with your Droplet's IP address):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh &amp;lt;^&amp;gt;root&amp;lt;^&amp;gt;@&amp;lt;^&amp;gt;droplet.ip.address&amp;lt;^&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After the first successful SSH login, you're ready to set your administrative password and configure WordPress. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
You will be prompted to enter your administrative details on the terminal after logging in via SSH or temporary password. You can follow the terminal instructions to finish configuring WordPress, or use the graphical user interface configuration process that’s explained in the next step.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 4 — Configuring WordPress
&lt;/h2&gt;

&lt;p&gt;After WordPress installation has been enabled by logging into the Droplet via SSH, visit the Droplet's IP address in a web browser. You should see the following page:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jdycY7dA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/wordpress_app/wp_lang.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jdycY7dA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/wordpress_app/wp_lang.png" alt="Screenshot showing the WordPress logo and a list of language"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow the on-screen prompts to select the language, give the site a name, and configure its administrative user. Be sure to set a strong password for added security.&lt;/p&gt;

&lt;p&gt;Once you have completed the initial configuration, you can log in as the administrative user you just created and continue to set up your site.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 5 — Configuring a Domain
&lt;/h2&gt;

&lt;p&gt;To use a domain name instead of the IP address of your Droplet, follow the steps in &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean"&gt;How To Set Up a Host Name with DigitalOcean&lt;/a&gt; or set up a domain name with your own DNS provider. Either way you connect your domain name to your WordPress Droplet, once it resolves using DNS, you will need to update the WordPress configuration to use the domain.&lt;/p&gt;

&lt;p&gt;Log in to your WordPress admin panel at http://&amp;lt;^&amp;gt;DROPLET_IP_ADDRESS&amp;lt;^&amp;gt;/wp-admin using the admin account you created earlier. Click on General under Settings in the navigation bar on the left-hand side of the page. Here, you will see several options you can configure for your site. Update the WordPress Address (URL) and Site Address (URL) fields to reflect your new domain name and click Save Changes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l-Q6bLoy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/pdocs/site/control-panel/one-clicks/wordpress/wordpress-configure-domain.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l-Q6bLoy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/pdocs/site/control-panel/one-clicks/wordpress/wordpress-configure-domain.png" alt="Configure to use domain name"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can customize your site's appearance, install plugins for added functionality, or create a new post or a page.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 6 — Locating Logins and Passwords
&lt;/h2&gt;

&lt;p&gt;Additional details of your installation are provided in the MOTD (Message of the Day) which is displayed when you log into your Droplet via SSH:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-------------------------------------------------------------------------------
Welcome to DigitalOcean's One-Click WordPress Droplet.
To keep this Droplet secure, the UFW firewall is enabled.
All ports are BLOCKED except 22 (SSH), 80 (HTTP), and 443 (HTTPS).
-------------------------------------------------------------------------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you need to access your MySQL database server you can find your MySQL root user password in the &lt;code&gt;/root/.digitalocean_password&lt;/code&gt; file with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat /root/.digitalocean_password
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[secondary_label Output]
root_mysql_pass="&amp;lt;^&amp;gt;c404aed5e912278adb4EXAMPLE9782f390286d706a9c4f72&amp;lt;^&amp;gt;"
wordpress_mysql_pass="619863e454cEXAMPLE15be13d9730db5c0a52ad6a4d2491a"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the password, located inside the quotation marks on the line that begins &lt;code&gt;root_mysql_pass&lt;/code&gt;. Next run the &lt;code&gt;mysql&lt;/code&gt; command with the &lt;code&gt;-u&lt;/code&gt; flag to specify a user (root) and the &lt;code&gt;-p&lt;/code&gt; flag to be prompted for the password as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql -u root -p
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When prompted, paste in the password you copied.&lt;/p&gt;

&lt;p&gt;If you prefer to use a graphical user interface, follow the tutorial &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-on-ubuntu-18-04"&gt;How To Install and Secure phpMyAdmin on Ubuntu 18.04&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Your WordPress site should be up and running. You can enhance its security by following our &lt;a href="https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04"&gt;Initial Server Setup guide&lt;/a&gt; to give &lt;code&gt;sudo&lt;/code&gt; privileges to your user, lock down root login, and take other steps to make your Droplet ready for production.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>How to Install WordPress with LEMP on Ubuntu 20.04</title>
      <dc:creator>Lyn Muldrow</dc:creator>
      <pubDate>Wed, 30 Dec 2020 04:59:17 +0000</pubDate>
      <link>https://dev.to/digitalocean/how-to-install-wordpress-with-lemp-on-ubuntu-20-04-2c19</link>
      <guid>https://dev.to/digitalocean/how-to-install-wordpress-with-lemp-on-ubuntu-20-04-2c19</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;WordPress, one of the most popular content management systems (CMS) on the internet currently, allows users to set up flexible blogs and websites using a MySQL backend with PHP processing. WordPress has seen an incredible adoption rate among new and experienced engineers alike, and is a great choice for getting a website up and running efficiently. After an initial setup, almost all administration for WordPress websites can be done through its graphical interface— these features and more make WordPress a great choice for websites built to scale.&lt;/p&gt;

&lt;p&gt;In this tutorial, you’ll focus on getting an instance of WordPress set up on a LEMP stack (Linux, Nginx, MySQL, and PHP) for an Ubuntu 20.04 server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;In order to complete this tutorial, you’ll need access to an Ubuntu 20.04 server. To successfully install WordPress with LEMP on your server, you’ll also need to perform the following tasks before starting this tutorial:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create a &lt;code&gt;sudo&lt;/code&gt; user on your server&lt;/strong&gt;: The steps in this tutorial are using a non-root user with &lt;code&gt;sudo&lt;/code&gt; privileges.  You can create a user with &lt;code&gt;sudo&lt;/code&gt; privileges by following our &lt;a href="https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04"&gt;Ubuntu 20.04 initial server setup tutorial&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install a LEMP stack&lt;/strong&gt;: WordPress will need a web server, a database, and PHP in order to correctly function.  Setting up a LEMP stack (Linux, Nginx, MySQL, and PHP) fulfills all of these requirements.  Follow &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-20-04"&gt;this tutorial&lt;/a&gt; to install and configure this software.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;br&gt;
Rather than setting up these components yourself, you can quickly provision Ubuntu 20.04 server that already has a LEMP stack installed with &lt;a href="https://marketplace.digitalocean.com/apps/lemp"&gt;DigitalOcean's LEMP 1-click install app&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Be aware, though, that this tutorial still assumes you have an administrative &lt;code&gt;sudo&lt;/code&gt; user and an Nginx server block configured on your server. Even with a server provisioned with the LEMP 1-click app, you'll need to follow &lt;strong&gt;Steps 1&lt;/strong&gt;, &lt;strong&gt;2&lt;/strong&gt;, &lt;strong&gt;3&lt;/strong&gt;, and &lt;strong&gt;5&lt;/strong&gt; of our &lt;a href="https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04"&gt;Ubuntu 20.04 initial server setup tutorial&lt;/a&gt;. You'll also need to complete &lt;strong&gt;Step 4&lt;/strong&gt; of our guide on installing the LEMP Stack on Ubuntu 20.04 to &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-20-04#step-4-%E2%80%94-configuring-nginx-to-use-the-php-processor"&gt;configure an Nginx server block and configure Nginx to use the PHP Processor.&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Secure your site with SSL&lt;/strong&gt;: WordPress serves dynamic content and handles user authentication and authorization.  TLS/SSL is the technology that allows you to encrypt the traffic from your site so that your connection is secure.  The way you set up SSL will depend on whether you have a domain name for your site.

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;If you have a domain name,&lt;/strong&gt; the easiest way to secure your site is with Let's Encrypt, which provides free, trusted certificates.  Follow our &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04"&gt;Let's Encrypt guide for Nginx&lt;/a&gt; to set this up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you do not have a domain&lt;/strong&gt; and you’re using this configuration for testing or personal use, you can use a self-signed certificate instead.  This provides the same type of encryption, but without the domain validation.  Follow our &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-nginx-in-ubuntu-18-04"&gt;self-signed SSL guide for Nginx&lt;/a&gt; to get set up.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you are finished with setup, log in to your server as the &lt;code&gt;sudo&lt;/code&gt; user to continue.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 1 — Creating a MySQL Database and User for WordPress
&lt;/h2&gt;

&lt;p&gt;WordPress uses MySQL to manage and store site and user information. Although you already have MySQL installed, let’s create a database and a user for WordPress to use.&lt;/p&gt;

&lt;p&gt;To get started, log in to the MySQL root (administrative) account.  If MySQL is configured to use the &lt;code&gt;auth_socket&lt;/code&gt; authentication plugin (which is default), you can log in to the MySQL administrative account using &lt;code&gt;sudo&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mysql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you have changed the authentication method to use a password for the MySQL root account, use the following command instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql -u root -p
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will be prompted for the password you set for the MySQL root account.&lt;/p&gt;

&lt;p&gt;Once logged in, create a separate database that WordPress can control. You can call this whatever you would like, but we will be using &lt;code&gt;wordpress&lt;/code&gt; in this guide to keep it simple. You can create a database for WordPress by entering:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE DATABASE &amp;lt;^&amp;gt;wordpress&amp;lt;^&amp;gt; DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Every MySQL statement must end in a semi-colon (&lt;code&gt;;&lt;/code&gt;).  If you’ve encountered an error, check to make sure the semicolon is present.&lt;/p&gt;

&lt;p&gt;Next, let’s create a separate MySQL user account that we will use exclusively to operate on our new database. Creating single-purpose databases and accounts is a good idea from a management and security standpoint. We’ll use the name &lt;code&gt;wordpressuser&lt;/code&gt; in this guide — feel free to change this if you'd like.&lt;/p&gt;

&lt;p&gt;In the following command, you are going to create an account, set a password, and grant access to the database you created. Remember to choose a strong password here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
CREATE USER '&amp;lt;^&amp;gt;wordpressuser&amp;lt;^&amp;gt;'@'localhost' IDENTIFIED BY '&amp;lt;^&amp;gt;password&amp;lt;^&amp;gt;';

GRANT ALL ON &amp;lt;^&amp;gt;wordpress&amp;lt;^&amp;gt;.* TO '&amp;lt;^&amp;gt;wordpressuser&amp;lt;^&amp;gt;'@'localhost';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You now have a database and user account, each made specifically for WordPress. &lt;/p&gt;

&lt;p&gt;With the database tasks complete, let’s exit out of MySQL by typing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EXIT;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The MySQL session will exit, returning you to the regular Linux shell.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 — Installing Additional PHP Extensions
&lt;/h2&gt;

&lt;p&gt;When setting up the LEMP stack, it required a very minimal set of extensions to get PHP to communicate with MySQL. WordPress and many of its plugins leverage additional PHP extensions, and you’ll use a few more in this tutorial.&lt;/p&gt;

&lt;p&gt;Let’s download and install some of the most popular PHP extensions for use with WordPress by typing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Each WordPress plugin has its own set of requirements.  Some may require additional PHP extension packages to be installed.  Check your plugin documentation to discover its PHP requirements.  If they are available, they can be installed with &lt;code&gt;apt&lt;/code&gt; as demonstrated above.&lt;/p&gt;

&lt;p&gt;When you are finished installing the extensions, restart the PHP-FPM process so that the running PHP processor can leverage the newly installed features:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl restart php7.4-fpm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You now have all of the PHP extensions needed, installed on the server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 — Configuring Nginx
&lt;/h2&gt;

&lt;p&gt;Next, let’s make a few adjustments to our Nginx server block files. Based on the prerequisite tutorials, you should have a configuration file for your site in the &lt;code&gt;/etc/nginx/sites-available/&lt;/code&gt; directory configured to respond to your server's domain name or IP address and protected by a TLS/SSL certificate.  We'll use &lt;code&gt;/etc/apache2/sites-available/&amp;lt;^&amp;gt;wordpress&amp;lt;^&amp;gt;&lt;/code&gt; as an example here, but you should substitute the path to your configuration file where appropriate.&lt;/p&gt;

&lt;p&gt;Additionally, we will use &lt;code&gt;/var/www/&amp;lt;^&amp;gt;wordpress&amp;lt;^&amp;gt;&lt;/code&gt; as the root directory of our WordPress install in this guide.  Again, you should use the web root specified in your own configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; It's possible you are using the &lt;code&gt;/etc/nginx/sites-available/default&lt;/code&gt; default configuration (with &lt;code&gt;/var/www/html&lt;/code&gt; as your web root).  This is fine to use if you're only going to host one website on this server.  If not, it's best to split the necessary configuration into logical chunks, one file per site.&lt;/p&gt;

&lt;p&gt;Open your site's server block file with &lt;code&gt;sudo&lt;/code&gt; privileges to begin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /etc/nginx/sites-available/&amp;lt;^&amp;gt;wordpress&amp;lt;^&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Within the main &lt;code&gt;server&lt;/code&gt; block, let’s add a few &lt;code&gt;location&lt;/code&gt; blocks.&lt;/p&gt;

&lt;p&gt;Start by creating exact-matching location blocks for requests to &lt;code&gt;/favicon.ico&lt;/code&gt; and &lt;code&gt;/robots.txt&lt;/code&gt;, both of which you do not want to log requests for.&lt;/p&gt;

&lt;p&gt;Use a regular expression location to match any requests for static files.  We will again turn off the logging for these requests and will mark them as highly cacheable, since these are typically expensive resources to serve. You can adjust this static files list to contain any other file extensions your site may use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[label /etc/nginx/sites-available/wordpress]
server {
    . . .

    &amp;lt;^&amp;gt;location = /favicon.ico { log_not_found off; access_log off; }&amp;lt;^&amp;gt;
    &amp;lt;^&amp;gt;location = /robots.txt { log_not_found off; access_log off; allow all; }&amp;lt;^&amp;gt;
    &amp;lt;^&amp;gt;location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {&amp;lt;^&amp;gt;
        &amp;lt;^&amp;gt;expires max;&amp;lt;^&amp;gt;
        &amp;lt;^&amp;gt;log_not_found off;&amp;lt;^&amp;gt;
    &amp;lt;^&amp;gt;}&amp;lt;^&amp;gt;
    . . .
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside of the existing &lt;code&gt;location /&lt;/code&gt; block, let’s adjust the &lt;code&gt;try_files&lt;/code&gt; list. Comment out the default setting by prepending the line with a pound sign (&lt;code&gt;#&lt;/code&gt;) and then add the highlighted line. This way,  instead of returning a 404 error as the default option, control is passed to the  &lt;code&gt;index.php&lt;/code&gt; file with the request arguments.&lt;/p&gt;

&lt;p&gt;This should look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[label /etc/nginx/sites-available/wordpress]
server {
    . . .
    location / {
        &amp;lt;^&amp;gt;#&amp;lt;^&amp;gt;try_files $uri $uri/ =404;
        &amp;lt;^&amp;gt;try_files $uri $uri/ /index.php$is_args$args;&amp;lt;^&amp;gt;
    }
    . . .
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you are finished, save and close the file.&lt;/p&gt;

&lt;p&gt;Now, let’s check our configuration for syntax errors by typing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nginx -t
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If no errors were reported, reload Nginx by typing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl reload nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, let’s download and set up WordPress.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 — Downloading WordPress
&lt;/h2&gt;

&lt;p&gt;Now that your server software is configured, let’s download and set up WordPress. For security reasons, it is always recommended to get the latest version of WordPress directly from the project's website.&lt;/p&gt;

&lt;p&gt;Change into a writable directory and then download the compressed release by typing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd /tmp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This changes your directory to the temporary folder. Then, enter the following command to download the latest version of WordPress in a compressed file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -LO https://wordpress.org/latest.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; The &lt;code&gt;-LO&lt;/code&gt; flag is used to get directly to the source of the compressed file. &lt;code&gt;-L&lt;/code&gt; ensures that fetching the file is successful in the case of redirects, and &lt;code&gt;-O&lt;/code&gt; writes the output of our remote file with a local file that has the same name. To learn more about &lt;code&gt;curl&lt;/code&gt; commands, visit &lt;a href="https://www.digitalocean.com/community/tutorials/workflow-downloading-files-curl"&gt;How to Download Files with cURL&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Extract the compressed file to create the WordPress directory structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tar xzvf latest.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will be moving these files into our document root momentarily, but before you do, let’s copy over the sample configuration file to the filename that WordPress actually reads:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, let’s copy the entire contents of the directory into our document root.  We’re using the &lt;code&gt;-a&lt;/code&gt; flag to make sure our permissions are maintained, and a dot at the end of our source directory to indicate that everything within the directory should be copied (including hidden files):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo cp -a /tmp/wordpress/. /var/www/&amp;lt;^&amp;gt;wordpress&amp;lt;^&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that our files are in place, you’ll assign ownership to the &lt;strong&gt;www-data&lt;/strong&gt; user and group.  This is the user and group that Nginx runs as, and Nginx will need to be able to read and write WordPress files in order to serve the website and perform automatic updates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chown -R www-data:www-data /var/www/&amp;lt;^&amp;gt;wordpress&amp;lt;^&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Files are now in the server's document root and have the correct ownership, but you still need to complete some additional configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5 — Setting up the WordPress Configuration File
&lt;/h2&gt;

&lt;p&gt;Next, let’s make some changes to the main WordPress configuration file.&lt;/p&gt;

&lt;p&gt;When you open the file, you’ll start by adjusting some secret keys to provide some security for our installation. WordPress provides a secure generator for these values so that you don’t have to come up with values on your own. These are only used internally, so it won't hurt usability to have complex, secure values here.&lt;/p&gt;

&lt;p&gt;To grab secure values from the WordPress secret key generator, type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -s https://api.wordpress.org/secret-key/1.1/salt/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will get back unique values that look something like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; It is important that you request unique values each time.  Do &lt;strong&gt;NOT&lt;/strong&gt; copy the values shown below!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[secondary_label Output]
define('AUTH_KEY',         '1jl/vqfs&amp;lt;XhdXoAPz9 &amp;lt;^&amp;gt;DO NOT COPY THESE VALUES&amp;lt;^&amp;gt; c_j{iwqD^&amp;lt;+c9.k&amp;lt;J@4H');
define('SECURE_AUTH_KEY',  'E2N-h2]Dcvp+aS/p7X &amp;lt;^&amp;gt;DO NOT COPY THESE VALUES&amp;lt;^&amp;gt; {Ka(f;rv?Pxf})CgLi-3');
define('LOGGED_IN_KEY',    'W(50,{W^,OPB%PB&amp;lt;JF &amp;lt;^&amp;gt;DO NOT COPY THESE VALUES&amp;lt;^&amp;gt; 2;y&amp;amp;,2m%3]R6DUth[;88');
define('NONCE_KEY',        'll,4UC)7ua+8&amp;lt;!4VM+ &amp;lt;^&amp;gt;DO NOT COPY THESE VALUES&amp;lt;^&amp;gt; #`DXF+[$atzM7 o^-C7g');
define('AUTH_SALT',        'koMrurzOA+|L_lG}kf &amp;lt;^&amp;gt;DO NOT COPY THESE VALUES&amp;lt;^&amp;gt;  07VC*Lj*lD&amp;amp;?3w!BT#-');
define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY &amp;lt;^&amp;gt;DO NOT COPY THESE VALUES&amp;lt;^&amp;gt; C-?y+K0DK_+F|0h{!_xY');
define('LOGGED_IN_SALT',   'i^/G2W7!-1H2OQ+t$3 &amp;lt;^&amp;gt;DO NOT COPY THESE VALUES&amp;lt;^&amp;gt; t6**bRVFSD[Hi])-qS`|');
define('NONCE_SALT',       'Q6]U:K?j4L%Z]}h^q7 &amp;lt;^&amp;gt;DO NOT COPY THESE VALUES&amp;lt;^&amp;gt; 1% ^qUswWgn+6&amp;amp;xqHN&amp;amp;%');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are configuration lines that you can paste directly in your configuration file to set secure keys.  Copy the output you received now.&lt;/p&gt;

&lt;p&gt;Now, open the WordPress configuration file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /var/www/&amp;lt;^&amp;gt;wordpress&amp;lt;^&amp;gt;/wp-config.php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Find the section that contains the dummy values for those settings.  It will look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[label /var/www/wordpress/wp-config.php]
. . .

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

. . .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Delete those lines and paste in the values you copied from the command line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[label /var/www/wordpress/wp-config.php]
. . .

define('AUTH_KEY',         '&amp;lt;^&amp;gt;VALUES COPIED FROM THE COMMAND LINE&amp;lt;^&amp;gt;');
define('SECURE_AUTH_KEY',  '&amp;lt;^&amp;gt;VALUES COPIED FROM THE COMMAND LINE&amp;lt;^&amp;gt;');
define('LOGGED_IN_KEY',    '&amp;lt;^&amp;gt;VALUES COPIED FROM THE COMMAND LINE&amp;lt;^&amp;gt;');
define('NONCE_KEY',        '&amp;lt;^&amp;gt;VALUES COPIED FROM THE COMMAND LINE&amp;lt;^&amp;gt;');
define('AUTH_SALT',        '&amp;lt;^&amp;gt;VALUES COPIED FROM THE COMMAND LINE&amp;lt;^&amp;gt;');
define('SECURE_AUTH_SALT', '&amp;lt;^&amp;gt;VALUES COPIED FROM THE COMMAND LINE&amp;lt;^&amp;gt;');
define('LOGGED_IN_SALT',   '&amp;lt;^&amp;gt;VALUES COPIED FROM THE COMMAND LINE&amp;lt;^&amp;gt;');
define('NONCE_SALT',       '&amp;lt;^&amp;gt;VALUES COPIED FROM THE COMMAND LINE&amp;lt;^&amp;gt;');

. . .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, let’s modify some of the database connection settings at the beginning of the file. You'll have to adjust the database name, the database user, and the associated password that was configured within MySQL.&lt;/p&gt;

&lt;p&gt;The other change you should make is to set the method that WordPress uses to write to the filesystem.  Since you’ve given the web server permission to write where it needs to, you can explicitly set the filesystem method to "direct". Failure to set this with our current settings would result in WordPress prompting for FTP credentials when we perform some actions.  Add this setting below the database connection settings, or anywhere else in the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[label /var/www/wordpress/wp-config.php]
. . .

define( 'DB_NAME', '&amp;lt;^&amp;gt;wordpress&amp;lt;^&amp;gt;' );

/** MySQL database username */
define( 'DB_USER', '&amp;lt;^&amp;gt;wordpressuser&amp;lt;^&amp;gt;' );

/** MySQL database password */
define( 'DB_PASSWORD', '&amp;lt;^&amp;gt;password&amp;lt;^&amp;gt;' );

. . .

&amp;lt;^&amp;gt;define( 'FS_METHOD', 'direct' );&amp;lt;^&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save and close the file when you’re done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6 — Completing the Installation Through the Web Interface
&lt;/h2&gt;

&lt;p&gt;Now that the server configuration is complete, you can finish up the installation through WordPress’ web interface.&lt;/p&gt;

&lt;p&gt;In your web browser, navigate to your server's domain name or public IP address:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://&amp;lt;^&amp;gt;server_domain_or_IP&amp;lt;^&amp;gt;/wordpress
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Select the language you would like to use:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZuNjvEl4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/wordpress_lemp_1604/language_selection.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZuNjvEl4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/wordpress_lemp_1604/language_selection.png" alt="WordPress language selection"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, you will come to the main setup page.&lt;/p&gt;

&lt;p&gt;Select a name for your WordPress site and choose a username (it is recommended not to choose something like "admin" for security purposes).  A strong password is generated automatically.  Save this password or select an alternative strong password.&lt;/p&gt;

&lt;p&gt;Enter your email address and select whether you want to discourage search engines from indexing your site:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--T7oprSPU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/wordpress_lemp_1604/setup_installation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T7oprSPU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/wordpress_lemp_1604/setup_installation.png" alt="WordPress setup installation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you click ahead, you will be taken to a page that prompts you to log in:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RzK6om6A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/wordpress_lemp_1604/login_prompt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RzK6om6A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/wordpress_lemp_1604/login_prompt.png" alt="WordPress login prompt"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you log in, you will be taken to the WordPress administration dashboard:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bHx0zAmm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/wordpress_lemp_1604/admin_screen.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bHx0zAmm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/wordpress_lemp_1604/admin_screen.png" alt="WordPress login prompt"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;WordPress should be installed and ready to use!  Some common next steps are to choose the permalinks setting for your posts (can be found in &lt;code&gt;Settings &amp;gt; Permalinks&lt;/code&gt;) or to select a new theme (in &lt;code&gt;Appearance &amp;gt; Themes&lt;/code&gt;).  If this is your first time using WordPress, explore the interface a bit to get acquainted with your new CMS.&lt;/p&gt;

&lt;p&gt;If you’re looking for a one-click solution to install a WordPress Droplet, learn more about the &lt;a href="https://marketplace.digitalocean.com/apps/wordpress"&gt;WordPress One-Click App&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>wordpress</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>My Resume- A DO Hackathon Submission</title>
      <dc:creator>Lyn Muldrow</dc:creator>
      <pubDate>Fri, 11 Dec 2020 20:00:00 +0000</pubDate>
      <link>https://dev.to/lynmuldrow_93/my-resume-a-do-hackathon-submission-6gp</link>
      <guid>https://dev.to/lynmuldrow_93/my-resume-a-do-hackathon-submission-6gp</guid>
      <description>&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;I built a personal portfolio using Gatsby (JS and CSS), for entry in the &lt;a href="https://dev.to/devteam/announcing-the-digitalocean-app-platform-hackathon-on-dev-2i1k"&gt;DO X DEV App Platform Hackathon&lt;/a&gt;. Although I am &lt;strong&gt;an employee of DigitalOcean&lt;/strong&gt;, I wanted to provide a resource for the dev community and new engineers learning Gatsby and thought this was a fun way to contribute. &lt;/p&gt;

&lt;h3&gt;
  
  
  Category Submission:
&lt;/h3&gt;

&lt;p&gt;I'm submitting this portfolio app for the &lt;strong&gt;Personal Portfolio&lt;/strong&gt; category of the hackathon.&lt;/p&gt;

&lt;h3&gt;
  
  
  App Link
&lt;/h3&gt;

&lt;p&gt;You can find a direct link to my portfolio page as hosted on App Platform &lt;a href="https://lyns-portfolio-gjd85.ondigitalocean.app/" rel="noopener noreferrer"&gt;here,&lt;/a&gt; or on my own domain &lt;a href="https://lyn-is-a.dev/" rel="noopener noreferrer"&gt;here.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;p&gt;Here's the source code: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FXwCqjCg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FXwCqjCg.png" alt="Picture of Github Code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the published app: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FPCQd27k.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FPCQd27k.gif" alt="Picture of Portfolio page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Description
&lt;/h3&gt;

&lt;p&gt;My Resume is a minimalist portfolio, including sections for social, projects, contact, and about content.&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Source Code
&lt;/h3&gt;

&lt;p&gt;You can find the link to the &lt;a href="https://lyn-is-a.dev/" rel="noopener noreferrer"&gt;live app's&lt;/a&gt; source code &lt;a href="https://github.com/lynmuldrow/my-resume" rel="noopener noreferrer"&gt;here.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Permissive License
&lt;/h3&gt;

&lt;p&gt;I am using an &lt;a href="https://github.com/lynmuldrow/my-resume/blob/master/LICENSE" rel="noopener noreferrer"&gt;MIT License.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;I started this personal portfolio during a job search, to brush up on Gatsby and continue my practice with writing clean code. It's based on the &lt;a href="https://github.com/gatsbyjs/gatsby-starter-hello-world" rel="noopener noreferrer"&gt;Gatsby Starter Code&lt;/a&gt;, and I initially hoped it would be used by new engineers as a starting point to create their own portfolios. I submitted my portfolio app through the hackathon to amplify and spread open source love.&lt;/p&gt;

&lt;h3&gt;
  
  
  How I built it
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Ideation and Build Process
&lt;/h4&gt;

&lt;p&gt;I started building this application by following the tutorials within the &lt;a href="https://www.gatsbyjs.com/docs/starters/" rel="noopener noreferrer"&gt;Gatsby Documentation&lt;/a&gt;, using the &lt;strong&gt;Hello World Starter&lt;/strong&gt; as the base of my app. &lt;/p&gt;

&lt;p&gt;As I started to learn more about how to create layouts and connect resources within Gatsby, I iterated on the base code and added a particle and other CSS effects, augmented the CSS a bunch, and played around with sections and content placement until I felt happy. My intention was to create a clean starting point for new developers, so I was careful not to add anything that wasn't easily identifiable in the code.&lt;/p&gt;

&lt;p&gt;After testing across browsers and within my local environment, I pushed my code up to Github: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FXwCqjCg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FXwCqjCg.png" alt="Picture of Github Code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, I popped over to &lt;a href="https://www.digitalocean.com/docs/app-platform/" rel="noopener noreferrer"&gt;App Platform&lt;/a&gt; and signed in to DigitalOcean. I clicked the &lt;strong&gt;Create&lt;/strong&gt; button near the top, and &lt;strong&gt;Apps&lt;/strong&gt;, to be taken to the App Platform. From there, I followed the steps to deploy my app. &lt;/p&gt;

&lt;h4&gt;
  
  
  Deploying to App Platform
&lt;/h4&gt;

&lt;p&gt;The first step was to connect my code: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FWcDmC2D.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FWcDmC2D.png" alt="App Platform Deployment Step 1"&gt;&lt;/a&gt; &lt;/p&gt;



&lt;p&gt;Then I selected a repository.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FhhxmkMa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FhhxmkMa.png" alt="App Platform Deployment Step 2"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Next, I named my app and made other changes: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FgtNMQ5N.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FgtNMQ5N.png" alt="App Platform Deployment Step 3"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;And configured my app.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FMvPI5ZC.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FMvPI5ZC.png" alt="App Platform Deployment Step 4"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Finally, I picked my plan: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FRphFhuo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FRphFhuo.png" alt="App Platform Deployment Step 5"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;And was off to the races.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FiWvON9N.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FiWvON9N.png" alt="App Platform Deployment Step 6"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;In the meantime, I wanted to add a personal domain, so I headed over to the &lt;strong&gt;Add Domain&lt;/strong&gt; section: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FfKECo24.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FfKECo24.png" alt="App Platform Deployment Step 7"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;And then went over to &lt;a href="https://www.namecheap.com/" rel="noopener noreferrer"&gt;Namecheap&lt;/a&gt; to change my nameservers.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FZaac7H3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FZaac7H3.png" alt="App Platform Deployment Step 8"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;When I came back, my app was deployed! It took about 15 minutes for my domain to propagate, and then I was live.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FPCQd27k.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FPCQd27k.gif" alt="Picture of Portfolio page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It was my first time using App Platform (I know, for shame right?), and as an engineer, found it to be a really fluid, enjoyable experience unlike those I've had with other hosting platforms. I'd def use App Platform to deploy other apps- I have a Rails app in mind that I'd love to work on next!&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources/Info
&lt;/h3&gt;

&lt;p&gt;Thanks for considering my app. I hope it is of use to the dev community.♥&lt;/p&gt;

</description>
      <category>dohackathon</category>
      <category>beginners</category>
      <category>portfolio</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Hacktoberfest Contributor's Guide: How To Find and Contribute to Open-Source Projects</title>
      <dc:creator>Lyn Muldrow</dc:creator>
      <pubDate>Thu, 17 Sep 2020 15:32:09 +0000</pubDate>
      <link>https://dev.to/digitalocean/hacktoberfest-contributor-s-guide-how-to-find-and-contribute-to-open-source-projects-447h</link>
      <guid>https://dev.to/digitalocean/hacktoberfest-contributor-s-guide-how-to-find-and-contribute-to-open-source-projects-447h</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Contributing to open source software is not only a way to share your skill in a particular language or tech stack, it can be a rewarding practice to share your engineering knowledge and collaborate with the developer community. Although there’s a wide range of open source projects out there waiting for your expertise, knowing where to find them and how to contribute in a way that is meaningful to the project can sometimes prove to be a barrier for interested contributors.&lt;/p&gt;

&lt;p&gt;In this Hacktoberfest-flavored guide, we’ll share some tips and information that will aid in finding and contributing meaningfully to open source projects. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.digitalocean.com%2Farticles%2Fhfest-find.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.digitalocean.com%2Farticles%2Fhfest-find.jpg" alt="Find a Project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are new to engaging with the open source community, finding a new project to contribute to may feel daunting. Here’s a few resources and ideas to help you find a project you’d love to help thrive.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Open Source?
&lt;/h2&gt;

&lt;p&gt;Open source software is software that’s freely available to use and modify, typically shared via a public repository hosting service like Github. Projects that follow the open source model usually thrive through contributions from the developer community, and may allow for redistribution depending on which &lt;a href="https://opensource.org/licenses" rel="noopener noreferrer"&gt;open source license&lt;/a&gt; they have adopted. &lt;/p&gt;

&lt;p&gt;Most successful open source projects have transparent, well-delineated processes for maintenance and improvement, which helps to build a community around them. As a result, they benefit from regular contributions from end-users, who bring with them diverse perspectives to solutions that may otherwise be overlooked.&lt;/p&gt;

&lt;p&gt;To learn more in detail about open source, visit our tutorial series, &lt;a href="https://www.digitalocean.com/community/tutorial_series/an-introduction-to-open%20source" rel="noopener noreferrer"&gt;An Introduction to Open Source&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Consider Familiar Open Source Software
&lt;/h2&gt;

&lt;p&gt;After deciding to commit your time and talent to an open source project, it’s important to take a moment to consider your passions and the type of project that resonates with you. Considering that you may spend a number of hours contributing to a specific project, you want to select a project that is not only something you’d personally use, but have a deeper interest in beyond contributing for Hacktoberfest. Think about the software you use today and consider the following: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In what tech stack and language is the software written?&lt;/li&gt;
&lt;li&gt;What are some things that could be improved when using the software? &lt;/li&gt;
&lt;li&gt;Are there any bugs or visible errors that you have the technical proficiency to address? &lt;/li&gt;
&lt;li&gt;Would you be willing to contribute to this software on an ongoing basis? &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These beginning considerations may lead you to discover that your favorite software is open source and waiting for your contribution. If that’s the case, be sure to dive into the &lt;code&gt;CONTRIBUTING.MD&lt;/code&gt; file that typically delineates how to contribute before starting. This resource will usually introduce you to the codebase, conventions, and ways to gain support when contributing to the software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beginner-Friendly Open Source Projects to Try
&lt;/h2&gt;

&lt;p&gt;If you’re just starting out, the idea of committing large amounts of code to an unfamiliar codebase could bring out the imposter syndrome that lies dormant in many of us. Luckily, each developer was a beginner once, and to foster appreciation and adoption of open source, there’s a wealth of publicly-available repositories shared by fellow developers that are beginner-friendly. Here’s a few that we suggest to browse: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/MunGell/awesome-for-beginners" rel="noopener noreferrer"&gt;Awesome For Beginners&lt;/a&gt;- A list of projects by programming language that are noted to be beginner-friendly.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/szabgab/awesome-for-non-programmers" rel="noopener noreferrer"&gt;Awesome for Non-Programmers&lt;/a&gt;- if you’re new to programming, here’s a list of projects that are language-agnostic and help foster learning.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://up-for-grabs.net/#/" rel="noopener noreferrer"&gt;Up For Grabs&lt;/a&gt;- A resource that lists projects with tasks curated for new contributors.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.firsttimersonly.com/" rel="noopener noreferrer"&gt;First Timers Only&lt;/a&gt;- A resource for beginning contributors that includes links to open source learning resources and links to beginner-friendly projects.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://habitica.com/static/front" rel="noopener noreferrer"&gt;Habitica&lt;/a&gt;- A habit-forming app that gamifies life. This open source project has detailed documentation and many ways for programmers and non-programmers alike to contribute to the project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More resources for open source projects to try can be found on our &lt;a href="https://hacktoberfest.digitalocean.com/details" rel="noopener noreferrer"&gt;Hacktoberfest Resources Page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.digitalocean.com%2Farticles%2Fhfest-contribute.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.digitalocean.com%2Farticles%2Fhfest-contribute.jpg" alt="Make a Contribution"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Identifying Meaningful Solutions for Open Source Projects
&lt;/h2&gt;

&lt;p&gt;After identifying an open source project to contribute to and diving into the resource material that the codebase offers, you may be wondering exactly what to contribute. While the way in which you contribute may vary by project, here’s some general ideas of contributions that are impactful and meaningful to the codebase and software you’re working on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix a Bug
&lt;/h3&gt;

&lt;p&gt;Bugs are small errors in code that may cause an annoyance, a blocker, or be debilitating to software. Bugs often produce unexpected results that cause incorrect responses or actions — for the sake of a software user’s experience, it’s imperative and important that a codebase is maintained to be bug-free (or as bug-free as possible). &lt;/p&gt;

&lt;p&gt;You can contribute your knowledge and expertise to ‘squash’ or solve the issue surrounding a bug. By working on bugs of varying priorities, your ability to strengthen a codebase by solving errors will grow, and you’ll have a meaningful contribution to add. &lt;/p&gt;

&lt;h3&gt;
  
  
  Propose a Feature
&lt;/h3&gt;

&lt;p&gt;Open source projects benefit from a diversity of thought. Although software may have been developed by one or more engineers with an opinion of how their product can solve an existing problem, your personal experience and outlook on how to improve a project can be invaluable. Once you’re comfortable with a project’s codebase and understand how it works for end users, try to think of a new feature that could be useful or improve the user's experience and create an issue to propose it to the project maintainers. It is important to have this conversation before investing time in writing code, since sometimes your idea might not coincide with the project's roadmap. With a positive response, it's time to implement your idea and bring that feature to production.&lt;/p&gt;

&lt;h3&gt;
  
  
  Write Some Documentation
&lt;/h3&gt;

&lt;p&gt;While there may be a wealth of technical contributions that can be made to a codebase, writing good documentation is a contribution that is often overlooked. If you’re linguistically-inclined or speak a language other than the one reflected in the initial documentation, consider making a contribution. Contributions in documentation can revolve around providing editing help to an existing doc or authoring new pages within the documentation. Refer to your project’s contribution guidelines to learn more about how to contribute this and other non-technical help.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.digitalocean.com%2Farticles%2Fhfest-submit.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.digitalocean.com%2Farticles%2Fhfest-submit.jpg" alt="Submit Your PR"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Submitting Your Pull Request via Github
&lt;/h2&gt;

&lt;p&gt;After you’ve made a meaningful contribution to an open source project’s codebase, it’s time to submit your pull request. We’ve created a helpful video that walks you through this process via Github, that can be found &lt;a href="https://www.youtube.com/watch?v=jZtECuvNRiw" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=jZtECuvNRiw" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fimg.youtube.com%2Fvi%2FjZtECuvNRiw%2F0.jpg" alt="Video: How to Submit Your First PR"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Sharing your expertise with an open source project is a rewarding experience that allows you to practice your talent, collaborate with and learn from others, and give back to the developer community. While it may initially seem daunting to find your place within the open source community, finding a project that speaks to your passions and contributing meaningfully to its codebase is a great way to start. &lt;/p&gt;

&lt;p&gt;For Hacktoberfest, while making four (4) meaningful contributions to open source projects will qualify you for prizes, we hope that you’ll continue to enjoy the benefits of contributing to the open source community well beyond the event. For more information or to learn more about open source, Git, or Github, you can visit the &lt;a href="https://hacktoberfest.digitalocean.com/details" rel="noopener noreferrer"&gt;Hacktoberfest resources page&lt;/a&gt;. Happy hacking! &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>hacktoberfest</category>
      <category>github</category>
    </item>
    <item>
      <title>Hacktoberfest Workshop Kit: How to Submit Your First Pull Request on Github</title>
      <dc:creator>Lyn Muldrow</dc:creator>
      <pubDate>Fri, 11 Sep 2020 15:31:03 +0000</pubDate>
      <link>https://dev.to/digitalocean/hacktoberfest-workshop-kit-how-to-submit-your-first-pull-request-on-github-2fab</link>
      <guid>https://dev.to/digitalocean/hacktoberfest-workshop-kit-how-to-submit-your-first-pull-request-on-github-2fab</guid>
      <description>&lt;p&gt;Are you looking to share &lt;a href="https://hacktoberfest.digitalocean.com/"&gt;Hacktoberfest&lt;/a&gt; with new learners? We've got just the resource for you!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1hRq78Cx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/f2r3h3aximtlh1sdmelp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1hRq78Cx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/f2r3h3aximtlh1sdmelp.png" alt="Hacktoberfest Workshop Kit"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/meetup_kits/hacktoberfest-workshop-kit-how-to-submit-your-first-pull-request-on-github"&gt;This workshop kit&lt;/a&gt; helps an instructor guide an audience without a background in version control or open source projects through the steps of submitting a pull request from beginning to end in roughly thirty minutes. &lt;/p&gt;

&lt;p&gt;Attendees will finish the workshop with an understanding of version control, open source, Git, and GitHub. &lt;/p&gt;

&lt;p&gt;Feel free to use this resource at your next meetup or educational Zoom meeting today, and Happy (almost) Hacktoberfest!&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>github</category>
      <category>codenewbie</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Hacktoberfest: How to Get Your First Pull Request</title>
      <dc:creator>Lyn Muldrow</dc:creator>
      <pubDate>Wed, 19 Aug 2020 17:57:21 +0000</pubDate>
      <link>https://dev.to/digitalocean/hacktoberfest-how-to-get-your-first-pull-request-301k</link>
      <guid>https://dev.to/digitalocean/hacktoberfest-how-to-get-your-first-pull-request-301k</guid>
      <description>&lt;p&gt;Hacktoberfest is open to everyone in our global community. Whether you’re new to development, a student, long-time contributor, event host, or company of any size, you can help drive growth of open source and make positive contributions to an ever-growing community. All backgrounds and skills levels are encouraged to complete the challenge.&lt;/p&gt;

&lt;p&gt;If you're new to participating in Hacktoberfest or need a refresher on submitting a pull request, we've created a helpful tutorial video that walks you through Hacktoberfest rules, Git, and Github. At the end of the tutorial, you'll have successfully submitted your first pull request. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://hacktoberfest.digitalocean.com/details?wvideo=u8up7h2m32" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fembed-fastly.wistia.com%2Fdeliveries%2Fc0b560e0d358cc3f8fb5b1a5a4c4d20f.jpg%3Fimage_play_button_size%3D2x%26image_crop_resized%3D960x540%26image_play_button%3D1%26image_play_button_color%3D1e71e7e0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hacktoberfest.digitalocean.com/details?wvideo=u8up7h2m32" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For additional resources, visit &lt;a href="https://hacktoberfest.digitalocean.com/details" rel="noopener noreferrer"&gt;the Hacktoberfest Resources page&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Happy Hacking! &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>hacktoberfest</category>
      <category>github</category>
    </item>
    <item>
      <title>How To Install Jenkins on Ubuntu 20.04</title>
      <dc:creator>Lyn Muldrow</dc:creator>
      <pubDate>Fri, 03 Jul 2020 21:10:36 +0000</pubDate>
      <link>https://dev.to/digitalocean/how-to-install-jenkins-on-ubuntu-20-04-20f3</link>
      <guid>https://dev.to/digitalocean/how-to-install-jenkins-on-ubuntu-20-04-20f3</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When faced with repetitive technical tasks, finding automation solutions that work can be a chore. With &lt;a href="https://jenkins.io/"&gt;Jenkins&lt;/a&gt;, an open-source automation server, you can efficiently manage tasks from building to deploying software. Jenkins is Java-based, installed from Ubuntu packages or by downloading and running its web application archive (WAR) file — a collection of files that make up a complete web application to run on a server.&lt;/p&gt;

&lt;p&gt;In this tutorial we’ll install Jenkins on Ubuntu 20.04, start the development server and create an administrative user to get you started in exploring what Jenkins can do. While you’ll have a development-level server ready for use at the conclusion of this tutorial, to secure this installation for production, follow the guide &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-configure-jenkins-with-ssl-using-an-nginx-reverse-proxy-on-ubuntu-18-04"&gt;How to Configure Jenkins with SSL Using an Nginx Reverse Proxy on Ubuntu 18.04&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;To follow this tutorial, you will need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One Ubuntu 20.04 server configured with a non-root sudo user and firewall by following the &lt;a href="https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04"&gt;Ubuntu 20.04 initial server setup guide&lt;/a&gt;. We recommend starting with at least 1 GB of RAM. Visit Jenkins’s “&lt;a href="https://jenkins.io/doc/book/hardware-recommendations/"&gt;Hardware Recommendations&lt;/a&gt;” for guidance in planning the capacity of a production-level Jenkins installation.&lt;/li&gt;
&lt;li&gt;Oracle JDK 11 installed, following our guidelines on &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-20-04#installing-specific-versions-of-openjdk"&gt;installing specific versions of OpenJDK on Ubuntu 20.04&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1 — Installing Jenkins
&lt;/h2&gt;

&lt;p&gt;The version of Jenkins included with the default Ubuntu packages is often behind the latest available version from the project itself. To ensure you have the latest fixes and features, use the project-maintained packages to install Jenkins.&lt;/p&gt;

&lt;p&gt;First, add the repository key to the system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After the key is added the system will return with &lt;code&gt;OK&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Next, let’s append the Debian package repository address to the server's &lt;code&gt;sources.list&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ &amp;gt; /etc/apt/sources.list.d/jenkins.list'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After both commands have been entered, we’ll run &lt;code&gt;update&lt;/code&gt; so that &lt;code&gt;apt&lt;/code&gt; will use the new repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, we’ll install Jenkins and its dependencies.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install jenkins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that Jenkins and its dependencies are in place, we'll start the Jenkins server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 — Starting Jenkins
&lt;/h2&gt;

&lt;p&gt;Let's start Jenkins by using &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units"&gt;&lt;code&gt;systemctl&lt;/code&gt;&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl start jenkins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since &lt;code&gt;systemctl&lt;/code&gt; doesn't display status output, we’ll use the &lt;code&gt;status&lt;/code&gt; command to verify that Jenkins started successfully:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl status jenkins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If everything went well, the beginning of the status output shows that the service is active and configured to start at boot:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[secondary_label Output]
● jenkins.service - LSB: Start Jenkins at boot time
   Loaded: loaded (/etc/init.d/jenkins; generated)
   Active: &amp;lt;^&amp;gt;active (exited)&amp;lt;^&amp;gt; since Fri 2020-06-05 21:21:46 UTC; 45s ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 0 (limit: 1137)
   CGroup: /system.slice/jenkins.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that Jenkins is up and running, let's adjust our firewall rules so that we can reach it from a web browser to complete the initial setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 — Opening the Firewall
&lt;/h2&gt;

&lt;p&gt;To set up a UFW firewall, visit &lt;a href="https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04#step-4-%E2%80%94-setting-up-a-basic-firewall"&gt;Initial Server Setup with Ubuntu 20.04, Step 4- Setting up a Basic Firewall&lt;/a&gt;. By default, Jenkins runs on port &lt;code&gt;8080&lt;/code&gt;. We’ll open that port using &lt;code&gt;ufw&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw allow 8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If the firewall is inactive, the following commands will allow OpenSSH and enable the firewall:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw allow OpenSSH
sudo ufw enable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check &lt;code&gt;ufw&lt;/code&gt;'s status to confirm the new rules:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll notice that traffic is allowed to port &lt;code&gt;8080&lt;/code&gt; from anywhere:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[secondary_label Output]
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
8080                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
8080 (v6)                  ALLOW       Anywhere (v6)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With Jenkins installed and our firewall configured, we can complete the installation stage and dive into Jenkins setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 — Setting Up Jenkins
&lt;/h2&gt;

&lt;p&gt;To set up your installation, visit Jenkins on its default port, &lt;code&gt;8080&lt;/code&gt;, using your server domain name or IP address: &lt;code&gt;http://&amp;lt;^&amp;gt;your_server_ip_or_domain&amp;lt;^&amp;gt;:8080&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You should receive the &lt;strong&gt;Unlock Jenkins&lt;/strong&gt; screen, which displays the location of the initial password:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Il0bbP3Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1604/unlock-jenkins.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Il0bbP3Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1604/unlock-jenkins.png" alt="Unlock Jenkins screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the terminal window, use the &lt;code&gt;cat&lt;/code&gt; command to display the password:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo cat /var/lib/jenkins/secrets/initialAdminPassword
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the 32-character alphanumeric password from the terminal and paste it into the &lt;strong&gt;Administrator password&lt;/strong&gt; field, then click &lt;strong&gt;Continue&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;The next screen presents the option of installing suggested plugins or selecting specific plugins: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hVb6cHio--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/customize_jenkins_screen_two.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hVb6cHio--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/customize_jenkins_screen_two.png" alt="Customize Jenkins Screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We'll click the &lt;strong&gt;Install suggested plugins&lt;/strong&gt; option, which will immediately begin the installation process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m98URYIE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/jenkins_plugin_install_two.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m98URYIE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/jenkins_plugin_install_two.png" alt="Jenkins Getting Started Install Plugins Screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the installation is complete, you’ll be prompted to set up the first administrative user. It's possible to skip this step and continue as &lt;code&gt;admin&lt;/code&gt; using the initial password we used above, but we'll take a moment to create the user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The default Jenkins server is NOT encrypted, so the data submitted with this form is not protected. Refer to &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-configure-jenkins-with-ssl-using-an-nginx-reverse-proxy-on-ubuntu-20-04"&gt;How to Configure Jenkins with SSL Using an Nginx Reverse Proxy on Ubuntu 20.04&lt;/a&gt; to protect user credentials and information about builds that are transmitted via the web interface.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qVa_IWKx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/jenkins_create_user.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qVa_IWKx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/jenkins_create_user.png" alt="Jenkins Create First Admin User Screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter the name and password for your user:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---iFDHfYw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/jenkins_user_info.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---iFDHfYw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/jenkins_user_info.png" alt="Jenkins Create User"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll receive an &lt;strong&gt;Instance Configuration&lt;/strong&gt; page that will ask you to confirm the preferred URL for your Jenkins instance. Confirm either the domain name for your server or your server's IP address:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9ipNZ5p2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/instance_confirmation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9ipNZ5p2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/instance_confirmation.png" alt="Jenkins Instance Configuration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After confirming the appropriate information, click &lt;strong&gt;Save and Finish&lt;/strong&gt;. You'll receive a confirmation page confirming that &lt;strong&gt;"Jenkins is Ready!"&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fX7Sr9D6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/jenkins_ready_page_two.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fX7Sr9D6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/jenkins_ready_page_two.png" alt="Jenkins is ready screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Start using Jenkins&lt;/strong&gt; to visit the main Jenkins dashboard:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZedMDQx_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/jenkins_home_page.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZedMDQx_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jenkins-install-ubuntu-1804/jenkins_home_page.png" alt="Welcome to Jenkins Screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point, you have completed a successful installation of Jenkins.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this tutorial, you installed Jenkins using the project-provided packages, started the server, opened the firewall, and created an administrative user. At this point, you can start exploring Jenkins.&lt;/p&gt;

&lt;p&gt;When you've completed your exploration, follow the guide &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-configure-jenkins-with-ssl-using-an-nginx-reverse-proxy-on-ubuntu-20-04"&gt;How to Configure Jenkins with SSL Using an Nginx Reverse Proxy on Ubuntu 20.04&lt;/a&gt; to protect your passwords, as well as any sensitive system or product information that will be sent between your machine and the server in plain text to continue using Jenkins. &lt;/p&gt;

&lt;p&gt;To learn more about what you can do using Jenkins, check out other tutorials on the subject:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-build-android-apps-with-jenkins"&gt;How to Build Android Apps with Jenkins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-continuous-integration-pipelines-in-jenkins-on-ubuntu-16-04"&gt;How To Set Up Continuous Integration Pipelines in Jenkins on Ubuntu 16.04&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>linux</category>
      <category>tutorial</category>
      <category>opensource</category>
      <category>jenkins</category>
    </item>
    <item>
      <title>Learning How to Learn In Bootcamp and Beyond</title>
      <dc:creator>Lyn Muldrow</dc:creator>
      <pubDate>Fri, 03 Jul 2020 18:15:06 +0000</pubDate>
      <link>https://dev.to/lynmuldrow_93/learning-how-to-learn-in-bootcamp-and-beyond-4jnh</link>
      <guid>https://dev.to/lynmuldrow_93/learning-how-to-learn-in-bootcamp-and-beyond-4jnh</guid>
      <description>&lt;p&gt;One of the topics that I've always enjoyed teaching is learning. Understanding how to learn and what it takes to get the most out of a learning experience is infinitely helpful. Knowing how you learn and curating learning experiences that match your learning style increases your capacity and ability to learn quickly, a benefit that's useful in many paths. &lt;/p&gt;

&lt;p&gt;In this video, I share learning styles, tips, and a bit on imposter syndrome for students of Flatiron School on their first day of bootcamp. While some of the information shared is specific to Flatiron (and publicly available on their site), a lot of information you'll gain is general helpful advice for preparing yourself for an intense learning experience like a bootcamp or short course. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/SPCh2G1SgaA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;I hope you gain some nuggets that help you maximize learning in your next experience! &lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>beginners</category>
      <category>bootcamp</category>
    </item>
    <item>
      <title>Showing Face: How I Chose General Assembly for Bootcamp (and why I'm on the website)</title>
      <dc:creator>Lyn Muldrow</dc:creator>
      <pubDate>Thu, 02 Jul 2020 19:36:12 +0000</pubDate>
      <link>https://dev.to/lynmuldrow_93/showing-face-how-i-chose-general-assembly-for-bootcamp-and-why-i-m-on-the-website-5h93</link>
      <guid>https://dev.to/lynmuldrow_93/showing-face-how-i-chose-general-assembly-for-bootcamp-and-why-i-m-on-the-website-5h93</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;I'm an ambivert. Sometimes I move in the energy of extreme extroversion, sharing and relating to help others advance. Other  times, I'd rather retreat to my inner thoughts. &lt;/p&gt;

&lt;p&gt;When General Assembly approached me about sharing my bootcamp experience for a website redesign, I first met the choice with obvious reservation. After processing the shock of my actual face, circumstance, and experience being shared widely, I asked myself a few questions. Would I be okay being the spokesperson of sorts for not only the bootcamp, but for what it could mean for the careers and lives of those looking to move into software engineering? Do I have the energy to share the hardships and bumps in the road and also the light in taking a big risk to change your life? It was hard and a little scary to contemplate, but in the end I decided to show face and share my experiences at General Assembly's Web Development Immersive, to help others like me consider a bootcamp as a nontraditional path into a career in the tech industry.&lt;/p&gt;

&lt;p&gt;Since showing my face on GA's website, I've received thousands of positive messages from aspiring engineers looking for answers to questions around my experience at General Assembly and in a bootcamp in general. While I haven't been able to get to all over the years, it's always been my intent to widely answer these questions in a way that's impacting, because it was for me when I asked and I hope to pay that energy forward. Since my start at General Assembly, I've been able to create a career as a front end engineer, speaker, and educator. I've worked with companies like LinkedIn and Cryptokitties to build UIs, front-facing products, and the developer communities around these products. I've taught with companies who work to provide access to tech like Hack the Hood and Flatiron School. I'm currently creating learning resources and sharing my love of coding to educate all through DigitalOcean. That first big leap into tech was the hardest, but my life has changed in wonderful ways since investing in myself and my career. I hope that by sharing my experiences, you feel empowered to take that leap, too.&lt;/p&gt;

&lt;p&gt;With great visibility comes great responsibility. This is something I've learned through my career journey so far, and something that reverberates each time I see my face on a site or when endorsing a product or technology. I'm humbled to have my image and likeness often used on social media, but through each share I wonder and hope I'd share the information that helped me to succeed. In my journey to become a software engineer, it was a chat with a mentor or someone's career I aspired to emulate that kept me going through the hard parts. If I can be that help to others through sharing my experiences, I'm overjoyed to do so. &lt;/p&gt;

&lt;p&gt;So without further ado, here's a quick and dirty of my personal experience at General Assembly and some general knowledge and wisdom about choosing a bootcamp vs more traditional options when changing your career. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zSVT14G4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://mma.prnewswire.com/media/967740/General_Assembly_Logo.jpg%3Fp%3Dpublish%26w%3D800" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zSVT14G4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://mma.prnewswire.com/media/967740/General_Assembly_Logo.jpg%3Fp%3Dpublish%26w%3D800" alt="General Assembly Logo" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Background
&lt;/h2&gt;

&lt;p&gt;I was born in Baltimore, MD, in a working-class household with my mama and stepdad. Growing up, I was always a nerd and naturally gravitated to tech and video games. By 14, I was teaching a little turtle how to maneuver with code. Later in my teens, I was making Myspace custom layouts for my friends. My interest in tech and building for the web grew over the years, and although I went to college for Community Studies, in 2007 I started freelancing as a web designer and marketing consultant. I customized Wordpress, Wix, and Weebly websites and helped small businesses with social media. In 2014, after 7 years of freelancing, I'd decided to 'get serious' and learn to code, as before I depended on contractors for help. I started with then Lynda.com, watching tutorials over and over until I understood what was being taught. After a year of self-teaching, I felt like I'd learned a lot, but none of it connected in a way that would help me consistently build solutions for my clients. &lt;/p&gt;

&lt;p&gt;In 2015, I saw a post on Women Who Code's newsletter for General Assembly's Web Development Immersive and for a scholarship they were offering that was new at the time. I was a single mom of two at the time and really wanted to jump into software engineering as a career to benefit my family. I made a five year goal to work at a 'big company' as an engineer, applied for the scholarship and GA, and crossed my fingers. In a few weeks I received an acceptance letter, and I packed my bags and headed to Cali with my kids to jump out of what's comfortable to a new adventure and career.  &lt;/p&gt;

&lt;h2&gt;
  
  
  What's a bootcamp? Why'd you pick General Assembly?
&lt;/h2&gt;

&lt;p&gt;Bootcamps are accelerated learning programs that help you to gain a career skill in a reduced amount of time, as compared to traditional trade or collegiate programs. People who are career changers or are looking to level up in their career are typically those who choose bootcamps as a way to gain skills fast, and many graduates go on to work at larger companies with their new knowledge. Before deciding on General Assembly as my bootcamp, I weighed a lot of options. I considered what sort of learning environment I would thrive in, what culture would be conducive to learning a lot in a short amount of time, and what sort of flexibility each bootcamp had in terms of timing and expectations. I chose General Assembly because of the 12-week schedule (I found it to be shorter than most other programs at the time), the languages I'd learn (I went for the full-stack immersive, which at the time taught Ruby, Rails, JS, JQuery, Angular, and React), and the events and networking that I could attend while on campus. In picking a bootcamp, it's important to consider these things and more to pick the style and environment that will best help you learn and grow.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's the culture and learning environment?
&lt;/h3&gt;

&lt;p&gt;I'm an auditory and visual learner, and need to hear the concept and see it in action before committing it to memory. I thrive in learning situations where I can see live coding, hear lectures, and take time to understand the 'why' of a concept. When considering a bootcamp, it's wise to understand how you learn. If you pick a bootcamp that focused on video lectures when physical learning best suits you, you may not find your experience to be as successful of others. &lt;/p&gt;

&lt;p&gt;After reading about the immersive on General Assembly's website and checking a couple of reviews and experiences from past students, I understood that the style of learning that they shared complimented mine. I also took time to understand their bootcamp's mission and culture, as being in a learning environment that was flexible and inclusive was important to me. General Assembly promotes events from all facets of tech, and has a calm, chill vibe that resonated with me as a learning environment that I could thrive in. I met students from all across the world and walks of life, and most were cooperative and willing to help you learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  What were your first weeks like? What's the community like?
&lt;/h2&gt;

&lt;p&gt;My first weeks were hell. After the sometimes tedious task of getting a new Mac and installing all the necessary software, getting used to working full time remotely and attending a full time bootcamp was a chore. Managing two small children in the process was also no small feat, so amid the orientation talks and learning about how the internet works and why learning Ruby is important, getting a handle of my schedule was paramount. After easing into a schedule that worked for me with plenty of study time baked in (I suggest at least 15 hours), I found that learning the material flowed well. We started with some front end languages that I was familiar with, so I felt comfortable to approach some of our first lessons with ease. &lt;/p&gt;

&lt;p&gt;I went to the San Francisco campus for the immersive, and the community was nothing short of supportive, ensuring that each student had what they needed to be successful. There were plenty of complimentary drinks and treats to stave off the afternoon sleepies, lots of talks on the soft skills necessary to thrive in the industry, and plenty of opportunity to connect with the local tech community with regular events that happened on campus. I chose to attend a couple a month and made connections with professionals that helped me throughout my career. &lt;/p&gt;

&lt;h2&gt;
  
  
  What does success in a bootcamp look like?
&lt;/h2&gt;

&lt;p&gt;Success is going to look differently for each person in bootcamp based on their goals and reasons for attending. For me, I set the goal to learn how to build websites from scratch and apps that might be helpful for my current small business clients. Not only did my experience learning full-stack development help me meet this goal, it opened my eyes to possibilities for my career trajectory. I think when considering success for yourself and personal situation, make achievable goals that fall in line with a bootcamp's style of teaching and sharing. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wyDyWuhg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.pinimg.com/736x/b4/ed/28/b4ed28a5a39cf7a5b905000623593185.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wyDyWuhg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.pinimg.com/736x/b4/ed/28/b4ed28a5a39cf7a5b905000623593185.jpg" alt="Success image" width="735" height="1103"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How long did it take you to find a job?
&lt;/h2&gt;

&lt;p&gt;During bootcamp, we were encouraged to dive in and focus on the material before starting to think about applying for jobs. While I did that for the first six weeks, my focus shifted slightly to include job hunting tasks like resume building, LinkedIn revisions, and coffee chats with potential employers and peers in the latter part of my bootcamp experience. Because I understood that employers needed to see projects and things I've built, I spend a large portion of my time building projects based on subjects we learned in bootcamp. While we have three big projects that we build within the immersive program, by the end of bootcamp I had 15. I used those in my initial interviews, and by the end of my 12-week bootcamp, I was employed as an engineering instructor for Hack the Hood, a non-profit that teaches diverse kids to code.&lt;/p&gt;

&lt;p&gt;My experience is not typical- many of my peers took a few months and even a few years to find the work that suited them, and as I kept up with my classmates over the years, many are still seeking their true paths. Although you do have career assistance through GA's bootcamp, be open to how your career can change and move as you take in new knowledge and keep your choices open in terms of where you could go. What started as a goal of being a software engineer transformed into motivating the industry to change through tech access initiatives and education. I wouldn't have imagined that my first position as instructor out of bootcamp would take my career to such wonderful and joy filled places.  &lt;/p&gt;

&lt;h2&gt;
  
  
  What are your takeaways on attending a bootcamp vs. traditional schools?
&lt;/h2&gt;

&lt;p&gt;I went to college and never truly vibed with the pace and content I was learning. It felt as if I was studying a bunch of information that I'd tangentially recall when working on nuanced problems in my actual career, and not was not a practical choice for me at the time. With the bootcamp, I was able to learn quickly and immediately apply this learning to a career which invoked everything I previously learned. The convenience of being able to ask and answer questions with an engaged community, the opportunities to network with those right in your industry, and the fast pace of the learning experience were all things that sold me on considering a bootcamp over some other traditional learning models. &lt;/p&gt;

&lt;p&gt;After having taught at and prepared students of all levels for various bootcamp or accelerated learning programs, I've learned that your bootcamp experience is entirely what you make of it, and confidence is key. If you start the bootcamp with the intent to focus on what you're learning, practice as much as you can, and refine your knowledge for a position as an engineer, you'll drive with that intent and make the necessary life and schedule changes and exceptions to be successful. If you're at all hesitant about the learning style, environment, or pace of the program, you might find yourself preoccupied with those things and lose focus of learning. Having a set of goals that drive  your learning at a bootcamp and checking your expectation about what the bootcamp will give you vs. what you'll put into it is also a healthy way of preparing for a bootcamp. &lt;/p&gt;

&lt;p&gt;I had two little ones counting on their Mommy to be successful, so for me, the drive was to be an example for not only them, but other diverse young nerds who will decide on a career and take the risk to go for it. Whatever drives you innately is what will help you pull through the nights of no sleep and code dreams, the times when that one bug won't fix itself, and the seemingly endless practice and coding you'll do while pushing yourself to learn more each day during your program. Keep the energy of you own success around you, and you'll see the success you deserve. &lt;/p&gt;

&lt;p&gt;So, that's my journey, experience, and why I don't mind my face being on GA's website. If my experience can give you the confidence to know that you, too, have what it takes to be successful as a bootcamp graduate within tech, I'm happy to share. &lt;/p&gt;

&lt;p&gt;Go out and pick the bootcamp or learning experience that's right for you! &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>bootcamps</category>
      <category>wecoded</category>
      <category>firstyearincode</category>
    </item>
  </channel>
</rss>
