阿里云ECS部署python及flask(一)

因为原先服务器是单位的,由于安全问题,不好放个人的东西,只好找一个虚拟主机之类的来放。但我对什么云或者虚拟主机都不懂,只是因为在注册域名的时候,看到阿里云有一个免费套餐,反正不用钱,就想试试当练手,就弄了个云服务器ECS基础版。以下是就我个人的部署过程做个记录:

  1. 下完单后,很快云服务器 ECS实例就创建成功,登录阿里云管理控制台,在实例中就可看到已经创建好的实例,并会看到实例的公网地址和私网地址。在其后边的管理->基本信息->更多->重置密码,可以修改root密码。而实例后面的远程连接,可以登录上阿里云上的这个实例。上去一看,其实就是一台centOS的服务器。
  2. 在管理控制台里的远程连接是网页版的,不好看也麻烦。可以用mac的终端连接:ssh root@实例的公网地址。或者使用FinalShell远程登录更方便好用。
  3. 进入系统后,先对系统进行升级:

yum update

  1. 安装python3:云服务器里已经安装了python2.7,但我用的是python3。以下操作需要登录到云服务器
  • 首先安装编译的相关包。其命令如下:
    yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
  • 从https://www.python.org/ftp/python/ 找所需的版本,我下载3.7.1版本,命令:
    wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
  • 解压:
    xz -d Python-3.7.1.tar.xz
    tar -xvf Python-3.7.1.tar
  • 解压完成后,进入相应的解压文件夹,进行编译安装:
    ./configure prefix=/usr/local/python3
    make && make install
    安装完毕,/usr/local/目录下就会有python3了
  • 设置软连接
    ln -s /usr/local/python3/bin/python3 /usr/bin/python3
  1. 创建python的虚拟环境:

因为是测试用,所以我没有新建用户。直接在/root下创建一个项目test。

  • mkdir /root/test
  • python3 -m venv /root/test/venv
  1. 上传文件到云服务器

将本地创建的test项目上传到云服务器,这一步是在本地机子上操作,在mac的终端上:

  1. 在虚拟环境中安装所需的包
  • 在云服务器端,进入刚才创建的python虚拟环境:
    source /root/test/venv/bin/ activate
  • 安装test项目所需的包(刚已经把requirements.txt上传到云服务器的/root/test/gh ):
    pip install -r /root/test/requirements.txt
  1. 依赖包安装完成后,即可在虚拟环境中运行程序test。

python test.py

  1. 云管理控制台->安全组->配置规则->添加安全组规则,将test项目中使用的端口添加进去。(我的test项目使用的是4000端口,见下边的test.py代码)
  2. 在本地端使用浏览器打开该云实例的公网地址:端口,就可以看到你的test项目了。test.py如下:
from flask import Flask

app=Flask(__name__)

@app.route('/')
def index():
    return '<center><h1>Hello Flask</h1></center>'

if __name__ == '__main__':
    app.run(host='0.0.0.0',port=4000)
  1. 安装配置uwsgi,所有操作都需在云服务器的虚拟环境里。
  • 安装uwsgi:

pip install uwsgi

  • 在项目中新建文件test_uwsgi.ini,编写如下配置配置如下:
[uwsgi]

# uwsgi 启动时所使用的地址与端口
socket = 127.0.0.1:8000

# 外网访问端口,如果直接用uWSGI外网,这里由于使用了Nginx,故注释掉
# http= :80

# 指向网站目录
chdir = /root/test/

# python 启动程序文件
wsgi-file = test.py

# python 程序内用以启动的 application 变量名
# app 是 manage.py 程序文件内的一个变量,这个变量的类型是 Flask的 application 类
callable = app

# 处理器数
processes = 4

# 线程数
threads = 2

#状态检测地址
stats = 127.0.0.1:9191

daemonize=/var/log/uwsgi.log
  • 启动:uwsgi --ini test_uwsgi.ini
  • 使用uwsgi之后,将test.py里的
app.run(host='0.0.0.0',port=4000)

改为

app.run()

建议:

uwsgi服务启动(start)停止(stop)重新装载(reload) 一文来配置uwsgi。然后就可以使用以下命令来操作uwsgi:

uwsgi --ini uwsgin.ini # 启动
uwsgi --reload uwsgi/uwsgi.pid # 重启
uwsgi --connect-and-read uwsgi/uwsgi.status # 连接并查看状态
uwsgi --stop uwsgi/uwsgi.pid # 停止服务

  1. 在云服务器上安装配置nginx。
  • 安装nginx:

yum install nginx

  • 配置nginx.conf。使用find / grep nginx.conf查找nginx.conf的路径,并修改其中的server{},如下:
    server {
    
    
        listen       80 default_server;
    #    listen       [::]:80 default_server;
        server_name  test;
    #    root         /usr/share/nginx/html;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location /static {
    
    
    #            alias /var/www/execution/static;
        }
        location / {
    
    
    #			这里指向uwsgi里socket=*设置的地址   
                uwsgi_pass 127.0.0.1:8000;
                include uwsgi_params;
        }
        error_page 404 /404.html;
            location = /40x.html {
    
    
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
    
    
        }
    }
  • 验证配置是否正确: nginx -t
  • 查看Nginx的版本号:nginx -V
  • 启动Nginx:nginx -c /etc/nginx/nginx.conf
  • 快速停止或关闭Nginx:nginx -s stop
  • 正常停止或关闭Nginx:nginx -s quit
  • 配置文件修改重装载命令:nginx -s reload
  1. 安装mysql:
  • 下载并添加存储库:
    下载地址可以在https://www.mysql.com/downloads/ ->Yum Repository ->找到Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package(mysql80-community-release-el7-1.noarch.rpm),点击右边的Download ->最低下的“No thanks, just start my download”即是该下载地址。

sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

  • 设置安装版本,默认是mysql5.7

vi /etc/yum.repos.d/mysql-community.repo

将原先版本下的enabled改为0,想安装的版本下的enabled改成 1 即可。

  • 安装MySQL包

yum install mysql-community-server

  • 安装完成后,启用并启动MySQL服务类型:

sudo systemctl enable mysqld
sudo systemctl start mysqld

  • MySQL安全:
    当第一次启动MySQL服务器时,为MySQL根用户生成一个临时密码。 您可以通过运行以下命令找到密码:

sudo grep ‘temporary password’ /var/log/mysqld.log

运行mysql_secure_installation命令来提高MySQL安装的安全性,并重设root密码。其后会有一些删除匿名用户和临时数据库、是否允许root远程访问等操作,一路“y”下去就可以了:

sudo mysql_secure_installation

连接上mysql,并创建数据库:

mysql -u root -p
CREATE DATABASE test;


配置多项目自启动,可参考《阿里云ECS部署python及flask(二):使用uwsgi emperor +Nginx部署自动启动多个web项目》

猜你喜欢

转载自blog.csdn.net/qq_41090453/article/details/83451321