Day28 - 部属到正式环境 (3)

今天的实作内容主要根据教学网站进行。

将应用程序安装到Heroku (接续Day27)

使用GIT将程序安装到Heroku

  1. Heroku网站申请帐号。

  2. 在本机端安装Heroku client

  3. 使用Heroku client建立GIT远端程序库。

heroku create
heroku create [URLname]

如果有指定URLname,之後建立的网站网址会是 http://URLname.herokuapp.com;如果不指定URLname,Heroku预设会乱数产生名称。

若之後想要改名,可以用以下指令:

heroku apps:rename new_name --app old_name
  1. 在settings.py中设定ALLOWED_HOSTS。
    当DEBUG模式关闭时,Django会要求要设定ALLOWED_HOSTS。
ALLOWED_HOSTS = ['.herokuapp.com', '127.0.0.1']
  1. 将程序推送到Heroku。
git add -A
git commit -m "comment"
git push heroku main

推送上去後,Heroku会自动建置网站。

第一次建置时有发生错误讯息,发现有两个问题:

  • 昨天将私人开发的套件整合进专案里,此套件有使用beautifulsoap,但requirements.txt没有此套件。

    • 解法:requirements.txt加入beautifulsoap。
  • 在settings.py中有保留开发环境的资料库连线设定 (django.db.backends.mysq),但requirements.txt中没有安装mysqlclient,导致建置时会发生错误。

    • 解法1:将settings.py分成正式环境和开发环境两个版本,移除正是环境的mysql设定。
    • 解法2:requirements.txt加入mysqlclient。
# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'bookhelper',
        'USER': '',
        'PASSWORD': '',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

# Heroku: Update database configuration from $DATABASE_URL.
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
  1. 成功建置後,建立资料库schema和建立superuser。
heroku run python manage.py migrate
heroku run python createsuperuser
  1. 设定系统环境参数。
    在前两天的流程中,settings.py有一些变数改成使用系统环境参数,故现在需要在Heroku上设定这些参数。

确认目前参数设定:

heroku config

设定参数内容:

heroku config: set 参数名称=数值

实际设定内容如下:

DJANGO_SECRET_KEY=xxxxxxxxxxxxxxxxxx  
DJANGO_DEBUG=

DJANGO_SECRET_KEY基於资讯安全考量,应该要和开发环境不同。

DATABASE_URL在建置时会由Heroku自动设定。

  1. 使用浏览器确认网站是否可连线。
heroku open

<<:  [Day_26]函式与递回_(5)

>>:  Day_28:让 Vite 来开启你的Vue之 跌入深坑_生命周期 hooks 与 async/await

D11 - 如何用 Apps Script 寄出客制化的表单并搜集分散在 Google Sheet 中的回应?(ㄧ)复制并客制你的 Google Form

今日目标 很多时候我们会需要搜集些不同的资料。像是 Marketing 在做大规模但针对不同组织的调...

Proxmox VE 虚拟机防火墙管理 (二)

当我们已经开始使用防火墙规则管理连出入的网路传输时,随着制订规则数目越来越多,在管理上就会遇到开始...

[想试试看JavaScript ] 阵列一些操作阵列好用的方法 forEach

阵列-一些操作阵列好用的方法 这篇整理一些常用的阵列方法 forEach() forEach() 会...

C# web Form web.aspx 跳出提示视窗的4种方法

一般在写ASP.NET是不太希望用 response.write来作页面输出。 因为用respon...

[JMeter]简单的多人登入压力测试

将JMeter安装完成後,就可以开始尝试做一些简单的测试了, 我们可以先模拟多人同时登入的情况,进行...