Thứ sáu, 29/05/2015 | 00:00 GMT+7

Cách chạy trang web Django với Apache, mod_wsgi và MySQL trên FreeBSD 10.1

Bài viết này hướng dẫn bạn cách triển khai một ứng dụng web bằng Django, khuôn khổ Python phổ biến. Vẻ đẹp của việc phát triển với các khuôn khổ web phổ biến là rất nhiều công việc lặp đi lặp lại đã được thực hiện cho bạn, vì vậy bạn có thể tập trung vào việc xây dựng trang web của bạn .

Cho dù bạn có phải là nhà phát triển hay không, thật tuyệt khi biết rằng cốt lõi của những gì bạn đang chạy trên Server của bạn đã trải qua sự giám sát của một cộng đồng open-souce lớn và sẽ ít bị các lỗ hổng bảo mật lớn hơn.

Một điều vốn dĩ không hề đơn giản là biết cách cài đặt và chạy các web framework này bên ngoài môi trường phát triển hoặc thử nghiệm của bạn . Trong bài viết này, ta sẽ chỉ cho bạn cách thực hiện điều đó, sử dụng ngăn xếp Apache, mod_wsgi và MySQL tiêu chuẩn chạy trên FreeBSD 10.1.

Bàn thắng

  • Cài đặt và cấu hình môi trường ảo Python cho trang Django của bạn
  • Tạo và cấu hình một trang Django mẫu để thử nghiệm
  • Cấu hình server MySQL đơn giản và an toàn
  • Cấu hình một server ảo Apache đơn giản sẽ phục vụ trang Django của bạn
  • Kiểm tra xem trang web mới đúc có hoạt động bình thường không

Yêu cầu

Trước khi bắt đầu hướng dẫn này, bạn cần những thứ sau:

  • A FreeBSD 10.1 server
  • Truy cập vào account root của bạn hoặc account có quyền sudo theo hướng dẫn này
  • Kiến thức làm việc về cách chỉnh sửa file văn bản từ dòng lệnh
  • Môi trường Bash shell, vì ta sẽ sử dụng Virtualenv sau trong hướng dẫn này. Làm theo hướng dẫn trong phần Thay đổi Vỏ mặc định của hướng dẫn Cách bắt đầu với FreeBSD 10.1 . Bạn có thể cần đăng xuất và đăng nhập lại để tải Bash shell cho user freebsd của bạn

Bước 1 - Cài đặt và cấu hình môi trường ảo Python

Những điều đầu tiên đầu tiên; đảm bảo các gói hiện tại của bạn được cập nhật.

  • sudo pkg update && sudo pkg upgrade -y

Bây giờ cài đặt tất cả các gói bạn cần bằng cách chạy lệnh sau và nói có với dấu nhắc kết quả. Bạn sẽ nhận thấy rằng nhiều hơn những gì ta đã nhập được cài đặt, vì hệ thống pkg tính toán và chọn tất cả các phụ thuộc phù hợp.

  • sudo pkg install bash ap24-mod_wsgi3 py27-virtualenv mysql56-server

Lệnh virtualenv bạn sẽ sớm sử dụng không hoạt động tốt với shell tcsh user mặc định trong FreeBSD. Thay vào đó ta cần bash . Nếu bạn đến từ môi trường Linux, bạn sẽ cảm thấy như ở nhà. Nếu bạn chưa làm điều này trong yêu cầu , hãy làm theo hướng dẫn tại đây ngay bây giờ.

Bạn có đang chạy Bash shell bây giờ không? Nhớ đăng xuất và đăng nhập lại. Tuyệt quá!

Bây giờ ta hãy bắt đầu trên môi trường Python của ta .

Để dễ dàng tìm thấy mọi thứ, hãy tạo một folder cho trang web bằng cách đưa ra lệnh này.

  • sudo mkdir -p /www/data/www.example.com

Cấp cho account user của bạn quyền truy cập để làm việc trong folder dự án mới của bạn. Phần whoami của lệnh tự động điền vào tên user hiện tại của bạn.

  • sudo chown -R `whoami` /www/data/www.example.com

Thay đổi folder mới tạo của bạn.

  • cd /www/data/www.example.com

Việc sử dụng môi trường ảo trên mỗi trang hoặc mỗi ứng dụng cho phép tùy chỉnh các gói và version Python nào bạn cài đặt, thay vì cài đặt mọi thứ ở cấp độ toàn hệ thống.

Bây giờ tạo môi trường ảo python bằng tiện ích virtualenv .

  • virtualenv venv

Kích hoạt môi trường đó đảm bảo rằng bạn đang cài đặt các yêu cầu cho trang Django của bạn trong môi trường đó thay vì ở cấp độ toàn hệ thống.

  • source venv/bin/activate

Bạn sẽ biết rằng mình đang ở trong môi trường phù hợp khi nhìn thấy dấu nhắc lệnh của bạn được mở đầu bằng (venv) .

Nếu mọi thứ có thứ tự, hãy đảm bảo các công cụ của Python được cập nhật để hoàn thành bước này.

  • pip install -U setuptools pip

Bước 2 - Tạo và cấu hình một trang Django mẫu

Đến đây bạn có thể tạo phần khởi đầu của một trang Django. Bạn sẽ bắt đầu bằng cách cài đặt các yêu cầu python cần thiết để chạy trang web. Đảm bảo rằng bạn vẫn ở trong folder /www/data/ www.example.com và trong môi trường ảo của bạn.

  • pip install django mysql-python

Với hỗ trợ Django và MySQL cho Python được cài đặt, đã đến lúc tạo bố cục dự án bằng tiện ích django-admin của Django.

  • django-admin.py startproject mysite .

Sử dụng editor yêu thích của bạn, mở file mysite/settings.py .

  • vi /www/data/www.example.com/mysite/settings.py

Thay đổi phần DATABASES thành giống như thế này. Đảm bảo rằng bạn thay thế password bằng thứ gì đó an toàn hơn.

/www/data/www.example.com/mysite/settings.py
DATABASES = {     'default': {         'ENGINE': 'django.db.backends.mysql',         'NAME': 'mysite',         'USER': 'mysite',         'PASSWORD': 'password',         'HOST': '/tmp/mysql.sock',     } 

Lưu các thay đổi .

Bước 3 - Cấu hình server MySQL đơn giản và an toàn

Bạn đã cài đặt MySQL, vì vậy bây giờ nó chỉ cần được cấu hình.

Đầu tiên, một chút về dọn dẹp nhà cửa. Mở file /etc/rc.conf để chỉnh sửa.

  • sudo vi /etc/rc.conf

Thêm hai dòng này vào cuối file . Điều này đảm bảo MySQL và Apache sẽ khởi động khi server được khởi động.

/etc/rc.conf
mysql_enable="YES" apache24_enable="YES" 

Ta vẫn chưa cấu hình Apache, nhưng việc thêm cả hai dòng bây giờ sẽ dễ dàng hơn để bạn không quên sau này.

Khởi động version server MySQL.

  • sudo service mysql-server start

Chạy lệnh này để bảo mật server database của bạn.

  • mysql_secure_installation

Đọc tất cả các dấu nhắc (theo hiểu biết của bạn ) và trả lời Y cho tất cả ngoại trừ lựa chọn password . Đối với dấu nhắc password , vui lòng đặt password MySQL gốc thành một thứ an toàn.

Đăng nhập vào version MySQL mới và an toàn hợp lý của bạn, sử dụng password bạn vừa đặt.

  • mysql -u root -p

Thực hiện lệnh này để tạo database trang web mẫu, được gọi là mysite .

  • create database mysite character set utf8;

Bây giờ sử dụng lệnh này để tạo user database mysite và cấp cho nó quyền đối với database bạn vừa tạo. Đảm bảo password trùng với những gì bạn đã đặt trong file settings.py trước đó. Trên thực tế, bạn cũng có thể thay đổi tên database và tên user nếu muốn; chỉ cần đảm bảo database và user bạn tạo trùng với cài đặt trong file cấu hình Python.

  • grant all privileges on mysite.* to 'mysite'@'localhost' identified by 'password';

Nếu bạn không thấy bất kỳ lỗi nào, bạn có thể thoát MySQL shell như sau:

  • quit

Bây giờ database đã sẵn sàng, bạn sẽ sử dụng trình Django manage.py để điền nó vào dữ liệu ban đầu của trang web mẫu của bạn. , điều này phải được thực hiện từ folder của trang web, /www/data/ www.example.com .

  • ./manage.py migrate

(Tùy chọn) Bước 4 - Kiểm tra Ứng dụng Django Mới

Trước khi đi sâu hơn, hãy đảm bảo trang Django mẫu đang hoạt động.

Khởi động server phát triển Django, cho phép nó nghe trên network interface công cộng của Server.

  • ./manage.py runserver 0.0.0.0:8000

Trong console DigitalOcean Server, hãy tìm địa chỉ IP bên ngoài của Server. Bây giờ, trong trình duyệt của bạn, hãy truy cập http://<your ip here>:8000 . Bạn sẽ thấy trang mặc định để cài đặt Django mới.

Điều rất quan trọng là bạn phải nhấn CTRL+C trên bàn phím để thoát khỏi server phát triển Django, vì nó không được sử dụng trong production .

Lưu ý về bảo mật

Có rất nhiều điều để đọc về bảo mật và các phương pháp hay nhất khi chạy bất kỳ trang web nào. Để chạy một cái gì đó thực tế trong production , bạn nên đọc thêm về cách bảo mật đúng cách web server và server database công khai.

Với thông báo dịch vụ công cộng đó, đã đến lúc cấu hình Apache để phục vụ trang Django của ta .

Bước 5 - Cấu hình server ảo Apache đơn giản cho trang web Django của bạn

Sử dụng editor yêu thích của bạn, tạo và chỉnh sửa file /usr/local/etc/apache24/Includes/httpd.conf :

  • sudo vi /usr/local/etc/apache24/Includes/httpd.conf

Thêm tất cả các cài đặt cấu hình sau để tạo server ảo của bạn. Vui lòng thay thế www.example.com bằng tên trang web để trùng với các folder mà ta đã tạo trước đó.

/usr/local/etc/apache24/Includes/httpd.conf
# Settings ServerName mysite  ## Default Overrides ServerSignature Off ServerTokens Prod Timeout 30  ## Virtual Hosts <VirtualHost *:80>      WSGIDaemonProcess mysite python-path=/www/data/www.example.com:/www/data/www.example.com/venv/lib/python2.7/site-packages/     WSGIProcessGroup mysite     WSGIScriptAlias / /www/data/www.example.com/mysite/wsgi.py      <Directory /www/data/www.example.com/mysite>         <Files wsgi.py>         Require all granted         </Files>     </Directory>  </VirtualHost> 

Ở đây, bạn chỉ cần yêu cầu Apache đặt một vài tùy chọn cấu hình mặc định phù hợp và tìm mã Python ở đâu để chạy trang web Django bằng cách sử dụng module mod_wsgi của Apache. Bài viết này có mức độ chi tiết hơn về server ảo Apache, nếu bạn muốn đọc thêm.

Khởi động web server Apache.

  • sudo service apache24 restart

Kiểm tra trang web Django mẫu

Đến đây bạn có thể truy cập http:// your_server_ip từ trình duyệt của bạn và xem trang Django mặc định. Nếu bạn đã cài đặt DNS, bạn cũng có thể sử dụng domain của bạn .

Kết luận

Như bạn thấy , có rất nhiều điều cần tìm hiểu xung quanh chủ đề triển khai ngay cả những trang web và ứng dụng đơn giản nhất. Bước tiếp theo là triển khai ứng dụng tùy chỉnh của bạn, thay vì ứng dụng demo mà ta đã sử dụng trong hướng dẫn.

Nếu bạn có câu hỏi hoặc ý kiến, xin vui lòng để lại bên dưới.

Các liên kết sau có thể giúp bạn tìm hiểu thêm về cách xây dựng và triển khai một trang Django đơn giản.


Tags:

Các tin liên quan

Cách chuyển hướng www thành không có www bằng Apache trên Ubuntu 14.04
2015-05-04
Cách chuyển hướng www thành không có www bằng Apache trên CentOS 7
2015-05-04
Cách thiết lập server Apache, MySQL và Python (LAMP) mà không cần khung trên Ubuntu 14.04
2015-04-29
Cách cấu hình bộ đệm nội dung Apache trên CentOS 7
2015-04-13
Cách cấu hình bộ đệm nội dung Apache trên Ubuntu 14.04
2015-04-10
Cách cài đặt database Apache Accumulo NoSQL thân thiện với dữ liệu lớn trên Ubuntu 14.04
2015-03-19
Cách cung cấp các ứng dụng Django với Apache và mod_wsgi trên CentOS 7
2015-03-19
Cách cung cấp các ứng dụng Django với Apache và mod_wsgi trên Ubuntu 14.04
2015-03-18
Cách cấu hình Apache bằng Ansible trên Ubuntu 14.04
2015-02-18
Apache vs Nginx: Cân nhắc thực tế
2015-01-28