{"id":2980,"date":"2025-03-04T01:07:20","date_gmt":"2022-05-16T06:04:05","guid":{"rendered":""},"modified":"2025-02-02T00:46:19","modified_gmt":"2025-02-01T23:46:19","slug":"how-to-install-moodle-with-nginx-and-free-let-039-s-encrypt-ssl-on-ubuntu-22-04","status":"publish","type":"post","link":"https:\/\/netcloud24.com\/knowledgebase\/how-to-install-moodle-with-nginx-and-free-let-039-s-encrypt-ssl-on-ubuntu-22-04\/","title":{"rendered":"Linux VPS &#038; VPS Windows Setup Guide | NetCloud24 Moodle with Nginx and Free Let&#039;s Encrypt SSL on Ubuntu 22.04"},"content":{"rendered":"<p>\u00a0<\/p>\n<\/p>\n<header>\n<h1>\u00a0<\/h1>\n<\/header>\n<article>\n<p>Moodle is a popular open-source learning management system (LMS) used to create online learning sites. In this guide, we will walk through the process of installing Moodle on Ubuntu 22.04, using Nginx as the web server and securing it with a free SSL certificate from Let&#8217;s Encrypt. This setup is ideal for users running Moodle on local servers or on a .<\/p>\n<section>\n<h2>Step 1: Update Your System<\/h2>\n<p>Before installing any new software, ensure that your system is up to date. Run the following commands to update your package lists and install any available updates:<\/p>\n<pre><code>sudo apt update &amp;&amp; sudo apt upgrade -y<\/code><\/pre>\n<p>Keeping your system updated ensures stability and security, especially when using platforms like <a href=\"https:\/\/ie.netcloud24.com\">VPS Windows VPS Servers<\/a>.<\/p>\n<\/section>\n<section>\n<h2>Step 2: Install Nginx, MySQL, and PHP<\/h2>\n<p>Moodle requires a web server, a database, and PHP. Install Nginx, MySQL, and PHP with the following command:<\/p>\n<pre><code>sudo apt install nginx mysql-server php-fpm php-mysql php-xml php-zip php-gd php-intl php-curl php-mbstring -y<\/code><\/pre>\n<p>After installing these packages, start and enable Nginx and MySQL:<\/p>\n<pre><code>sudo systemctl start nginx\r\nsudo systemctl enable nginx\r\n\r\nsudo systemctl start mysql\r\nsudo systemctl enable mysql<\/code><\/pre>\n<\/section>\n<section>\n<h2>Step 3: Configure MySQL Database for Moodle<\/h2>\n<p>Log in to the MySQL shell to create a new database and user for Moodle:<\/p>\n<pre><code>sudo mysql -u root -p<\/code><\/pre>\n<p>Inside the MySQL shell, run the following commands to create the Moodle database and a user:<\/p>\n<pre><code>CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\r\nCREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'your_password';\r\nGRANT ALL PRIVILEGES ON moodledb.* TO 'moodleuser'@'localhost';\r\nFLUSH PRIVILEGES;\r\nEXIT;<\/code><\/pre>\n<p>Replace <code>your_password<\/code> with a strong password of your choice.<\/p>\n<\/section>\n<section>\n<h2>Step 4: Download and Install Moodle<\/h2>\n<p>Navigate to the <code>\/var\/www\/html<\/code> directory and download the latest Moodle package:<\/p>\n<pre><code>cd \/var\/www\/html\r\nsudo wget https:\/\/download.moodle.org\/download.php\/direct\/stable310\/moodle-latest-310.tgz<\/code><\/pre>\n<p>Extract the downloaded archive:<\/p>\n<pre><code>sudo tar -zxvf moodle-latest-310.tgz<\/code><\/pre>\n<p>Set the correct ownership and permissions for the Moodle directory:<\/p>\n<pre><code>sudo chown -R www-data:www-data \/var\/www\/html\/moodle\r\nsudo chmod -R 755 \/var\/www\/html\/moodle<\/code><\/pre>\n<\/section>\n<section>\n<h2>Step 5: Configure Nginx for Moodle<\/h2>\n<p>Next, create a new Nginx server block configuration for Moodle:<\/p>\n<pre><code>sudo nano \/etc\/nginx\/sites-available\/moodle<\/code><\/pre>\n<p>Add the following configuration:<\/p>\n<pre><code>server {\r\n    listen 80;\r\n    server_name yourdomain.com;\r\n\r\n    root \/var\/www\/html\/moodle;\r\n    index index.php index.html index.htm;\r\n\r\n    location \/ {\r\n        try_files $uri $uri\/ \/index.php?$query_string;\r\n    }\r\n\r\n    location ~ \\.php$ {\r\n        include snippets\/fastcgi-php.conf;\r\n        fastcgi_pass unix:\/var\/run\/php\/php7.4-fpm.sock;\r\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\r\n        include fastcgi_params;\r\n    }\r\n\r\n    location ~* \\.html$ {\r\n        expires 5d;\r\n    }\r\n\r\n    location ~* \\.(js|css|png|jpg|jpeg|gif|ico)$ {\r\n        expires 30d;\r\n        log_not_found off;\r\n    }\r\n}<\/code><\/pre>\n<p>Save and close the file, then enable the configuration by creating a symbolic link:<\/p>\n<pre><code>sudo ln -s \/etc\/nginx\/sites-available\/moodle \/etc\/nginx\/sites-enabled\/<\/code><\/pre>\n<p>Test the Nginx configuration and reload the service:<\/p>\n<pre><code>sudo nginx -t\r\nsudo systemctl reload nginx<\/code><\/pre>\n<\/section>\n<section>\n<h2>Step 6: Obtain Free Let&#8217;s Encrypt SSL<\/h2>\n<p>To secure Moodle with HTTPS, use Let&#8217;s Encrypt to obtain a free SSL certificate. First, install Certbot:<\/p>\n<pre><code>sudo apt install certbot python3-certbot-nginx -y<\/code><\/pre>\n<p>Run the following command to obtain and install the SSL certificate:<\/p>\n<pre><code>sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com<\/code><\/pre>\n<p>Follow the prompts to complete the SSL setup. Certbot will automatically configure your Nginx server block to use the new SSL certificate.<\/p>\n<\/section>\n<section>\n<h2>Step 7: Complete Moodle Installation<\/h2>\n<p>Open your web browser and navigate to <code>https:\/\/yourdomain.com<\/code> to complete the Moodle installation through the web interface. Follow the on-screen instructions to set up Moodle, providing the database details configured earlier.<\/p>\n<\/section>\n<footer>\n<p>You have successfully installed Moodle with Nginx and secured it with a Let&#8217;s Encrypt SSL certificate on Ubuntu 22.04. This setup ensures a secure and reliable e-learning platform for your users. For scalable hosting solutions, consider using . They offer a variety of hosting options, including <strong>windows virtual private servers<\/strong>, <strong>vps windows hosting<\/strong>, and <strong>windows virtual dedicated server hosting<\/strong>. Whether you&#8217;re looking for <strong>windows vps italy<\/strong> or <strong>uk vps windows<\/strong>, their services provide the performance and scalability needed for your Moodle platform.<\/p>\n<\/footer>\n<\/article>\n<div class=\"post-author-box\" style=\"border-top:1px solid #ddd;margin-top:20px;padding-top:15px;\">\n<p><strong>Author:<\/strong> \u0141ukasz Bodziony<\/p>\n<p><strong>Website:<\/strong> <a href=\"https:\/\/ca.netcloud24.com\" target=\"_blank\" rel=\"dofollow\">Windows VPS<\/a><\/p>\n<p><em>\u0141ukasz Bodziony is the CEO and founder of <a href=\"https:\/\/netcloud24.com\" target=\"_blank\" rel=\"dofollow\">NETCLOUD24<\/a>, a global VPS hosting brand proudly originating from Poland. With extensive experience in cloud computing, virtualization, and server management, he delivers high-performance <strong>Windows VPS<\/strong> and <strong>Remote Desktop Services (RDS)<\/strong> solutions to clients across Europe, North America, and beyond.<\/em><\/p>\n<p><em>His expertise covers a wide range of technologies, including <strong>Microsoft Azure<\/strong>, <strong>Proxmox VE<\/strong>, <strong>Amazon Web Services (AWS)<\/strong>, and numerous other virtualization and cloud platforms.<\/em><\/p>\n<p><em>Beyond running his hosting business, \u0141ukasz also provides <strong>professional paid server configuration and optimization services<\/strong> for companies and individuals. Outside of work, he is dedicated to caring for his children and building a secure future for them.<\/em><\/p>\n<p><em>If you are interested in working with him or need expert assistance with your hosting, cloud environment, or server setup, feel free to reach out via <a href=\"https:\/\/ca.netcloud24.com\" target=\"_blank\" rel=\"dofollow\">Windows VPS<\/a>.<\/em><\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u00a0 \u00a0 Moodle is a popular open-source learning management system (LMS) used to create online learning sites. In this guide, we will walk through the process of installing\u2026<\/p>\n","protected":false},"author":1,"featured_media":3421,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[],"tags":[14,12,11,23,20,21,22,17,7,8,6,10,18,19,15,24,16,5,13,9],"class_list":["post-2980","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-cheapvps","tag-cloudvps","tag-hostingvps","tag-rds","tag-rdscal","tag-remotedesktop","tag-remotedesktopvps","tag-servervps","tag-ukvps","tag-virtualserver","tag-vpshosting","tag-vpsserver","tag-vpssolutions","tag-vpswindows","tag-vpswithwindows","tag-windowsrds","tag-windowsserver","tag-windowsvps","tag-windowsvpshosting","tag-windowsvpsuk"],"jetpack_publicize_connections":[],"_links":{"self":[{"href":"https:\/\/netcloud24.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/2980","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/netcloud24.com\/knowledgebase\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/netcloud24.com\/knowledgebase\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/netcloud24.com\/knowledgebase\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/netcloud24.com\/knowledgebase\/wp-json\/wp\/v2\/comments?post=2980"}],"version-history":[{"count":0,"href":"https:\/\/netcloud24.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/2980\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/netcloud24.com\/knowledgebase\/wp-json\/wp\/v2\/media\/3421"}],"wp:attachment":[{"href":"https:\/\/netcloud24.com\/knowledgebase\/wp-json\/wp\/v2\/media?parent=2980"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/netcloud24.com\/knowledgebase\/wp-json\/wp\/v2\/categories?post=2980"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/netcloud24.com\/knowledgebase\/wp-json\/wp\/v2\/tags?post=2980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}