记录下TDD的各章执行bug以及在Windows环境下需要调整的细节。

第9章:Staging网站的部署测试

1. 【细节调整】通过更改测试临时服务器运行的地址的参数以便使功能测试可以针对staging网站运行

调整内容:修改功能测functional_tests\tests.py时,教程内容如下
在这里插入图片描述
由于教程是在Linux系统上操作,Linux系统可以照以上方式修改,然后执行

STAGING_SERVER=个人ip python manage.py test functional_tests

正确运行后,应该会出现如下3个报错,此处为正常现象
在这里插入图片描述
在这里插入图片描述

报错原因:
对于Windows用户,如果按上述方法修改文件并进行功能测试,会发现功能测照常通过,没有应该出现的报错内容。
修改方式:
方法1:代码修改为

def setUp(self):    # (3)
        self.browser = webdriver.Firefox()
        #staging_server = os.environ.get('个人ip')
        #if staging_server:
        self.live_server_url = 'http://个人ip'

并在cmd直接执行功能测:

python manage.py test functional_tests

方法2:按Linux方式修改.py文件,然后使用git bash打开superlists,执行功能测:

STAGING_SERVER=个人ip python manage.py test functional_tests

2. 【细节调整】在本地创建requirements.txt文件然后通过GitHub传到服务器

**报错命令:**在服务器执行

../virtualenv/bin/pip install -r requirements.txt

报错内容:
pip._vendor.pyparsing.ParseException: Expected W:(abcd…)(at char 0),(line:1,col:1)
pip._vendor.packaging.requirements.InvalidRequirement: Invalid requirement, parse error at " ’ "django=’ "
在这里插入图片描述
**报错原因:**在Windows系统中,cmd执行命令

echo "django==2.1.7" > requirements.txt

(对文件requirements.txt写入django2.1.7,如果没有则先创建)时,若该命令在Linux中执行,只写入django2.1.7,而在Windows的cmd中执行,则写入"django2.1.7"(连同双引号一起写入)
解决方案:
方法1:在本地手动创建.txt文件后,手动写入django
2.1.7,再push到GitHub上
方法2:使用echo命令后,打开.txt文件,手动删除双引号,再push到GitHub上

第10章:实现real网站的就绪部署

1. 【bug解决】让Nginx服务静态文件,重新加载Nginx并重启Gnicorn后,运行功能测后,网页异常

报错位置:

sudo systemctl reload nginx
../virtualenv/bin/gunicorn superlists.wsgi:application

异常内容:
在这里插入图片描述

Invalid HTTP_HOST header: '(个人ip)'. You may need to add 'xxx.xx' to ALLOWED_HOSTS

解决方案:

修改setting.py文件

ALLOWED_HOSTS = []

改为

ALLOWED_HOSTS = ['*']

参考:其他博主内容

第11章:使用Fabric进行自动部署

1. 【bug解决】运行deploy_tools/fabfile.py时

报错代码:

 def deploy():
 	site_folder = f'/home/{env.user}/sites/{env.host}'
 	#其他省略
def _cretae_directory_structure_if_necessary(site_folder):
	#其他省略
		run(f'mkdir -p {site_folder}/{subfolder}'}

报错内容:
deploy_tools/fabfile.py文件中所有f’……'的内容均在最后一个单引号处报错为“SyntaxError: invalid syntax”
解决方案:
全部改成如下形式

def deploy():
 	site_folder = '/home/%s/sites/%s' % (env.user,env.host)
 	#其他省略
def _cretae_directory_structure_if_necessary(site_folder):
	#其他省略
		run('mkdir -p %s/%s' % (site_folder,subfolder))

注意:
deploy_tools/fabfile.py报错不止以上两处,需全改
参考:其他博主内容

2. 【bug解决】对使用sed命令生成的nginx虚拟host建立快捷方式

报错代码:

sudo ln -s ../sites-available/(个人ip) /etc/nginx/sites-enabled/(个人ip)

报错内容:

ln: failed to create symbolic link ‘/etc/nginx/sites-enabled/(个人ip)’: File exists

解决方案:
报错内容显示文件已存在,而手动删除之后仍旧报错。故用-sf命令强行覆盖先前的文件。

sudo ln -sf ../sites-available/(个人ip) /etc/nginx/sites-enabled/(个人ip)

资料

官方教程:

似乎只能看前面部分,需要教程的可私

官方GitHub:

链接

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐