(三)树莓派配置django后端,自启动

6 篇文章 0 订阅
1 篇文章 0 订阅

一.安装python3

1.安装python依赖环境。

$ sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev

2.下载python3.6版本源码并解压。

$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
$ tar zxvf Python-3.6.1.tgz

3.编译安装。挺慢的。

$ cd Python-3.6.1
$ sudo ./configure
$ sudo make
$ sudo make install

4.检查安装。

$ ls -al /usr/local/bin/python*
lrwxrwxrwx 1 root staff       9 May 15 14:53 /usr/local/bin/python3 -> python3.6
-rwxr-xr-x 2 root staff 9840168 May 15 14:51 /usr/local/bin/python3.6
lrwxrwxrwx 1 root staff      17 May 15 14:53 /usr/local/bin/python3.6-config -> python3.6m-config
-rwxr-xr-x 2 root staff 9840168 May 15 14:51 /usr/local/bin/python3.6m
-rwxr-xr-x 1 root staff    3103 May 15 14:53 /usr/local/bin/python3.6m-config
lrwxrwxrwx 1 root staff      16 May 15 14:53 /usr/local/bin/python3-config -> python3.6-config

上述步骤针对的是树莓派没有python的,但是我装的系统自带python2和python3。默认是python2,使用的是3,需要修改成python,即修改优先级。

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

二.上传后端代码,使用requirements.txt安装环(包)

注意!!!!!!如果开机自启动的话一定要在root@ sudo下安装。

pip freeze > requirements.txt
pip install -r requirements.txt

三.启动后端

1.配置数据库 。

python manage.py makemigrations
python manage.py migrate

2.启动后端。

python manage.py runserver 192.168.162.181:8000 # 启动

3.测试接口。

报错:

Invalid HTTP_HOST header: '192.168.162.181:8001'. You may need to add '192.168.162.181' to ALLOWED_HOSTS.

解决:添加准许的hosts,在settings.py中修改。

ALLOWED_HOSTS = ['*']

4.再次测试,通过。 

四.配置django自启动

备注:前面教程中有配置静态IP(一)树莓派配置步骤(配置图形化界面),但是配置无法生效,所以现在无法实现django的自启动。

1.重新配置静态ip。

树莓派连接手机并设置静态IP

2.自启动设置。

1.参照网上的修改etc/rc.local文件

sudo python /home/pi/register/manage.py runserve 192.168.139.181:8001

 发现问题,是root用户无法识别到Django,因为我的Django是在pi用户下安装的。所以安装的时候需要让root用户知道有这个东西。

 如果我在pi账号下,就可以启动。


树莓派可以正常启动连接热点,但是!我ssh没法连接了,那个vnc也连接不了了!!!

我手里没显示器啊,GG了。等下午找个显示器了。

解决方法见:解决SSH和VNC无法连接树莓派的问题


2.将程序作为服务启动

参考:树莓派上设置程序开机自启动树莓派开机自启动的方法(解决rc.local开机不启动)



五.关于IP地址的设置的理解

树莓派作为服务器,安装了MySQL和Django,有多处地方应用了IP,需要特别注意。

在上述过程中,我无法配置静态IP导致每次连接都需要手动更改数据库的IP和启动Django的IP。这样做不怎么对。正确的做法是:

1.Django连接MySQL数据库时的IP使用localhost(127.0.0.1)

'ENGINE': 'django.db.backends.mysql',
        'NAME': "blog",
        'USER': 'root',
        'PASSWORD': '密码',
        'HOST': '127.0.0.1',
        'PORT': '3306',

但这样会报错。

django.db.utils.InternalError: (1698, "Access denied for user 'root'@'localhost'")

报错原因是‘USER’应该是非root用户,所以需要新建一个用户赋予它权限。 

在MySQL下创建用户。

create user '用户名'@'%' identified by '密码';  # 创建用户
grant all on *.* to '用户名'@'%';  # 授权
flush privileges;  # 刷新权限
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'register',
        'USER': 'register',
        'PASSWORD': '密码',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS':{
            'init_command':'SET sql_mode="STRICT_TRANS_TABLES"'
            }
    }
}

2.启动Django服务设置的IP应该为0.0.0.0。

python manage.py runserver 182.168.139.181:8000

改为

Python manage.py runserver 0.0.0.0:8000

原因:参考:服务器中启动服务时候的IP选择:127.0.0.1 vs 0.0.0.0

当一个服务器监听 0.0.0.0 IP地址的话,意味着:监听所有的网络请求。

如果一个服务器有两个IP地址:192.168.1.1和10.1.2.1,则本机中的一个服务监听0.0.0.0的话,则两个IP地址都可以访问该服务

3.局域网内连接树莓派的IP是,动态IP 192.168.139.181。

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值