tags: python flask aws 安全组 bae
git命令:
从bae远程仓库克隆出本地仓库
git clone https://git.duapp.com/your_bae_appid my_flask
本地文件复制修改完后:
git add -A
git commit -m "initial"
git push
git 记住用户名密码:
$ git config --global user.name [name]
$ git config --global user.emial [email]
$ git config --global credential.helper store
要使用bae部署flask应用:
requirement.txt
,index.py
文件指向appapp.conf
文件使hadlers变成如下所示:handlers:
- url : /.*
script: index.py
aws ec2相当于一个虚拟主机, 新用户免费12个月, 因此可以用它做很多事情
简单来说:
在创建CZ2实例过程中会生成一个密钥对, 存放在本地文件系统内, 远程连接CZ2需要使用.
连接cz2上的ubuntu的命令如下:
$ ssh -i "your_keypairs.pem" ubuntu@your_ec2_IP
连接成功后, 会出现ubuntu的欢迎界面, 后续软件包的安装工作都可以直接用ubuntu的命令进行了
ubuntu 16.04默认有python3.5, 我需要python2.7, 因此:
$ sudo apt-get install python2.7
安装这三个的命令如下:
$ sudo apt-get install python-pip
$ pip install virtualenv
$ sudo apt-get install apache2
$ sudo apt-get isntall libapache2-mod-wsgi
如果pip安装不成功, 可以尝试更新:
$ sudo apt-get update
创建virtualenv虚拟环境, 从下文中requirements.txt
文件中安装依赖包:
$ sudo pip install virtualenv
$ virtualenv myflask
$ source myflask/bin/activate
$ pip install -r "requirements.txt"
从bae上clone代码库到虚拟主机上:
把bae当做了中转
$ git clone https://git.duapp.com/appidnuoqcm2bk8 flask_app
在/home/ununtu
下会生成代码库flask_app
, 该文件下, 应包含requirements.txt
和index.wsgi
连个文件:
requirements.txt
: 由pip freeze > requirements.txt
命令生成, 主要是方便在新的环境里安装依赖包, 并不是必须的, 也可以手动去一一安装
index.wsgi
: 可以看做是web程序的入口, 配置apache2时候用到(名字不是必要的), 内容如下:
# 设置virtualenv运行
activate_this = '/home/ubuntu/myflask/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
# 导入web的app作为application, 与pythonanywhere上是完全一样的
import sys
path = '/home/ubuntu/flask_app'
if path not in sys.path:
sys.path.append(path)
from my_app import app as application
由于安装的是最新版的apache2, 配置与2.2版本之前的不太一样, 修改配置文件/etc/apache2/site-enabled/000-default.conf
:
ServerName example.com
# 指向上面提到的index.wsgi文件
WSGIScriptAlias / /home/ubuntu/flask_app/index.wsgi
# 这是旧的配置方法
# Order deny,allow
# Allow from all
# 新的配置方法
Require all granted
配置完成后, 重新加载配置文件, 重启apache2:
$ sudo /etc/init.d/apache2 reload
$ sudo /etc/init.d/apache2 restart
所有的配置其实完全可以参考官方文档
1: 官方参考文档
关于用sublime text3的sftp插件管理远程主机的问题:
1. 在安装sublime text3中安装sftp插件
2. 配置sftp插件
{
// The tab key will cycle through the settings when first created
// Visit http://wbond.net/sublime_packages/sftp/settings for help
// sftp, ftp or ftps
"type": "sftp",
"save_before_upload": true,
// 这里设置upload_on_save为true, 会使文件保存后自动上传
"upload_on_save": true,
"sync_down_on_open": false,
"sync_skip_deletes": false,
"sync_same_age": true,
"confirm_downloads": false,
"confirm_sync": true,
"confirm_overwrite_newer": false,
// 设置主机, 用户名等
"host": "35.160.27.247",
"user": "ubuntu",
//"password": "password",
//"port": "22",
"remote_path": "/home/ubuntu/",
"ignore_regexes": [
"\\.sublime-(project|workspace)", "sftp-config(-alt\\d?)?\\.json",
"sftp-settings\\.json", "/venv/", "\\.svn/", "\\.hg/", "\\.git/",
"\\.bzr", "_darcs", "CVS", "\\.DS_Store", "Thumbs\\.db", "desktop\\.ini"
],
"file_permissions": "664",
"dir_permissions": "775",
//"extra_list_connections": 0,
"connect_timeout": 30,
//"keepalive": 120,
//"ftp_passive_mode": true,
//"ftp_obey_passive_host": false,
// 使用密钥文件进行连接远程主机
"ssh_key_file": "d:/Code/test.ppk",
//"sftp_flags": ["-F", "/path/to/ssh_config"],
//"preserve_modification_times": false,
"remote_time_offset_in_hours": 0,
//"remote_encoding": "utf-8",
//"remote_locale": "C",
"allow_config_upload": false,
}
注意: 密钥文件若是Linux下的.pem格式的, 应该通过puttygen转换成win下可以使用的.ppk密钥文件
sftp的使用非常简单, 可以浏览远程目录, 下载远程文件/目录, 映射远程目录, 但是对于上传功能, 只对/home/username
目录下有权限, 因此, 感觉这个插件在实际使用中有点鸡肋.(并且这还是一个收费插件)