目录
1. 环境介绍
我使用的Ubuntu20.06版本 服务器使用的是阿里云服务器
2. 下载安装python
先将代码文件复制到服务器
sudo apt-get install python3
sudo apt-get install python3-pip
sudo pip3 install -r requirements.txt
3. 安装MySQL
1.安装mysql服务
sudo apt-get install mysql-server
2.进入mysql
sudo mysql
3.在sql命令行输入以下命令回车,你就可以把密码改成mynewpassword
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';
4.初始化配置
sudo mysql_secure_installation
初始化配置详情
#1
VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (选择N ,不会进行密码的强校验)
#2
Please set the password for root here...
New password: (输入密码)
Re-enter new password: (重复输入)
#3
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : N (选择N,不删除匿名用户)
#4
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N (选择N,允许root远程连接)
#5
By default, MySQL comes with a database named 'test' that
anyone can access...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N (选择N,不删除test数据库)
#6
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (选择Y,修改权限立即生效)
配置远程访问
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf #找到 bind-address 修改值为 0.0.0.0(如果需要远程访问)
sudo /etc/init.d/mysql restart #重启mysql
sudo mysql -uroot -p #登录mysql
use mysql; #切换数据库
select User,authentication_string,Host from user; #查询用户表命令
select host,user,plugin from user; #查看状态
#设置权限与密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; #使用mysql_native_password修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER; #更新一下用户的密码
UPDATE user SET host = '%' WHERE user = 'root'; #允许远程访问
#刷新cache中配置 刷新权限
flush privileges;
quit;
# 阿里云服务器需要去云服务器安全组中开启3306端口
4. 配置uwsgi
sudo pip3 install uwsgi
在代码根目录下创建uwsgi.ini
[uwsgi]
socket = :8888
chdir = /home/coupon
module = coupon.wsgi
master = true
processes = 16
threads = 800
max-requests = 10000
vacuum = true
listen = 3000
buffer-size = 65535
pidfile = /home/coupon/uwsgi.pid
daemonize = /home/coupon/uwsgi.log
enable-threads = true
介绍
[uwsgi]#这个必写
uid = nginx #使用nginx用户和组
gid = nginx
chdir = /webser/www/demosite #指定项目目录,在配置多站点时,不要启用
module = demosite.wsgi #加载demosite/wsgi.py这个模块,在配置多站点时,不要启用
master = true #启动主进程。
processes = 2 #启动2个工作进程
listen = 120 #设置socket的监听队列大小(默认:100)
socket = /test/myapp.sock #指定socket文件,也可以指定为127.0.0.1:9000,这样就会监听到网络套接字
pidfile = /var/run/uwsgi.pid #指定pid文件
vacuum = true #当服务器退出的时候自动删除unix socket文件和pid文件。
enable-threads = true #允许用内嵌的语言启动线程。这将允许你在app程序中产生一个子线程
buffer-size = 32768 #设置用于uwsgi包解析的内部缓存区大小为64k。默认是4k。
reload-mercy = 8 #设置在平滑的重启(直到接收到的请求处理完才重启)一个工作子进程中,等待这个工作结束的最长秒数。这个配置会使在平滑地重启工作子进程中,如果工作进程结束时间超过了8秒就会被强行结束(忽略之前已经接收到的请求而直接结束)
max-requests = 5000 #为每个工作进程设置请求数的上限。当一个工作进程处理的请求数达到这个值,那么该工作进程就会被回收重用(重启)。你可以使用这个选项来默默地对抗内存泄漏
limit-as = 256 #通过使用POSIX/UNIX的setrlimit()函数来限制每个uWSGI进程的虚拟内存使用数。这个配置会限制uWSGI的进程占用虚拟内存不超过256M。如果虚拟内存已经达到256M,并继续申请虚拟内存则会使程序报内存错误,本次的http请求将返回500错误。
harakiri = 60 #一个请求花费的时间超过了这个harakiri超时时间,那么这个请求都会被丢弃,并且当前处理这个请求的工作进程会被回收再利用(即重启)
stats=%(chdir)/uwsgi/uwsgi.status # status文件,可以查看uwsgi的运行状态
pidfile=%(chdir)/uwsgi/uwsgi.pid # pid文件,通过该文件可以控制uwsgi的重启和停止
daemonize=%(chdir)/uwsgi/uwsgi.log # 日志文件,通过该文件查看uwsgi的日志
或者创建uwsgi.xml(二选一)
<uwsgi>
<socket>:8080</socket><!-- 与nginx通讯的端口-->
<!--<http>:8000</http>-->
<chdir>/(xxx项目的上级路径)/XXX</chdir>
<module>YYY.wsgi</module><!--wsgi.py文件所在的位置-->
<processes>4</processes> <!-- 进程数 -->
<threads>2</threads> <!-- 线程数 -->
<disable-logging>false</disable-logging> <!-- true只记录uwsgi错误和内部消息,不记录常规请求信息,false反之-->
<daemonize>/(uwsgi文件夹的上级路径)/uwsgi/uwsgi.log</daemonize><!--记录请求日志的文件所在的位置-->
<!--<socket>/(uwsgi文件夹的上级路径)/uwsgi/uwsgi.sock</socket>--><!--与nginx工具通讯的所在位置-->
<pidfile>/(uwsgi文件夹的上级路径)/uwsgi/uwsgi.pid</pidfile><!--对uwsgi进程管理的文件所在的位置-->
<stats>/(uwsgi文件夹的上级路径)/uwsgi/uwsgi.status</stats><!--对uwsgi负载情况记录的文件所在的位置-->
<master>true</master><!--开启主线程-->
<vacuum>true</vacuum><!--true当服务器退出的时候自动清理环境,删除unix socket文件和pid文件,false反之-->
<buffer-size>65535</buffer-size><!--uwsgi的最大缓存-->
</uwsgi>
5. 部署nginx
5.1 下载安装nginx
sudo apt-get install nginx
5.2 在/etc/nginx/目录下,找到nginx.conf文件,在http{}内部加入下面内容
server {
listen 80;
server_name 192.168.188.129; # 你的服务器公用ip地址
charset UTF-8;
access_log off;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8888;
}
location /static {
alias /code/test/static/;
}
}
5.3 nginx.conf文件中注释两行代码
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
5.4 开启gzip(nginx.conf中http{}找到gzip)
# gizp压缩配置
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain qpplication/x-javascript text/css application/xml text/javascript application/javascript application/json;
gzip_disable "MSIE [1-6]";
gzip_vary on;
6. 启动服务器
uwsgi --ini uwsgi.ini # 代码文件根目录下
service nginx start 或 service nginx reload
1. /etc/init.d/nginx start 启动nginx服务
2. /etc/init.d/nginx restart 重启nginx 服务
3. /etc/init.d/nginx stop 停止nginx 服务
针对uwsgi.pid文件
4. uwsgi -x uwsgi/uwsgi.xml # uwsgi.xml方式启动
5. uwsgi --ini uwsgi/uwsgi.ini # uwsgi.ini方式启动
6. uwsgi --reload uwsgi/uwsgi.pid # 重启
7. uwsgi --stop uwsgi/uwsgi.pid # 关闭
本文详细介绍如何在Ubuntu20.06环境下安装配置Python环境、MySQL数据库,并通过uwsgi和nginx部署Python Web应用。
1272

被折叠的 条评论
为什么被折叠?



