好的,看到标题大家会觉得啊你怎又要乔迁了
没错,由於昨天加前天的尝试
我把原本的aws搞爆了
不过俗话说的好,三折肱而成良医
经过两天研究後终於成功架起来啦
所以我们这篇就把前面所有的成见步骤全部抛弃
手把手带大家重新成功建一个能跑的aws
废话不多说,咱们累狗~
好的,首先第一步我们当然要先来建立EC2啦
一样点选左上的新执行个体
然後就一路下一步到Configure Security Group这个地方
上次有一个失误是我们没有开8000的port给django用
所以我们这次把8000 port加进来
然後一样一路下一步到确认环境之後
接下来他会要你选金钥
这里为了保险我们再重新申请一个
下一步我们先下载pip3
这里我们就不偷懒,手把手带大家安装
一样先进去我们的aws实体
ssh -i "stonks_key2.pem" ubuntu@你的aws IP
先更新apt-get内所有套件,然後下载pip3
sudo apt-get update
sudo apt install python3-pip
OK,目前为止一切正常
首先一样执行安装三步骤
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
接着启动MySQL
sudo service mysql start
进去看MySQL老板跟通关密语
sudo cat /etc/mysql/debian.cnf
用老板的身分跟密码登入
mysql -u debian-sys-maint -p
接着就是建立root user了
不过很遗憾的是,aws上的MySQL不能直接设root的密码
那没关系,山不转路转
我们就再创一个人,跟管理者说他是root的亲弟弟请给他权限就好
所以我们创建root user步骤会变如下:
USE mysql;
CREATE USER 'django'@'localhost' IDENTIFIED BY 'AmaneKanata';
GRANT ALL ON *.* TO 'django'@'localhost';
FLUSH PRIVILEGES;
这样就变成说
「您好这位叫做django,他是root的亲弟弟,所以请给他跟root一样的权限谢谢」
然後走之前也别忘了帮创一个stonks_db
CREATE DATABASE stonks_db;
打完收工,高歌离席
为什麽这里会讲相关东东呢
因为这边要处理的东西真的很多
首先光是django下载就会遇到很多问题
所以我们会依时序一个一个下载下来
首先先处理mySQL的my_config.h
sudo wget https://raw.githubusercontent.com/paulfitz/mysql-connector-c/master/include/my_config.h -O /usr/include/mysql/my_config.h
为啥要处理这个东东呢
因为aws没有,但是MySQL-python要用上,就是这麽简单
下一步就是之前提到的configparser问题
一样先下载configparser
pip3 install configparser
然後把套件复制一套,格式改成MySQL-python可以吃的格式
sudo cp /usr/lib/python3.8/configparser.py /usr/lib/python3.8/ConfigParser.py
一样由於aws是python3.8,所以路径里的python要改成3.8
馊发馊骨
接下来我们终於可以把那两个传说中的套件
django跟MySQL-python安装上去啦
但我们还要额外装mysqlclient==2.0.1
因为你在後面migrations,极有可能会发生下列问题
AttributeError: module 'MySQLdb.constants.FIELD_TYPE' has no attribute 'JSON' while migrating in Django
所以要把mysqlclient这个东东补上去
pip3 install django
pip3 install MySQL-python
pip3 install mysqlclient==2.0.1
水搁有力
在布署之前,我们有一些地方要先修改
首先还记得我们前面建立MySQL时用了django名称而不是root对吧
所以这边setting.py的DATABASES要改成如下
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'stonks_db',
'USER': 'django',
'PASSWORD': 'AmaneKanata',
'HOST': '',
'PORT': '',
}
}
然後由於你的HOST IP要跟着aws
所以记得ALLOWED_HOSTS也要改成
ALLOWED_HOSTS = ["aws的IP"]
然後由於aws的MySQL CharField会有字数限制
所以我们的stonks_index内的models.py要把CharField修改成TextField
from django.db import models
# Create your models here.
class stonks_DB(models.Model):
comp_id = models.IntegerField() #公司代号
year = models.IntegerField() #财报年度
season = models.IntegerField() #财报季度
balance_sheet = models.TextField(max_length = 10000) #负债表
income_statement = models.TextField(max_length = 10000) #损益表
最後还有一个地方要修改
我们进到stonks_index内的migrations资料夹
里面应该有一个档案叫做
0002_auto_XXXXXXXX_XXXX.py
我们开启这个档案
把里面两个CharField改成TextField
里面的py档应该会变成如下
# Generated by Django 3.2.7 on 2021-09-28 14:43
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('stonks_index', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='stonks_DB',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('comp_id', models.IntegerField()),
('year', models.IntegerField()),
('season', models.IntegerField()),
('balance_sheet', models.TextField(max_length=10000)),
('income_statement', models.TextField(max_length=10000)),
],
),
migrations.DeleteModel(
name='DBTest',
),
]
好的改完以後,commit
git add .
git commit -m "fix for aws environment"
git push
好的接下来回到aws
创立新资料夹,准备clone
设定使用者资讯
git config --global user.email "你的email"
git config --global user.name "你的github使用者名称"
clone你的程序码
https://github.com/konata39/itHome_stonks.git
下python3 manage.py migrate
下python3 manage.py runserver 0.0.0.0:8000
,开跑~
好,没有跳错
在url栏输入(aws IP):8000
好的,经过一番寒彻骨之後总算是让我们django成功建立在aws上啦
明天我们也会顺便把heroku的部分补完
到底heroku没有console要怎搞呢
咱们下回分解~
>>: <Day22>用Shioaji API模拟帐户做台股下单
VMware vCenter 7.0 Standard104HH-D4343-07879-MV08K...
今天要跟大家分享两个不在安装范围内的客制设定,算是我们自己改良版跟大家分享。 第一个是如果照着官方安...
接续昨天的练习:https://ithelp.ithome.com.tw/articles/1026...
终於到了最後一篇了,就来讲讲这次发铁人赛文的感想吧! 过程分享 这次铁人赛其实有先囤了一些文章,可是...
上架 一.打包APK 1.选Buile-Generate Signed Bundle/APK 2.选...