flask应用部署——安装环境

Posted in 2016-1-6 0:58 | Category: Linux | Tags: nginx python3 linux flask

虽然以前安装过但是没有记录,这次重新安装,趁机记录下来,省得满世界地找

环境: centos7

安装nginx

参考资料
使用yum list nginx会发现nginx是1.6的版本,但现在nginx已经到了1.9,虽然不必那么新, 但是过旧的版本说不定会出现安全问题

# vim /etc/yum.repos.d/nginx.repo

输入

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

然后

# yum list nginx  #你会发现nginx已经是1.8的版本
# yum install nginx
# systemctl start nginx #启动nginx

安装python3

centos7默认安装了python2.7的版本,但我习惯用python3,但是centos无法通过yum install python3安装, 只好自己编译了

安装必要的文件

# yum groupinstall "Development tools"
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel 
readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

下载python3源码

python3已到的python3.5,请按自己的需求下载

$ wget https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz
$ tar xz Python-3.4.4.tgz
$ cd Python-3.4.4
$ ./configure
$ make
# make install

如果提示c 编译器未找到
yum install gcc gcc-c++

安装supervisor

编译安装python3的时候python3-pip就已经安装好了

# pip3 install supervisor
Collecting supervisor
  Downloading supervisor-3 …

为网站启用https并增加ssl证书

Posted in 2015-12-25 7:41 | Category: Web安全 | Tags: ssl nginx

HTTPS和HTTP的区别

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。 HTTPS和HTTP的区别主要为以下四点:

  • https协议需要到ca申请证书,一般免费证书很少,需要交费。
  • http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

申请ssl证书

对于像我这样的穷学生或者不希望花钱的同学可以使用startssl免费ssl证书
当然如果可以,最好购买ssl证书,安全性上更有保障

对于怎么申请startssl免费证书这里不多说,网上很多教程,其中有几点是我在申请中遇到的问题,希望对大家有所帮助
* 在进行域名验证时不论如何startssl搜索不到我的域名注册邮箱,我已将whois保护关闭后还是一样
解决办法:一个不是办法的办法,因为我在qq邮箱使用了域名邮箱,所以我将域名邮箱管理员admin@honmaple.com 更改为postmaster@honmaple.com,然后发送验证邮件到该邮箱对域名进行验证

  • 如何导出公钥
    如果申请成功,在Tool Box点击Certificate List,Action中选择Retrieve导出zip包到本地, 在本地解压就会发现里面有对应服务器类型的crt证书

  • 如何导出私钥
    在申请过程中保存了一个.key文件,这个文件就可以作为私钥(请妥善保管)

如果在申请中对私钥设置了密码,每次重启ngnix都要输入密码,如果不想每次输入密码, 在startssl的Tool Box的Decrypt Private Key中填入保存的私钥以及私钥密码,对私钥进行解密, 将解密后的字符串保存为.key文件

关于nginx配置

在/etc/nginx/conf.d/ssl.conf中添加

server {
     listen       443 ssl;
     server_name  honmaple.com;
     #请更改成你的文件地址
     ssl_certificate /root/ssl/1_honmaple.com.pem;
     ssl_certificate_key /root/ssl/1_honmaple.com.key;

     ssl_session_cache shared:SSL:1m;
     ssl_session_timeout 5m;
     #下面这些请根据实际更改,我的是flask+nginx
     location / {
                        # Pass the request to Gunicorn
                proxy_pass http://127.0.0.1 …