当你用Flask框架在本地完全开发好一个应用程序后,想部署到服务器上,让互联网用户可以访问它,这与搭建本地开发环境还是有一些不一样的地方。首先,我们假设在服务器上安装了CentOS-7系统,使用git来上传和后续更新程序源代码,由于Flask自带的开发Web服务器性能不足以应对生产环境的并发访问,所以我们使用Gunicorn来替代它,同时,整个Web应用有许多静态资源,而Nginx非常善于处理这类请求,所以在Gunicorn前面再部署Nginx来提供静态资源服务,将其它请求反向代理给后面的Flask应用服务器Gunicorn。最后,为保证我们的Web应用持续提供服务,使用Supervisor来监控MongoDB/Gunicorn/Nginx的服务状态,当某一服务意外停止后,它会自动重启它。另外,我们也可以用Fabric实现这整个生产环境的部署过程自动化
不同操作系统中的换行符标志不一样,在 ASCII 编码中以 LF (NL line feed, new line) 换行键和 CR (carriage return) 回车键来控制文本换行,即我们经常说的 \n 和 \r。Windows下面保存的文本文件默认换行符是 CRLF,而 Linux 是 LF,所以 Windows 下面的文件放到 Linux 系统中无法被打开,本文介绍一些常用方法来查看当前文件使用的是哪种文本换行符,以及如何进行转换
如果用Windows系统作为开发环境,想要在本地使用MongoDB数据库,可以在MongoDB官网下载安装程序并进行简单的设置即可,当然,你需要手动创建保存数据文件和日志文件的目录,并在配置文件中指定这些目录位置,然后将MongoDB加入到Windows Services中,方便以后启动或停止服务,同时可以设置是否开机启动MongoDB
which命令在PATH系统变量所指定的路径中搜索第一个匹配的结果,即查询某命令是否存在,它的具体执行路径是什么。whereis命令在/usr/bin或/usr/sbin等特定目录中查找文件。which和whereis都只是在指定目录中而非整个文件系统中查找文件,所以速度很快。locate则是在系统自动构建的索引数据库中模糊查找,当你记不清完整文件名时,使用locate查找很方便,缺点是索引并不是实时更新的。find命令可以指定精确的查询条件,比如模糊的文件名、文件类型、文件大小、文件权限、文件的时间戳、文件属主或属组、甚至还支持正则表达式,可以说是非常强大的搜索工具,缺点是速度较慢
如果你设置好文件权限后,却经常遇到Permission denied,说明你的权限设置有问题,判断是否有文件相应的操作权限,首先要判断是否拥有此文件的上层目录的相应操作权限。本文详细介绍了为什么rx权限对目录文件很重要,创建普通文件和目录文件时的预设权限是什么,有时候你用root账号也无法删除一个文件,可能是此文件设置了隐藏权限,如果有团队项目文件共享的需求你可能要用到SUID/SGID/SBIT,配置Samba或FTP服务器时还会经常使用访问权限控制ACL,所有这些文件权限管理你都可以轻松掌握,只需要静下心来仔细阅读这篇文章并动手做实验即可!