2021-12-15 Ubuntu下搭建 Django 3.x 開發(fā)和運(yùn)行環(huán)境

Django是基于Python的開源代碼的Web應(yīng)用框架。采用了MTV的框架模式,即模型M,視圖V和模版T。它最初是被開發(fā)來用于管理勞倫斯出版集團(tuán)旗下的一些以新聞內(nèi)容為主的網(wǎng)站的,即是CMS(內(nèi)容管理系統(tǒng))軟件。

Ubuntu 版本: 18.04

Django 版本:3.0(https://www.djangoproject.com/)

一. 搭建環(huán)境

1. 安裝 MySQL 或 MariaDB

? 1) MySQL (5.x.x)

? ? $ sudo apt-get update

? ? $ sudo apt-get install mysql-server mysql-client

? ? $ sudo apt-get install libmysqlclient-dev libssl-dev libcrypto++-dev

? Change mysql root password:

? ? $ mysql -u root

? ? ? (1) use mysql;

? ? ? (2) update mysql.user set authentication_string=password('123456') where user='root' and Host ='localhost';

? ? ? (3) update user set? plugin="mysql_native_password";?

? ? ? (4) flush privileges;

? ? ? (5) quit;

? 2) MariaDB

? ? $ sudo apt-get update

? ? $ sudo apt-get install mariadb-server


2. 安裝 Apache2

? ? $ sudo apt-get install apache2


? ? // Ubuntu 下啟用 rewrite 模塊
? ?
? ? $ sudo a2enmod rewrite

? ? $ sudo vim /etc/apache2/sites-enabled/000-default.conf

? ? ? <Directory /var/www/html/>
? ? ? ? ? Options Indexes FollowSymLinks
? ? ? ? ? AllowOverride All
? ? ? ? ? Require all granted
? ? ? </Directory>


3. 安裝 php7 & phpMyAdmin

? ? $ sudo apt-get install php7.x libapache2-mod-php7.x

? ? ? ? ? Create file /var/www/html/index.php, add

? ? ? ? ? <?php
? ? ? ? ? ? phpinfo()
? ? ? ? ?>

? ? $ sudo service apache2 restart

? ? ? ? Visit http://localhost/index.php, it works!
? ?
? ? $ sudo apt-cache search php7.x? ? // Add mysql module for php7.x
? ? $ sudo service apache2 restart

? ? ? ? Visit http://localhost/index.php,See mysql module

? ? $ sudo apt-get install phpmyadmin

? ? ? ? Default folder /usr/share/phpMyAdmin, above mysql root password is 123456.

? ? $ sudo apt-get install php7.x-cgi? ? // If "php-cgi not found"
? ?

4. 安裝 python & pip

? ? Python 2.7.x
? ?
? ? $ sudo apt-get install python-dev python-pip

? ? Python 3.x.x

? ? $ sudo apt-get install python3-dev python3-pip


? ? #######################

? ? 國外的pip源連接不穩(wěn)定,使用阿里的pip源:

? ? 新建 ~/.pip/pip.conf

? ? $ vim pip.conf

? ? ? ? [global]
? ? ? ? index-url = https://mirrors.aliyun.com/pypi/simple/
? ? ? ? [install]
? ? ? ? trusted-host=mirrors.aliyun.com


5. 安裝 Django 3.x

? ? 1)安裝 MySQL client 支持? ? ?

? ? ? ? ? ? $ sudo apt-get install libmysqlclient-dev (Python 3.6.9, 有效)

? ? ? ? ????$ sudo apt-get install python3-mysqldb? (Python 3.8.0,有效)

? ? ? ? ????$ sudo apt-get install python-mysqldb? (Python 2.x, 沒有測試過)

????????????$ sudo pip install mysqlclient???(Django 3.0 以上, 用這個(gè))

? ? ? ? ????$ sudo pip install pymysql? (Django 2.x, 試試這個(gè))

? ? 2)直接安裝 Django

? ? ? ? $ sudo pip install Django==3.0

? ? 3)虛擬環(huán)境下安裝 Django

? ? ? ? 可以用virtualenv創(chuàng)建一個(gè)新的虛擬環(huán)境,安裝所需的 python包。這樣就能確保我們的包配置與我們正在開展的任何其他項(xiàng)目保持良好的隔離。

? ? ? ? (1)安裝 virtualenv

? ? ? ? ? ? ? $ sudo pip3 install virtualenv

? ? ? ? (2)配置 virtualenv 環(huán)境

? ? ? ? ? ? ? $ find ~/ -name virtualenv

? ? ? ? ? ? ? ? ? /home/xxx/.local/bin/virtualenv

? ? ? ? ? ? ? $ cat << EOF > ~/a
? ? ? ? ? ? ? ? ? > export PATH=$PATH:/home/xxx/.local/bin
? ? ? ? ? ? ? ? ? > EOF

? ? ? ? ? ? ? $ virtualenv env
? ? ? ? ? ? ? $ source env/bin/activate
? ? ? ? ? ? ? $ deactivate? ? # 退出虛擬環(huán)境


6. 安裝 mod-wsgi, 設(shè)置 Django + Apache2

? ? ---------- Apache2 WSGI ----------

? ? $ sudo apt-get install libapache2-mod-wsgi
? ? $ sudo apt-get install libapache2-mod-wsgi-py3? ? # For Python 3

? ? $ vim /etc/apache2/apache2.conf

? ? ? ? LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
? ? ? ? LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so-3.x? # For Python 3

? ? ? ? 在apache2.conf或 vHost配置文件里添加如下內(nèi)容:

? ? ? ? <VirtualHost *:8080>? ? ?
? ? ? ? ? ? ServerName localhost
? ? ? ? ? ? ServerAlias localhost_test
? ? ? ? ? ? DocumentRoot /home/xxx/workshop/django/project-name
? ? ? ? ? ? # DirectoryIndex index.html

? ? ? ? ? ? # Media files
? ? ? ? ? ? #Alias /media/ /home/xxx/workshop/django/project-name/media/

? ? ? ? ? ? # Static files (js/css/images)
? ? ? ? ? ? Alias /static/ /home/xxx/workshop/django/project-name/static/
? ? ? ? ? ? <Directory /home/xxx/workshop/django/project-name/static/>
? ? ? ? ? ? ? ? Require all granted
? ? ? ? ? ? </Directory>

? ? ? ? ? ? # WSGI
? ? ? ? ? ? WSGIScriptAlias / /home/xxx/workshop/django/project-name/project-name/wsgi.py
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? <Directory "/home/xxx/workshop/django/project-name/project-name/">
? ? ? ? ? ? ? ? Require all granted
? ? ? ? ? ? ? ? <Files wsgi.py>
? ? ? ? ? ? ? ? ? ? Order deny,allow
? ? ? ? ? ? ? ? ? ? Allow from all
? ? ? ? ? ? ? ? </Files>
? ? ? ? ? ? </Directory>

? ? ? ? ? ? ErrorLog ${APACHE_LOG_DIR}/error.log

? ? ? ? ????CustomLog ${APACHE_LOG_DIR}/access.log combined

? ? ? ? </VirtualHost>

7. 安裝 Django restFramework & Oauth2.0 (開發(fā)RESTFUL時(shí)需要,非必選)

? ? $ sudo pip install djangorestframework
? ? $ sudo pip install djangorestframework-xml (optional)
? ? $ sudo pip install django-oauth-toolkit (optional, djangorestframework-oauth)


8. 安裝 CORS for Django (開發(fā)跨域訪問時(shí)需要,非必選)

? ? $ sudo pip install django-cors-headers

9. 安裝 Captcha (Form提交數(shù)據(jù)的簡單圖形驗(yàn)證,非必選)

? ? $ sudo pip install django-simple-captcha

二. 創(chuàng)建 Django 項(xiàng)目

1. 創(chuàng)建

? ? 運(yùn)行命令行:

? ? $ django-admin startproject 'project-name'

2. 運(yùn)行項(xiàng)目

? ? 進(jìn)入項(xiàng)目 'project-name' 目錄, 運(yùn)行:

? ? $ python manage.py runserver

? ? 用瀏覽器訪問:http://localhost:8000, 可以指定 Host 和 Port,如:

? ? $ python manage.py runserver? 192.168.0.1:8080? ?

3. 添加 app

? ? ? 進(jìn)入項(xiàng)目 'project-name' 目錄, 運(yùn)行:

? ? $ python manage.py startapp 'app-name'

4. 配置 MySQL

? 修改 settings.py

? ? DATABASES = {
? ? ? ? 'default': {
? ? ? ? ? ? 'ENGINE': 'django.db.backends.mysql',
? ? ? ? ? ? 'NAME': 'mydatabase',
? ? ? ? ? ? 'USER': 'mydatabaseuser',
? ? ? ? ? ? 'PASSWORD': 'mypassword',
? ? ? ? ? ? 'HOST': 'localhost',
? ? ? ? ? ? 'PORT': '3306',
? ? ? ? }
? ? }

? 運(yùn)行命令行:
? ? $ python manage.py makemigrations 'app-name'
? ? $ python manage.py migrate

5. Django shell

? ? $ python manage.py shell

6. Django Admin

? ? $ python manage.py createsuperuser

7. 支持多語言(I18n)

? ? Django 2.2.x 下測試過,3.x 沒測試過。

? ? 1) 修改 views.py
? ?
? ? ? ? from django.utils.translation import gettext_lazy as _

? ? ? ? _('Demo text')


? ? 2) 修改模版 HTML

? ? ? ? 略


? ? 3) 修改 setting.py:

? ? ? ? ? #LANGUAGE_CODE = 'en-us'
? ? ? ? ? LANGUAGE_CODE = 'zh-hans'
? ?
? ? ? ? ? # Add locale paths
? ? ? ? ? LOCALE_PATHS = (
? ? ? ? ? ? ? ? ? os.path.join(BASE_DIR, 'locale'),
? ? ? ? ? )

? ? 4) 生成Message文件

? ? ? ? ? $ mkdir locale
? ? ? ? ? $ django-admin makemessages -l zh_Hans?
? ? ? ? ? $ django-admin compilemessages

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容