部署网站到aws服务器

项目部署:网站部署到aws服务器(python)

1. 准备:

  • 任意一个云服务器(阿里云,AWS,百度云,均可)
  • 一个已经完成的WEB项目

2. 开始部署

2-1. 设置服务器安全组

tips: 每个服务器的设置安全组不一样,可自行参考自己服务器如何设置

打开常用端口(高手可自行指定端口)

  • 80/80 Nginx的默认端口
  • 3306/3306 mysql的默认端口
  • 6379/6379 redis的默认端口
  • 23/23
  • 443/433
  • 22/22
  • 80/80
  • 3389/3389

2-2. 安装Python环境(本次3.7为例,服务器有的话,可以不需要安装)

  1. 安装依赖包:
    yum install opensll-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ opensll-devel libffi-devel python-devel mariadb-devel

  2. 下载Python源码
    wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz 下载

    tar -xzvf Python-3.7.3.tgz -C /tmp 解压到/tmp

    cd /tmp/Python-3.7.3 切换到tmp

  3. 把Python3.7安装到 /usr/local目录

    ./configure --prefix=/usr/local

    make

    make altinstall # 这一步比较耗时

  4. 更改/usr/bin/python链接

    ln -s /usr/local/bin/python3.7 /usr/bin/python3

    ln -s /usr/local/bin/pip3.7 /usr/bin/pip3

    tips: 当已有链接时可执行 -sf 覆盖

    ln -sf /usr/local/bin/python3.7 /usr/bin/python3

    ln -sf /usr/local/bin/pip3.7 /usr/bin/pip3

2-3. 安装MySQL

  1. 下载 MySQL yum包
    wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm

  2. 安装MySQL源
    rpm -Uvh mysql57-community-release-el7-10.noarch.rpm

  3. 安装MySQL服务端,需要等待一些时间
    yum install -y mysql-community-server

  4. 启动MySQL
    systemctl start mysqld.service # 后台启动

  5. 检查是否启动成功
    systemctl status mysqld.service

  6. 获取临时密码,MySQL5.7为root用户随机生成了一个密码
    grep 'temporary password' /var/log/mysqld.log

  7. 通过临时密码登录MySQL,进行修改密码操作
    mysql -uroot -p

  8. 因为MySQL的密码规则需要很复杂,我们一般自己设置的不会设置成这样,所以我们全局修改一下
    mysql> set global validate_password_policy=0;
    mysql> set global validate_password_length=1;

    修改密码
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';

  9. 授权其他机器远程登录
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;

    FLUSH PRIVILEGES;

  10. 设置MySQL的字符集为UTF-8,令其支持中文
    vim /etc/my.cnf

    [mysql]
    default-character-set=utf8

  11. 重启MySQL
    systemctl restart mysqld.service

  12. 查看MySQL运行状态
    ps -aux|grep mysqld

2-4. 安装Redis

  1. 安装redis
    yum install redis

  2. 启动redis
    systemctl start redis

2-5. 安装虚拟环境

tips:
使用虚拟环境,当项目多时,更方便维护和管理,这里以pipenv为例

  • pip3 install pipenv 安装虚拟环境
  • mkdir 你的文件夹 创建自己的文件夹

2-6. 两种方法上传项目到服务器

2-6-1. 方法1,使用FileZilla上传项目

下载地址及安装方法,可以自行百度。都很简单

  1. 将本地的环境导出,以便在服务器上安装
    pip freeze > requirements.txt

  2. 将本地环境安装到服务器
    pip install -r requirements.txt

  3. 创建数据库
    create database bbs charset=utf8;

  4. 重新映射数据库(以flask框架为例)

# 删除原有的映射文件 
rm -rf migrations/ 
python manage.py db init 
python manage.py db migrate 
python manage.py db upgrade
  1. 映射完成后,通过ip去访问
    http://xxx.xxx.xxx.xxx:port/

2-6-2. 使用scp命令上传

  1. 有xxx.pem的上传方式
    scp -i 你的pem -r 文件目录 用户名@主机IP:保存到的路径
    示例:
    scp -i C:\Users\Administrator\Desktop\xxx.pem -r G:\ceshi\job\xxx [email protected]:/home/centos/project

  2. 不需要xxx.pem时
    scp -p 22 文件 h@主机地址:desktop/文件路径

  3. tips:
    传目录时要指定-r 不指定只能传入文件而不是目录

2-7. 安装uwsgi

介绍:
uwsgi是一个应用服务器,非静态文件的网络请求就必须通过他完成, 他也可以充当静态文件服务器,但不是他的
强项。uwsgi是使用python编写的,因此通过pip3 install uwsgi就可以了。(uwsgi必须安装在系统级别的Python环
境中,不要安装到虚拟环境中)。然后创建一个叫做uwsgi.ini的配置文件:

[uwsgi] 
# 必须全部为绝对路径 
# 项目的路径 
chdir = /root/flask-project/bbs/ 
# flask的wsgi文件 
wsgi-file = /root/flask-project/bbs/bbs.py 
# 回调的app对象 
callable = app 
# Python虚拟环境的路径 pipenv --venv 进入到虚拟环境,目录里面执行 
home = /root/.local/share/virtualenvs/flask-project--bwy33Ao 
# 进程相关的设置 
# 主进程 
master = true 
# 最大数量的工作进程 
processes = 10 http = :5000 
# 设置socket的权限 
chmod-socket = 666 
# 退出的时候是否清理环境 
vacuum = true

退出虚拟环境 : deactivate

依赖环境安装
yum install -y gcc* pcre-devel openssl-devel

运行
uwsgi --ini uwsgi.ini

检查是否可行
在浏览器中访问http://ip地址:5000,如果能够访问
到页面(可能没有静态文件)说明uwsgi配置没有问题。

2-8. 安装和配置nginx

nginx介绍:
虽然uwsgi可以正常的部署我们的项目了。但我们还是依然要采用nginx来作为web服务器。使用nginx来作为web
服务器有以下好处:

  1. uwsgi对静态文件资源处理并不好,包括响应速度,缓存等。
  2. nginx作为专业的web服务器,暴露在公网上会比uwsgi更加安全一点。
  3. 运维起来更加方便。比如要将某些IP写入黑名单,nginx可以非常方便的写进去。而uwsgi可能还要写一大段代码才能实现。

1.安装:
yum install nginx

2.nginx的简单操作命名

  • 启动:systemctl start nginx
  • 关闭:systemctl stop nginx
  • 重启:systemctl restart nginx

3.添加配置文件
/etc/nginx/conf.d目录下,新建一个文件,叫做bbs.conf,然后将以下代码粘贴进去:

upstream bbs{
     
		server 127.0.0.1:5000; }

# 配置服务器 server { 
	# 监听的端口号 
	listen 80; 
	# 域名 
	server_name 47.xxx.xxx.30; 
	charset utf-8; 
	# 最大的文件上传尺寸 
	client_max_body_size 75M; 
	# 静态文件访问的url 
	location /static {
      
	# 静态文件地址 
	alias /root/flask-project/bbs/static;
}
# 最后,发送所有非静态文件请求到flask服务器 
location / {
      
	uwsgi_pass 127.0.0.1:5000; 
	# uwsgi_params文件地址 
	include /etc/nginx/uwsgi_params;
	}
}

写完配置文件后,为了测试配置文件是否设置成功,运行命令:service nginx configtest,如果不报错,说明成
功。 每次修改完了配置文件,都要记得运行systemctl start nginx。

tips:
当出现bash时,需要设置环境变量
方法:
vim /etc/profile

在最后一行输入:
export PATH="$PATH:/需要添加的路径"

在执行
source /etc/profile

你可能感兴趣的:(Python,Flask框架,web前端,linux,python,nginx)