Web back-end (5) - Lập trình phía server

1.1       Lập trình phía server

Như chúng ta đã biết, sau khi trình duyệt gửi yêu cầu, web server sẽ nhận yêu cầu, xử lý và trả về cho trình duyệt mã HTML, CSS, JavaScript và các tài nguyên web khác (hình ảnh, âm thanh, video).

Vậy phía server sẽ cần một ngôn ngữ lập trình để xử lý các yêu cầu từ phía client (trình duyệt) gửi tới.


1.1.1       Ngôn ngữ lập trình

Ngôn ngữ lập trình là gì?

Ngôn ngữ lập trình đề cập ở đây là cách gọi ngắn gọn của Ngôn ngữ lập trình cấp cao (high-level programming language), là một ngôn ngữ hình thức, gồm tập hợp các lệnh, cú pháp và ngữ nghĩa được sử dụng để điều khiển máy tính, thực hiện một công việc cụ thể. Về mặt lý thuyết, để điều khiển máy tính bạn cũng có thể sử dụng mã máy hoặc hợp ngữ (ngôn ngữ lập trình cấp thấp). Xem hình minh họa,

Chương trình viết bằng các ngôn ngữ lập trình cấp cao có tính tương thích tốt, có thể chạy trên nhiều nền tảng, nhiều họ máy khác nhau. Có nhiều ngôn ngữ lập trình khác nhau, tùy theo ứng dụng bạn muốn xây dựng để lựa chọn ngôn ngữ cho phù hợp.

Một số ngôn ngữ lập trình đang được sử dụng phổ biến để lập trình bên phía web server gồm (xếp theo thứ tự bảng chữ cái) C#, Golang, Java, PHP, JavaScript, Python, Ruby. 

Để có thể điều khiển được máy tính, cần phải chuyển đổi ngôn ngữ lập trình sang dạng mã máy, khi đó CPU sẽ thực thi mã máy để thực hiện các công việc. Để chuyển từ ngôn ngữ lập trình sang mã máy cần có quá trình dịch ngôn ngữ, gồm quá trình thông dịch hoặc quá trình biên dịch, hoặc kết hợp cả hai quá trình này. Xem hình minh họa,

Chương trình thực hiện việc dịch từ ngôn ngữ lập trình sang các dạng ngôn ngữ trung gian hoặc mã máy gọi là chương trình dịch. Có hai loại chương trình dịch là trình thông dịch và trình biên dịch.

Trình thông dịch

Trình thông dịch (interpreter) là một chương trình máy tính giúp CPU thực thi trực tiếp các lệnh được viết bằng một ngôn ngữ lập trình hay ngôn ngữ kịch bản mà không yêu cầu phải biên dịch trước thành một chương trình ngôn ngữ máy. Xem hình minh họa,


Với người lập trình, nếu làm web bằng ngôn ngữ kiểu thông dịch sẽ không thấy tập tin kết quả của quá trình dịch, website sẽ gồm các tập tin mã nguồn ở dạng ngôn ngữ lập trình.

Trình biên dịch

Trình biên dịch (compiler) là một chương trình máy tính thực hiện dịch một chuỗi các câu lệnh của một ngôn ngữ lập trình (gọi là ngôn ngữ nguồn, mã nguồn) thành một chương trình tương đương nhưng ở dạng một ngôn ngữ máy tính mới (gọi là ngôn ngữ đích) và thường là ngôn ngữ cấp thấp hơn (dạng mã đối tượng, hoặc dạng mã máy).

CPU hoặc máy ảo sẽ thực thi mã đối tượng hoặc mã máy do trình biên dịch tạo ra.

Cũng có loại trình biên dịch chuyển đổi từ ngôn ngữ lập trình cấp thấp sang ngôn ngữ lập trình cấp cao gọi là bộ biên dịch ngược; cũng có trình biên dịch chuyển đổi từ ngôn ngữ cấp cao này sang ngôn ngữ cấp cao khác, hoặc sang một ngôn ngữ trung gian để xử lý tiếp về sau gọi là bộ biên dịch phân tầng.

Xem hình minh họa của quá trình biên dịch,

Với người lập trình, nếu làm web bằng ngôn ngữ kiểu biên dịch sẽ thấy tập tin kết quả của quá trình dịch, website sẽ gồm các tập tin mã nguồn ở dạng ngôn ngữ lập trình, các tập tin mã trung gian, hoặc tập tin dạng mã máy.

Thông dịch hay biên dịch?

Bạn có thể chia ngôn ngữ lập trình thành các nhóm, như ngôn ngữ lập trình kiểu thông dịch, hay ngôn ngữ lập trình kiểu biên dịch. Tuy nhiên, việc phân chia này không thực sự rõ ràng, vì thực tế nhiều ngôn ngữ lập trình được thiết kế để chạy theo kiểu vừa thông dịch vừa biên dịch, tùy thuộc vào giai đoạn khác nhau của quá trình chuyển đổi và thực thi mã nguồn. Các ngôn ngữ lập trình hiện đại cũng được triển khai trên các nền tảng cho phép tùy chọn cả hai hình thức thông dịch và biên dịch.

Như vậy việc xác định một ngôn ngữ thuộc kiểu thông dịch hay biên dịch cũng không quá quan trọng. Điều quan trọng là bạn cần phải hiểu rõ các bước, các thành phần đã tham gia vào quá trình chuyển đổi từ ngôn ngữ lập trình sang dạng mã máy.

Chương trình dịch cho hệ thống web server

Trong máy web server, ngoài phần mềm web server (như Apache, IIS, Nginx) có nhiệm vụ thiết lập kết nối, truyền dữ liệu bằng giao thức HTTP giữa trình duyệt và web server, còn có nhiều thành phần khác. Ví dụ chương trình dịch có nhiệm vụ chuyển đổi mã nguồn thành ngôn ngữ trung gian hoặc mã máy, giúp máy server thực hiện các xử lý logic và trả về kết quả cho web client. Xem hình minh họa,


Bảng sau là chương trình dịch của một số ngôn ngữ lập trình tại web server:

Ngôn ngữ lập trình

Chương trình dịch

PHP

PHP, Zend (interpreter)

C#

.NET (compiler)

Python

Python (interpreter)

Java

Java (compiler, interpreter)

JavaScript

Nodejs (interpreter)

Ruby

Ruby (interpreter)

Golang/Go

Go (compiler)

Một phần mềm web server có thể hoạt động cùng với (hỗ trợ) một hoặc nhiều ngôn ngữ lập trình khác nhau.

Ví dụ:

Phần mềm web server

Hỗ trợ các ngôn ngữ lập trình (ví dụ)

Apache

PHP, Python, Perl

Nodejs

JavaScript

Nginx

PHP, Go, JavaScript, Perl, PHP, Python, Ruby

IIS

C#, PHP

1.1.2       Framework và CMS là gì?

Framework là gì?

Từ framework có nghĩa là bộ khung.

Framework là một bộ khung được thiết kế sẵn, bao gồm các đoạn mã, thư viện, mô hình, kiến trúc hệ thống,…v.v giúp việc xây dựng ứng dụng tiện lợi và nhanh hơn.

Nhờ đã có bộ khung sẵn, lập trình viên ít phải viết lại các đoạn mã có tính lặp lại, phổ biến trong các ứng dụng như đăng ký, đăng nhập, làm việc với cơ sở dữ liệu, thanh toán…v.v. Lập trình viên sẽ tập trung thời gian nhiều hơn vào các công việc quan trọng, có tính đặc thù của ứng dụng.

Tuy nhiên, sử dụng framework cũng có một số hạn chế sau:

– Lập trình viên phải bỏ thời gian để học cách làm việc với framework

– Kích thước dự án lớn, do phải bao gồm cả mã nguồn của framework

– Lập trình viên buộc phải tuân thủ các quy định, các chuẩn của framework

– Không thích hợp cho các ứng dụng web nhỏ, đơn giản.

CMS là gì?

CMS, viết tắt của content management system, là hệ quản trị nội dung.

CMS giúp người sử dụng có thể dễ dàng xây dựng, cập nhật, thay đổi nội dung của một website. Với những website đơn giản (ví dụ tin tức, bán hàng, giới thiệu sản phẩm, blog) người sử dụng có thể tự xây dựng, cập nhật, vận hành website mà không nhất thiết phải biết lập trình web.

Tuy nhiên, sử dụng CMS cũng có một số hạn chế như:

– Giao diện bị đồng nhất, dập khuôn

– Tính linh hoạt, khả năng tùy chỉnh thấp

– Kích thước website lớn

– Có thể chạy chậm

Với mỗi ngôn ngữ lập trình phía server luôn có các framework, CMS (có phí, miễn phí) đi kèm, ví dụ trong bảng sau (sắp xếp theo thứ tự bảng chữ cái):

Ngôn ngữ lập trình

Framework

CMS

C#

.NET (ASP.NET, ASP.NET core)

Umbraco, nopCommerce

Golang

Beego, Echo, Revel

ButterCMS

Java

Spring, Struts, Grails

Enonic XP, Logical DOC

PHP

Laravel, CakePHP, CodeIgniter

Joomla, Drupal, wordpress

JavaScript

Next.js, Express, MeteorJS

Ghost, wiki.js

Python

Django, Flask, Pyramid

Wagtail, django CMS

Ruby

Ruby on Rails, Sinatra, Grape

Refinery CMS, Alchemy CMS

1.1.3       Cài đặt trình thông dịch PHP

PHP là ngôn ngữ lập trình kịch bản (scripting language), chạy ở chế độ thông dịch. Trình thông dịch PHP có thể chạy độc lập trên máy tính hoặc tích hợp với một phần mềm web server.

Ngôn ngữ lập trình kịch bản thường có ít quyền truy cập vào các tính năng gốc của máy tính.

Trong phần này, chúng ta sẽ cài đặt trình thông dịch PHP, chạy trình thông dịch PHP ở chế độ độc lập, sau đó sẽ tích hợp trình thông dịch PHP vào phần mềm web server (Apache).

Như vậy, để học ngôn ngữ lập trình PHP căn bản, bạn chỉ cần cài đặt trình thông dịch PHP mà không cần phải cài đặt phần mềm web server.

Tải trình thông dịch PHP

– Vào trang web của PHP: https://windows.php.net/download

– Chọn các thông số phù hợp, ví dụ

+ Bản 64bit cho Windows 64bit, có kí hiệu là x64; bản 32bit cho Windows 32bit có kí hiệu là x86

+ Phiên bản PHP, ví dụ PHP 8.0

+ Bản chạy ở chế độ đơn luồng (Non Thread Safe)

+ Chọn bản Zip

– Ví dụ sẽ tải bản: VS16 x64 Non Thread Safe (2021-Sep-21 18:53:14) (file Zip)

Cài đặt trình thông dịch PHP

– Để cài đặt trình thông dịch PHP, bạn chỉ cần giải nén tập tin tải từ mạng vào thư mục bất kì trong đĩa cứng. Ví dụ: giải nén vào thư mục C:\PHP.

– Để kiểm tra xem quá trình cài đặt được chưa? Bạn sẽ mở chương trình cửa sổ dòng lệnh (CMD), di chuyển dấu nhắc lệnh vào thư mục C:\PHP, gõ lệnh php –v nếu xuất hiện thông tin về phiên bản của trình thông dịch PHP là được. Ví dụ,

C:\PHP>php -v

PHP 8.0.11 (cli) (built: Sep 21 2021 18:25:57) ( NTS Visual C++ 2019 x64 )

Copyright (c) The PHP Group

Zend Engine v4.0.11, Copyright (c) Zend Technologies

Viết và chạy một chương trình PHP

– Sử dụng một Text editor (ví dụ Notepad) hoặc IDE bất kỳ, nhập vào đoạn mã sau:

<?php

            echo "PHP chao bac Teo.";

?>

– Lưu lại với tên bất kỳ, ví dụ myTest1.php

– Chép tập tin myTest1.php vào thư mục C:\PHP

– Trong chương trình cửa sổ dòng lệnh, tại dấu nhắc C:\PHP, gõ lệnh php myTest1.php, để xem kết quả, ví dụ:

C:\PHP>php myTest1.php

PHP chao bac Teo.

– Xóa tập tin myTest1.php để đảm bảo thư mục C:\PHP được gọn gàng.

– Cũng có thể để tập tin mã nguồn ở vị trí bất kì (ví dụ D:\), tuy nhiên khi chạy thì phải chỉ rõ đường dẫn, ví dụ:

C:\PHP>php d:/myTest1.php

PHP chao bac Teo.

Thiết lập biến môi trường PATH cho trình thông dịch PHP

Biến môi trường trong Windows

– Biến môi trường được sử dụng để tham chiếu tới ứng dụng

– Giá trị của biến chính là đường dẫn tới tập tin thực thi (.exe) của ứng dụng, các giá trị của biến được ngăn cách nhau bằng dấu chấm phẩy (;)

– Trong cửa sổ dòng lệnh, gõ lệnh “set” để xem các biến môi trường và giá trị tương ứng

– Trong cửa sổ dòng lệnh, gõ lệnh “path” để xem giá trị của biến path

– Biến môi trường gồm hai loại: biến hệ thống và biến người dùng; biến hệ thống cho phép mọi người đều dùng được, admin mới được phép thay đổi biến này; biến người dùng chỉ cho một người cụ thể được thay đổi giá trị và sử dụng.

Cần thiết lập biến môi trường cho một lệnh (ví dụ php.exe). Mục đích là: để khi vào cửa sổ dòng lệnh, gõ lệnh (ví dụ php) ở mọi vị trí thì Windows đều tìm được tập tin thực thi (php.exe) để chạy.

– Nhấn phím window (biểu tượng cửa sổ) trên bàn phím

– Nhập chữ “system”, sẽ thấy xuất hiện mục System (control panel), bấm vào mục System

– Tại cửa sổ System, chọn mục Advanced system settings

– Trong cửa sổ System Properties, tab Advanced, chọn mục Environment Variables…

– Trong cửa sổ Environment Variables, mục User variables for…, chọn Path, chọn Edit

– Trong cửa sổ Edit environment variable, bấm nút New và nhập giá trị của biến môi trường, ví dụ: C:\php

– Bấm OK (một số lần) để hoàn thành việc thiết lập biến môi trường

– Để kiểm tra xem việc thiết lập thành công hay chưa, mở cửa sổ dòng lệnh (cmd), ở vị trí bất kì, nhập lệnh php –v, nếu lệnh này chạy được, nghĩa việc thiết lập biến môi trường đã thành công

Giờ có thể chạy trình thông dịch PHP ở mọi vị trí trong cửa sổ dòng lệnh. Ví dụ:

D:\>php -v

PHP 8.0.11 (cli) (built: Sep 21 2021 18:25:57) ( NTS Visual C++ 2019 x64 )

Copyright (c) The PHP Group

Zend Engine v4.0.11, Copyright (c) Zend Technologies

Hoặc,

D:\>php myTest1.php

PHP chao bac Teo.

1.1.4       Xem và đọc thêm

– [1] Dùng các từ khóa sau tìm kiếm trên mạng để đọc thêm: CMS, interpret, interpreter, compile, compiler, trình thông dịch, trình biên dịch, web development framework

– [2] List of CMS: https://en.wikipedia.org/wiki/List_of_content_management_systems

– [3] Interpreter: https://en.wikipedia.org/wiki/Interpreter_(computing)

– [4] High level language, assembly and machine language: https://www.cise.ufl.edu/~mssz/CompOrg/CDA-lang.html

– [5] PHP: https://www.php.net/

1.1.5       Bài tập và thực hành

Bài tập 1. Cài đặt PHP, chạy ở chế độ dòng lệnh CLI (command-line interface).

Bài tập 2. Lập trình các chương trình sau. (nguồn: https://www.w3resource.com/php-exercises/php-basic-exercises.php)

2.1. Write a PHP script to get the PHP version and configuration information.

2.2. Write a PHP script to display the following strings.

Sample String:

'Tomorrow I \'ll learn PHP global variables.'

'This is a bad command : del c:\\*.*'

Expected Output :

Tomorrow I 'll learn PHP global variables.

This is a bad command : del c:\*.*

2.3. Write a PHP script, which will return the following components of the url 'https://www.w3resource.com/php-exercises/php-basic-exercises.php'.

List of components : Scheme, Host, Path

Expected Output :

Scheme : http

Host : www.w3resource.com

Path : /php-exercises/php-basic-exercises.php

[Gợi ý]

Bài tập 2.

2.1. Write a PHP script to get the PHP version and configuration information.

<?php

            phpinfo();

?>

2.2. Write a PHP script to display the following strings.

<?php

            echo "Tomorrow I 'll learn PHP global variables."."\n";

            echo "This is a bad command : del c:\\*.*"."\n";

?>

or

<?php

            echo 'Tomorrow I \'ll learn PHP global variables.'."\n";

            echo 'This is a bad command : del c:\\*.* '."\n";

?>

2.3. Write a PHP script, which will return the following components of the url

<?php

            $url = 'https://www.w3resource.com/php-exercises/php-basic-exercises.php';

            $url=parse_url($url);

            echo 'Scheme : '.$url['scheme']."\n";

            echo 'Host : '.$url['host']."\n";

            echo 'Path : '.$url['path']."\n";

?> 

1.1.6       Câu hỏi ôn tập

Câu 1. Ngôn ngữ nào sao đây không phải là ngôn ngữ kiểu thông dịch?

A. PHP

B. Ruby

C. C#

D. JavaScript

Câu 2. Ngôn ngữ nào sau đây không phải là ngôn ngữ kiểu biên dịch?

A. Java

B. C#

C. Python

D. PHP

Câu 3. In computer science, an _______ is a computer program that directly executes instructions written in a programming or scripting language, without requiring them previously to have been compiled into a machine language program.

A. compiler

B. interpreter

C. assembler

D. coder

Câu 4. In computing, a ________ is a computer program that translates computer code written in one programming language (the source language) into another language (the target language).

A. translator

B. interpreter

C. compiler

D. assembler

Câu 5. Để làm ra một trang web bán hàng, cách làm nào là nhanh nhất trong những cách sau?

A. Lập trình bằng hợp ngữ (assembly)

B. Sử dụng framework

C. Sử dụng CMS

D. Lập trình bằng ngôn ngữ cấp cao (thuần)

-----

Video 1 (bài giảng)

Slide 1 (bài giảng)

Video 2 (thực hành)

Slide 2 (thực hành)

-----

Cập nhật: 17/8/2023

-----

Bạn muốn tự học HTML bài bản? Xem thêm