为了把flask写的小web app放到网上,申请了个AWS,申请找单独教程,只要有双币信用卡还是很方便的。参考:http://www.freehao123.com/amazon-aws/,这个是之前的教程,现在变化比较多,参考下,流程还是差不多。有个信用卡,电话验证下,然后下载秘钥,配置下需要用到的端口,记得把SSH端口打开,不然没法连上,这些也就差不多了。但是提醒下,如果想要免费不要乱选哦,虽说是免费1年,但是你有用他别的服务还是一样从你信用卡里扣钱的。
如果是windows用putty来联,但是注意秘钥需要用puttygen重新生成ppk格式的,pem 格式putty不能用。
如果mac,linux的,就简单了,
$ ssh -i /path/key_pair.pem ubuntu@public_dns_name
参考:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-connect-to-instance-linux.html#using-putty
对于Ubuntu系统来说,用户名为ubuntu。对于Amazon Linux系统,用户名ec2-user。对于RHEL5, 用户名可能是root,也可能是ec2-user。
我用的ubuntu14.04,默认带了python,但是为了之后多个项目不冲突还是装了个virtualenvwrapper,然后配置了下.bashrc,让之后打开terminal就自动加载。新建了envs,devel分别放虚拟环境跟开发文件
sudo apt-get upgrade sudo apt-get install python-pip pip install virtualenvwrapper
export WORKON_HOME=~/envs export PROJECT_HOME=~/devel export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7 export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv source /usr/local/bin/virtualenvwrapper.sh
mkvirtualenv flask #建立flask并自动workon flask pip install flask这样flask环境就有了。
曾想过用vsftpd搭建FTP来上传程序,但是想到安全性,还是选用SFTP吧。SFTP还一个好处就是,用的SSH协议跟端口,已经能SSH了,就不要再多开FTP端口了,增加安全隐患。
跟SSH连接一样,需要用到秘钥
$ sftp -i /path/key_pair.pem ubuntu@public_dns_name
常用命令有: quit --退出 ls --查看远程目录文件 lls --查看本地目录文件 cd --改变远程目录路径 lcd --改变本地目录路径 put --将本地文件上传到远程目录 get --下载远程目录文件到本地 pwd --远程当前目录 lpwd
cd 路径 更改到远程目录的路径 lcd 路径 更改到本地目录的路径 chgrp group path 将文件path的组更改为group chmod mode path 将文件path的权限更改为mode chown owner path 将文件path的属主更改为owner exit 退出 sftp help 显示这个帮助文本 get 远程路径 下载文件 ln existingpath linkpath 符号链接远程文件 ls [选项] [路径] 显示远程目录列表 lls [选项] [路径] 显示本地目录列表 mkdir 路径 创建远程目录 lmkdir 路径 创建本地目录 mv oldpath newpath 移动远程文件 open [用户@]主机[:端口] 连接到远程主机 put 本地路径 上传文件 pwd 显示远程工作目录 lpwd 打印本地工作目录 quit 退出 sftp rmdir 路径 移除远程目录 lrmdir 路径 移除本地目录 rm 路径 删除远程文件 lrm 路径 删除本地文件 symlink existingpath linkpath 符号链接远程文件 version 显示协议版本
sftp> get /var/www/fuyatao/index.php /home/fuyatao/
这条语句将从远程主机的 /var/www/fuyatao/目录下将 index.php 下载到本地 /home/fuyatao/目录下。
sftp> put /home/fuyatao/downloads/Linuxgl.pdf /var/www/fuyatao/
这条语句将把本地 /home/fuyatao/downloads/目录下的 linuxgl.pdf文件上传至远程主机/var/www/fuyatao/ 目录下。
你如果不知道远程主机的目录是什么样, pwd命令可以帮您查询远程主机的当前路径。查询本机当前工作目录 lpwd.
改变路径可以用cd ,改变本机路径可以用 lcd;
ls rm rmdir mkdir 这些命令都可以使用。同理调用本机都是加 l , 即 lls lrm.
要离开sftp,用exit 或quit、 bye 均可。详细情况可以查阅 man sftp.
上传当前整个目录
put -r .
虽说AWS不重启ip不变,但是因为手里有个www.smartlinkcloud.com,智联网云平台。所以还是想绑定域名。
首先申请个Elastic IP,但是这IP不会自动绑你的instance,所以手动绑下。并且如果不绑的话,算闲置IP,会说你浪费资源扣费的。
用的时候发现godaddy的DNS又是解析不稳定,给他挪到DNSPOD上去了。网址:www.dnspod.cn
需要现在dnspod上注册,添加记录,我还是用的A记录,把www跟@指到AWS刚才申请的Elastic IP上,DNS会给你默认添加2个。
接着需要去狗爹上去把NameServers里把dnspod里给分配的2个DNS给更新下,然后等解析就好了。
但是有个问题要注意下,我开始都解析好了,发现ping也ping通了,但是怎么都连不上网站。折腾了好久,用SSH去连AWS才发现连不上了才知道原来申请了Elastic IP后,publicDNS也跟着变掉了,所以都连不上了。于是重新修改了下SSH连接字符串,正常连上后运行网站程序,终于可以连上了!
上面虽然已经实现了上传,可以在本地开发完上传运行调试。但是如果有问题来回折腾也是很麻烦。想到玩BeagleBone Black上的那个云编辑器很酷,试下能不能远程调试。
cloud9 IDE :
https://c9.io/
支持python,nodejs等,正好合我用。界面很酷吧!
Requirements:
Install:
git clone https://github.com/ajaxorg/cloud9.git cd cloud9 npm install
The above install steps create acloud9directory with abin/cloud9.shscript that can be used to start Cloud9:
bin/cloud9.sh
Optionally, you may specify the directory you'd like to edit:
bin/cloud9.sh -w ~/git/myproject
Cloud9 will be started as a web server on port-p 3131, you can access it by pointing your browser to: http://localhost:3131
By default Cloud9 will only listen to localhost. To listen to a different IP or hostname, use the-l HOSTNAMEflag. If you want to listen to all IP's:
bin/cloud9.sh -l 0.0.0.0
If you are listening to all IPs it is adviced to add authentication to the IDE. You can either do this by adding a reverse proxy in front of Cloud9, or use the built in basic authentication through the--usernameand--passwordflags.
bin/cloud9.sh --username leuser --password c9isawesome
Cloud9 is compatible with all connect authentication layers, to implement your own, please see theplugins-server/cloud9.connect.basic-authplugin on how we added basic authentication.