– react+flask
--nginx+virtualenvwrapper+uwsgi+supervisor
文章目录
ububtu
- 使用root时登入不进去时,使用ubuntu
- 查看防火墙状态:
sudo ufw status
- 端口控制
打开端口:
sudo ufw allow 80/tcp
禁用 80 端口:
sudo ufw delete allow 80/tcp
允许某特定 IP:
sudo ufw allow from 192.168.254.254
删除上面的规则:
sudo ufw delete allow from 192.168.254.254
- 参考文档:https://www.cnblogs.com/jiangyao/archive/2010/05/19/1738909.html
Linux
- 进入管理员权限
sudo su
- 常用命令
cd / # 回到根目录/
cd ~ # 回到根目录~
cd .. # 返回上一级
mkdir # 新建文件夹
ll (或ls -al(或ls)) # 显示
rm -f 路径或文件名 # 删除文件
rm -rf 路径或文件夹名 # 删除文件夹
tar xzvf 文件名 # 解压
find / name x.text # 查找文件
sudo netstat -tap | grep 程序名 # 查看程序的进程
- 文档编辑器操作
i # 进入编辑
esc按键 # 退出编辑
x # 保存不退出
:qw # 保存后退出
:q! # 不保存退出
ctrl+F # 向后翻页
Mysql sever
1. 安装服务端
sudo apt-get install mysql-server
在这一步过程中会有提示创建root密码,记得记住密码!(如果没出现先跳下面设置下密码)
(如果没有异常不用尝试以下步骤)
①检测有没有安装成功(进程查询)
sudo netstat -tap | grep mysql
如果出现mysql 的socket处于 listen 状态则表示安装成功
②安装客户端
sudo apt-get install mysql-client
③安装程序编译时链接的库
sudo apt-get install libmysqlclient-dev
2. 连接数据库
mysql -u root -p
3. 修改密码
用管理员模式进到Mysql
# 仅限旧版本
SET PASSWORD FOR root@localhost = '********';
# 新版本
alter user 'root'@'localhost' identified with mysql_native_password by '********';
#刷新
flush privileges;
4.导出数据库(备份数据库)
-
数据库的数据位于
/var/lib/mysql
直接使用命令:
mysqldump -u root -p abc >abc.sql
然后回车输入密码就可以了;
mysqldump -u 数据库链接用户名 -p 目标数据库 > 存储的文件名
文件会导出到当前目录下
- 迁移数据库https://www.cnblogs.com/sky-cheng/p/12195461.html(未使用过)
3.导入数据库(导入sql文件)
①首先建空数据库
create database abc;
②导入数据库
方法一:
①选择数据库
use abc;
②设置数据库编码
set names utf8;`
③导入数据(注意sql文件的路径)
source /home/temp/abcd.sql;
方法二:
mysql -u用户名 -p 数据库名 < 数据库名.sql
mysql -u root -p abc < abc.sql
4.删除、卸载数据库
- 删除
DROP DATABASE test_db_del;
- 卸载
- 删除MySQL服务器:
sudo apt-get remove mysql-server
- 删除随MySQL服务器自动安装的任何其他软件:
sudo apt-get autoremove
- 查看从MySQL APT存储库安装的软件包列表:
dpkg -l | grep mysql | grep ii
- 卸载这些:
sudo apt-get remove
nginx
1. 安装配置环境
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
sudo apt update
2. 安装nginx
apt install nginx
3. 配置文件
位于 vi /etc/nginx/nginx.conf
user root;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name xxx.com www.xxx.com ;
return 301 https://xxx.cn$request_uri;
}
server {
listen 443;
server_name www.xxx.com;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root /home/web/build;
index index.html index.htm;
}
location /api/ {
proxy_pass http://127.0.0.1:5000;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
4. 常用命令
# 启动
service nginx start
# 关闭
nginx -s stop
# 重载
nginx -s reload
-
nginx文件安装完成之后的文件位置:
-
/usr/sbin/nginx:主程序
-
/etc/nginx:存放配置文件
-
/usr/share/nginx:存放静态文件
-
/var/log/nginx:存放日志
-
4. 卸载apt-get安装的nginx
彻底卸载nginx
apt-get --purge autoremove nginx
查看nginx的版本号
nginx -v
参考文档:https://blog.csdn.net/qq_23832313/article/details/83578836
Flask
安装 flask
在文件夹中导入写好的.py文件(记住路径)
进入此文件夹后
pip install flask
# 安装数据库的库
pip install flask-sqlalchemy
- python3:要连接mysql数据库,仍需要安装pymysql
pip install pymysql
- python2:要连接mysql数据库,仍需要安装flask-mysqldb
pip install flask-mysqldb
Python3.4以上版本不需要额外安装virtualenv安装包了,直接使用python -m venv env1即可创建虚拟环境
虚拟环境 virtualenvwrapper
- 安装virtualenvwrapper
pip install virtualenvwrapper
- 配置
①用 cd ~
进入此文件
②vi .bashrc
# 配置虚拟环境(在文档最后添加即可)
export WORKON_HOME=$HOME/.virtualenvs
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
③刷新
source ~/.bashrc
④创建虚拟环境
mkvirtualenv --python=/usr/bin/python3 项目名称_env
⑤查看(可不做)
cd ~
cd .virtualenvs
⑥运行
workon 项目名称_env
Web服务器 uWSGI
- 安装uwsgi
pip install uwsgi
- 如果未能安装 按python版本安装相关依赖
sudo apt-get install libpython3.8-dev
参考文档: https://blog.birost.com/a?ID=01700-22afe1ba-b206-4378-8ef4-c1fd7eef566e
- 配置uwsgi
先在后端文件夹里
touch uwsgi.ini
打开 vi uwsgi.ini
[uwsgi]
# 项目的路径
chdir = /home/ubuntu/server/
# Flask的uwsgi文件
wsgi-file = /home/ubuntu/server/init.py
# 回调的app对象
callable = app
# Python虚拟环境的路径
home = /root/.virtualenvs/xxx_env
# 进程相关的设置
# 主进程
master = true
# 最大数量的工作进程
processes = 10
http = :5000 # 监听5000端口(或监听socket文件,与nginx配合)
# socket = /srv/[项目名称]/[项目名称].sock
# 设置socket的权限
# chmod-socket = 666
# 退出的时候是否清理环境
vacuum = true
- 运行 uwsgi
uwsgi --ini uwsgi.ini
uwsgi --ini /home/ubuntu/server/uwsgi.ini
# 临时
@app.route('/api/auth/confirmation/',methods=['POST'])
def confirmation():
token = request.get_json()['token']
# -----------------
getReply = () => {
axios.get("/blog/message/topiclist").then(response => {
if(response.status === 200){
this.setState({
messagesData: response.data,
})
}
})
}
进程管理 supervisor
- 安装supervisor
sudo apt-get install supervisor
- 环境配置
# 在/etc/supervisor/supervisord.conf 下添加以下两行配置
[program:luffy_city]
command=/root/.virtualenvs/xxx_env/bin/uwsgi /home/ubuntu/server/uwsgi.ini
- supervisord.conf配置文件参数解释
supervisord.conf配置文件参数解释
[program:xx]是被管理的进程配置参数,xx是进程的名称
[program:xx]
command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; 程序启动命令
autostart=true ; 在supervisord启动的时候也自动启动
startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3 ; 启动失败自动重试次数,默认是3
user=tomcat ; 用哪个用户启动进程,默认是root
priority=999 ; 进程启动优先级,默认999,值小的优先启动
redirect_stderr=true ; 把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=20MB ; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数,默认是10
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out
stopasgroup=false ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false ;默认为false,向进程组发送kill信号,包括子进程
- 卸载
sudo apt purge supervisor
SSL配置
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/server.key -out /etc/nginx/ssl/server.crt