腾讯云服务器 Ubuntu 16.04 从0开始 搭建Python Web应用(nginx + uwsgi + flask + mysql + redis)

一、新建用户

        1.1 添加用户:

sudo useradd -d "/home/ray" -m -s "/bin/bash" ray

        1.2 修改密码:

sudo passwd ray

        1.3 新用户赋予sudo权限(需强制保存):

sudo vim /etc/sudoers

        1.4 然后切换成新用户登录:

        1.5 设置远程登录密码错误账号锁定:

sudo vim /etc/pam.d/sshd

                在第二行写入: auth required pam_tally2.so deny=3 unlock_time=3600 even_deny_root root_unlock_time=3600

auth required pam_tally2.so deny=3 unlock_time=3600 even_deny_root root_unlock_time=3600

        1.6 查看用户登录失败次数:

sudo pam_tally2 --user

 

二、配置开发环境:

        2.1 更新apt:

sudo apt update
sudo apt upgrade

        2.2 安装各种依赖:

sudo apt install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev

 

三、安装Python:

        3.1 新建python目录:

mkdir python
cd python

               

        3.2 下载python3.8.0.tgz,wget下载,或者windows下载好之后用xftp上传:

wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz

        3.3 解压:

tar -zxvf Python-3.8.0.tgz

        3.4 进入解压后的文件夹:

cd Python-3.8.0

        3.5 配置configure:

./configure --prefix=/usr/local/python38

                3.5.1 如果出现下面这句话:

                       

                则继续运行:

./configure --prefix=/usr/local/python38 --enable-optimizations

        3.6 make编译(此操作耗时很长,1C2G的腾讯云服务器需要40分钟左右):

sudo make
sudo make install

        3.7 添加链接:

sudo rm -rf /usr/bin/python
sudo rm -rf /usr/bin/pip
sudo ln -s /usr/local/python38/bin/python3 /usr/bin/python
sudo ln -s /usr/local/python38/bin/pip3 /usr/bin/pip

        3.8 更新pip、setuptools:

sudo -H pip install --upgrade pip
sudo -H pip install --upgrade setuptools

 

四、安装git:

        4.1 安装git:

sudo apt install git

        4.2 配置git:

git config --global user.name "用户名"
git config --global user.email "邮箱"

        4.3 生成密钥:

ssh-keygen -t rsa -C "邮箱"

        4.4 复制公钥的内容到git上:

more /home/ray/.ssh/id_rsa.pub

 

五、安装mysql:

        5.1 安装mysql:

sudo apt install mysql-server

        5.2 设置root密码(如果安装时有设置的话,直接跳 - 5.3):

        编辑mysqld.cnf

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

                5.2.1 在底部添加 skip-grant-tables

                5.2.2 重启mysql

service mysql restart

                5.2.3 登录mysql,并执行以下SQL语句

mysql -u root -p
use mysql;
select user, plugin from user;
update user set authentication_string=password("密码"), plugin="mysql_native_password" where user="root";
flush privileges;
quit

                5.2.4 将skip-grant-tables注释

                5.2.5 重启mysql

service mysql restart

        5.3 登录mysql,并执行以下SQL语句

mysql -u root -p
use mysql;
grant all privileges on *.* to "root"@"%" identified by "密码" with grant option;
flush privileges;
quit

                5.3.1 重启mysql

service mysql restart

        5.4 允许远程登录:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

                5.4.1 将bind-address = 127.0.0.1 注释

                5.4.2 重启mysql:

service mysql restart

        5.5 版本5.7.5以上的mysql版本需在[mysqld]下添加sql_mode,添加完成需重启mysql

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

        5.6 修改数据库编码格式为utf-8

                查看mysql编码格式。

                修改配置。

sudo vim /etc/mysql/conf.d/mysql.cnf

                在 [mysql] 下面加上 default-character-set=utf8mb4

                修改配置。

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

                在 [mysqld] 下面加上 character-set-server=utf8mb4

                改完之后重启mysql。

        5.7 如果sql过大,需要设置 max_allowed_packet

                运行 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf,找到 max_allowed_packet 进行设置。(需重启)

 

六、安装redis:

sudo apt install redis-server

 

七、安装uwsgi:

sudo -H pip install uwsgi

        7.1 配置uwsgi

vim uwsgi.ini
[uwsgi]
# 嵌入Nginx,使用socket
socket = 127.0.0.1:3399

# 如果直接通过uwsgi访问服务,使用:http-socket 或 http
# http = 0.0.0.0:80
# 如果要用证书
# https = 0.0.0.0:443,/home/ray/ray-iam/ray-iam/app/config/ssl/1_ray3175.cn_bundle.crt,/home/ray/ray-iam/ray-iam/app/config/ssl/2_ray3175.cn.key

# 项目目录
chdir = /home/ray/ray-iam/ray-iam

# 虚拟环境所在路径(如果使用)
# virtualenv = /usr/local/python38/bin/python3.8

# wsgi.py文件
module = wsgi:app

# Flask引用命名
# callable = app

# 启动主进程,来管理其他进程
master = true

# 设置退出后清理文件
vacuum = true

# socket权限设置
chmod-socket = 775

# uwsgi状态文件
stats = /home/ray/ray-iam/uwsgi.status

# 监听队列大小,和机器配置有关,能调多大调多大
listen = 128

# 进程数
processes = 2

# 启用线程
enable-threads = true
# 线程数
threads = 4

# 序列化接受的内容
thunder-lock = true

# 自动中断时间(自身应用)
harakiri = 60

# 缓冲
post-buffering = 4096

# 日志目录
daemonize = /home/ray/ray-iam/uwsgi.log

# 进程文件
pidfile = /home/ray/ray-iam/uwsgi.pid

        7.2 启动uwsgi

sudo /usr/local/python38/bin/uwsgi --ini uwsgi.ini

        7.3 如果配置nginx,还需新建下列参数文件(在后续配置nginx时会用到)

vim uwsgi_params
uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

 

八、安装nginx:

        1 安装

sudo apt install nginx

                1.1 查看nginx路径

                1.2 创建自定义配置文件

cd /etc/nginx
sudo mkdir my_app
cd my_app
sudo vim ray-iam.conf

                1.3 写入配置:

upstream ray-iam {
        server 127.0.0.1:3399;    # web的socket端口
    }
server {
    listen 80;
    listen [::]:80;
    charset  utf-8;

    server_name  *.ray3175.cn;

    location / {
        root /home/ray/ray-iam/ray-iam;    # 项目目录
        uwsgi_pass ray-iam;
        include /home/ray/ray-iam/uwsgi_params;    # uwsgi_params,配置uwsgi时,提到过的文件路径
    }
}

        2 修改 nginx.conf

sudo vim /etc/nginx/nginx.conf

                修改 events 中的内容

                注释掉 include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; 并在下方添加 include /etc/nginx/my_app/*.conf;

                重启 nginx(启动 nginx 时,uwsgi 也要启动)

service nginx restart

 

 

完成上面一系列操作,这时,就可以通过ip或者域名直接访问web应用了!!!

 

最后,记录下 uwsgi 和 nginx 的命令。

uwsgi:
sudo /usr/local/python38/bin/uwsgi --ini uwsgi.ini    # 启动
sudo /usr/local/python38/bin/uwsgi --stop uwsgi.pid    # 停止
sudo /usr/local/python38/bin/uwsgi --reload uwsgi.pid    # 重启
nginx:
service nginx start    # 启动
service nginx stop    # 停止
service nginx restart    # 重新启动
service nginx reload    # 重新加载配置

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值