Configuring Linux Web Servers

Brought by: Udacity

Overview

In this course you'll learn the basic Linux fundamentals every web developer needs to know to share their web applications with the world! You'll get a basic Python WSGI application up and running within a Vagrant virtual machine that queries data from a PostgreSQL database.

You'll start by exploring various Linux distributions and learning the differences between a number of them. You'll then explore how the Linux operating system differs from other operating systems you may be more familiar with. With this base knowledge, you'll then move into Linux security - covering topics such as file permissions, user management, package management and configuring firewalls. Finally, you'll transform a safe and secure baseline server into a web application server by installing and configuring the Apache HTTP Server and PostgreSQL database server.

Syllabus

  • Intro to Linux
    • Introduction to the Linux operating system and its many distributions.,Setup your very own Linux virtual machine on your own computer and explore it.,Learn how the filesystem is organized and identify key files.
  • Linux Security
    • Execute administrative tasks, update the software on your system, install new software, and manage users.,Learn how to implement even stronger authentication mechanisms, and how to interpret Linux file permissions.,Configure a firewall to keep your system secure.
  • Web Application Servers
    • Transform your secure and safe barebones server into a fully functional web application server.,Install and configure an Apache HTTP Server and PostgreSQL database server.,Write a basic Python WSGI application that can query a database and present that data upon a web request.

Taught by

Michael Wales

Configuring Linux Web Servers
Go to course

Configuring Linux Web Servers

Brought by: Udacity

  • Udacity
  • Free
  • English
  • Certificate Not Available
  • Available at any time
  • advanced
  • N/A
8.1.2PHP Version349msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (231ms)
    • Application (117ms)
    • 1 x Booting (66.15%)
      230.61ms
      1 x Application (33.62%)
      117.19ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed7.45ms
      • select * from `courses` where `slug_en` = 'configuring-linux-web-servers' limit 1
        5.98ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. configuring-linux-web-servers
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-02-22 21:54:48' where `id` = 1684
        310μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-02-22 21:54:48
        • 1. 1684
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (10)
        370μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        300μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (6) and `providers`.`deleted_at` is null
        230μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 1676 limit 1
        260μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 1676
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        MRCDKxBdtUEwamowBDr1d02PROCnOHWS2aTcAEaB
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/configuring-linux-web-servers" ]
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/configuring-linux-web-servers
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "priority" => array:1 [ 0 => "u=0, i" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "cf-connecting-ip" => array:1 [ 0 => "3.144.13.230" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-ipcountry" => array:1 [ 0 => "US" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "x-forwarded-for" => array:1 [ 0 => "3.144.13.230" ] "cf-ray" => array:1 [ 0 => "91623779bc9b61a2-ORD" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_PRIORITY" => "u=0, i" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_CF_CONNECTING_IP" => "3.144.13.230" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_X_FORWARDED_FOR" => "3.144.13.230" "HTTP_CF_RAY" => "91623779bc9b61a2-ORD" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "43026" "REMOTE_ADDR" => "172.69.7.28" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/configuring-linux-web-servers" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1740261288.211 "REQUEST_TIME" => 1740261288 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Sat, 22 Feb 2025 21:54:48 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ijl0djQvMk5ZUlJZaFJDMnp3TW9lcmc9PSIsInZhbHVlIjoiNERwSWZKVHZYNnJYNW9JbWxMb1Q1OU4rZWk1MXNGbkllZnJ6U1k4ejFGOU9id3QzbTNjRGdhTU5ValdXKy9RaW1qeXZhdDV6STBUemlCa2ppU3JJT0ZrRjl5cHZWak9JR29vRUl3ZzI2RmJjN2kya1BKUHBFUWxuNzV3RDhHVWciLCJtYWMiOiIxY2Y0MThiZTUyY2I3ZTkyYzkyNjFhYWE2YTJiNzkxOGUxOTFiOGMxMzVmZTM3NDcyODY5Y2M0YTMwNmYxZTIyIiwidGFnIjoiIn0%3D; expires=Sat, 22 Feb 2025 23:54:48 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6Ijl0djQvMk5ZUlJZaFJDMnp3TW9lcmc9PSIsInZhbHVlIjoiNERwSWZKVHZYNnJYNW9JbWxMb1Q1OU4rZWk1MXNGbkllZnJ6U1k4ejFGOU9id3QzbTNjRGdhTU5ValdXKy9RaW1qeXZhd" 1 => "laravel_session=eyJpdiI6IkZUK0sxUi9qaW0wS1E2VnFYL3Y0bUE9PSIsInZhbHVlIjoiVGllOFFwQjdCUmFham5EL3Vrb2JIZXRJeUVBTzU2LzZYWlNjVWVGbUxOUmFCNWhsNmRoSjdNYysvWGs0QW9tZ0ZHV0xMK3Rza0xoSzZzQnd5WjNITUl5dFdaNE1kTmk4V2xZTVNydGIxSVoxVzFWSFkxQVFzNFBjVUtubVBQQWEiLCJtYWMiOiJlNmM3M2JjZjdjMDBmMzExZGE2YjdhZDA5ZjYxMDY1YzYzNmE2ZWE3MzUwZDlhNDFjOWM0MTlhNjRkZDE0NjNlIiwidGFnIjoiIn0%3D; expires=Sat, 22 Feb 2025 23:54:48 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IkZUK0sxUi9qaW0wS1E2VnFYL3Y0bUE9PSIsInZhbHVlIjoiVGllOFFwQjdCUmFham5EL3Vrb2JIZXRJeUVBTzU2LzZYWlNjVWVGbUxOUmFCNWhsNmRoSjdNYysvWGs0QW9tZ0ZH" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ijl0djQvMk5ZUlJZaFJDMnp3TW9lcmc9PSIsInZhbHVlIjoiNERwSWZKVHZYNnJYNW9JbWxMb1Q1OU4rZWk1MXNGbkllZnJ6U1k4ejFGOU9id3QzbTNjRGdhTU5ValdXKy9RaW1qeXZhdDV6STBUemlCa2ppU3JJT0ZrRjl5cHZWak9JR29vRUl3ZzI2RmJjN2kya1BKUHBFUWxuNzV3RDhHVWciLCJtYWMiOiIxY2Y0MThiZTUyY2I3ZTkyYzkyNjFhYWE2YTJiNzkxOGUxOTFiOGMxMzVmZTM3NDcyODY5Y2M0YTMwNmYxZTIyIiwidGFnIjoiIn0%3D; expires=Sat, 22-Feb-2025 23:54:48 GMT; path=/XSRF-TOKEN=eyJpdiI6Ijl0djQvMk5ZUlJZaFJDMnp3TW9lcmc9PSIsInZhbHVlIjoiNERwSWZKVHZYNnJYNW9JbWxMb1Q1OU4rZWk1MXNGbkllZnJ6U1k4ejFGOU9id3QzbTNjRGdhTU5ValdXKy9RaW1qeXZhd" 1 => "laravel_session=eyJpdiI6IkZUK0sxUi9qaW0wS1E2VnFYL3Y0bUE9PSIsInZhbHVlIjoiVGllOFFwQjdCUmFham5EL3Vrb2JIZXRJeUVBTzU2LzZYWlNjVWVGbUxOUmFCNWhsNmRoSjdNYysvWGs0QW9tZ0ZHV0xMK3Rza0xoSzZzQnd5WjNITUl5dFdaNE1kTmk4V2xZTVNydGIxSVoxVzFWSFkxQVFzNFBjVUtubVBQQWEiLCJtYWMiOiJlNmM3M2JjZjdjMDBmMzExZGE2YjdhZDA5ZjYxMDY1YzYzNmE2ZWE3MzUwZDlhNDFjOWM0MTlhNjRkZDE0NjNlIiwidGFnIjoiIn0%3D; expires=Sat, 22-Feb-2025 23:54:48 GMT; path=/; httponlylaravel_session=eyJpdiI6IkZUK0sxUi9qaW0wS1E2VnFYL3Y0bUE9PSIsInZhbHVlIjoiVGllOFFwQjdCUmFham5EL3Vrb2JIZXRJeUVBTzU2LzZYWlNjVWVGbUxOUmFCNWhsNmRoSjdNYysvWGs0QW9tZ0ZH" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "MRCDKxBdtUEwamowBDr1d02PROCnOHWS2aTcAEaB" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/configuring-linux-web-servers" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]