Django phụ thuộc rất mật thiết vào các module đi kèm nên cách tốt nhất để chạy Django là sử dụng môi trường ảo. Python có sẵn module virtualenv hỗ trợ việc tạo môi trường ảo. Bằng cách sử dụng virtualenv, chúng ta có thể dễ dàng đóng gói các module từ môi trường development và đưa lên môi trường production. Thông tin thêm về virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/ Mặc định server đã có sẵn những thành phần sau: * CentOS 6.8 * Python 2.7.x * Apache 2.4 ###1. Tải module virtualenv và thiết lập môi trường ảo **Tải module virtualenv:** ~~~ Bash > pip install virtualenv ~~~ **Tạo môi trường ảo:** Giả sử thư mục chứa app sẽ là `/var/www/html/_django` ~~~ Bash > mkdir /var/www/html/_django > cd /var/www/html/_django > virtualenv -p /usr/bin/python2.7 env ~~~ Sau khi thực hiện xong lệnh `virtualenv` ở trên, sẽ được cấu trúc thư mục như sau: ~~~ /var/www/html/_django |__ env |__ include |__ lib |__ lib64 |__ local |__ bin |__ pip-selfcheck.json ~~~ **Kích hoạt môi trường ảo:** ~~~ Bash # /var/www/html/_django > . /env/bin/activate ~~~ ###2. Tải django và tạo project mới **Tải django:** Sau khi kích hoạt xong môi trường ảo, sử dụng `pip` để tải `django` phiên bản mới nhất: ~~~ Bash (env) > pip install django ~~~ **Tạo project mới:** ~~~ Bash # /var/www/html/_django (env) > django_admin startproject django_sample . ~~~ Dấu `.` cuối cùng trong câu lệnh trên có tác dụng khởi tạo project mới ngay tại thư mục hiện tại. Nếu không sử dụng dấu `.`, django_admin sẽ tạo thư mục project nằm trong một thư mục cùng tên theo dạng sau: `django_sample/django_sample`. Sau khi tạo xong project mới bằng câu lệnh trên, sẽ được cấu trúc thư mục như sau: ~~~ /var/www/html/_django |__ env |__ django_sample |__ __init__ |__ urls.py |__ wsgi.py |__ settings.py |__ manage.py ~~~ ###3. Cài đặt mod_wsgi và thiết lập virtual host mod_wsgi là gì: https://modwsgi.readthedocs.io/en/develop/ Thông tin phiên bản release mới nhất: https://github.com/GrahamDumpleton/mod_wsgi/releases Mặc định server đã có cài sẵn Apache 2.4. Ở đây sẽ bỏ qua bước cài đặt Apache. **Tải source code của `mod_wsgi`, tiến hành compile và cài đặt:** ~~~ Bash > cd /usr/local/src > wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.5.13.tar.gz > tar zxvf 4.5.13.tar.gz > cd 4.5.13.tar.gz > ./configure > make && make install ~~~ > Lỗi gặp phải trong quá trình cài đặt: > 1. Không có apxs > Khắc phục: chạy lệnh `yum install httpd24-devel` để cài đặt > 2. Không có gcc > Khắc phục: chạy lệnh `yum install gcc` để cài đặt > 3. Không có quyền ghi file vào thư mục httpd/modules > Khắc phục: chuyển qua tài khoản quyền root hoặc dùng sudo chmod để tạm thời chuyển quyền của thư mục `httpd/modules` cho tài khoản đang đăng nhập. Nếu quá trình cài đặt thành công, trong thư mục httpd/modules sẽ có thêm một file mới tên là `mod_wsgi.so`. **Load module mod_wsgi vào apache:** Tạo file config để load module mod_wsgi ~~~ Bash > cd /etc/httpd/conf.modules.d > touch 00-wsgi.conf ~~~ Thêm nội dung sau vào file vừa tạo ~~~ Bash LoadModule wsgi_module modules/mod_wsgi.so ~~~ **Thiết lập virtual host cho app django:** Giả sử sẽ truy cập vào app django thông qua sub domain: http://django.nvb-online.com Ở đây sẽ bỏ qua bước tạo record mới cho sub domain trên DNS. Thêm nội dung sau vào file config virtual host của Apache: ~~~ ServerName django.nvb-online.com DocumentRoot /var/www/html/_django WSGIDaemonProcess django_sample python-home=/var/www/html/_django/env python-path=/var/www/html/_django WSGIProcessGroup django_sample WSGIScriptAlias / /var/www/html/_django/django_sample/wsgi.py ~~~ Thông tin cụ thể về các setting: http://modwsgi.readthedocs.io/en/develop/configuration.html Sau khi thiết lập xong, khởi động lại Apache ~~~ Bash > service httpd restart ~~~ ##4. Truy cập vào app django vừa tạo: Truy cập vào app thông qua sub domain: http://django.nvb-online.com Nếu hiện màn hình như bên dưới thì quá trình thiếp lập hoàn tất. ![](images/2017-01-22.png)