ubuntu 20.4下服务器部署
– react+flask
--nginx+virtualenvwrapper+uwsgi+supervisor
文章目录
- ububtu
- Linux
- Mysql sever
- 1. 安装服务端
- 2. 连接数据库
- 3. 修改密码
- 4.导出数据库(备份数据库)
- 3.导入数据库(导入sql文件)
- 4.删除、卸载数据库
- nginx
- 1. 安装配置环境
- 2. 安装nginx
- 3. 配置文件
- 4. 常用命令
- 4. 卸载apt-get安装的nginx
- Flask
- 安装 flask
- 虚拟环境 virtualenvwrapper
- Web服务器 uWSGI
- 进程管理 supervisor
- SSL配置
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 = 10http = :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
ubuntu 20.4下服务器部署相关推荐
- Ubuntu 20.04 下 部署 SoftEther
SoftEther 简介 SoftEther VPN 是 SoftEther VPN Project 提供的下一代 VPN 通信软件的最新版本,具有稳定性.灵活性和可扩展性. SoftEther VP ...
- Ubuntu 20.04 下Fabric V2.2.0 和 V1.1.0 运行及配置说明(均可运行)
ubuntu 20.04 下Fabric V2.2.0 和 V1.1.0 运行及配置说明 ubuntu 20.04 下Fabric运行及配置说明 注:本文是对 <hyperledger/fabr ...
- linux :YOLO5配置(ubuntu 20.04 下安装运行yolov5)
ubuntu 20.04 下安装运行yolov5 新建文件夹,安装python 安装 python-pip: 克隆YOLOv5Git code 配置YOLO环境 安装yolov5: ubuntu 20 ...
- ubuntu 20.04 下安装使用clash for windows
ubuntu 20.04 下安装使用clash for windows (最简单版本) - jjjzzzqqq - 博客园
- 如何安装Ubuntu 20.04 LTS服务器的图文教程
今天,我们将通过图文向您展示如何安装Ubuntu 20.04 LTS服务器.如果您的系统上已经有Ubuntu 18.04 LTS服务器,则只需将其升级到Ubuntu 20.04 LTS服务器.如果您不 ...
- 乌班图服务器账号密码忘了,如何在Ubuntu 20.04 LTS服务器中重置Sudo密码
本文简单介绍了如何在Ubuntu 20.04 LTS服务器版中重置sudo密码.第一次安装Ubuntu时,会创建一个新的sudo用户来执行各种管理任务.如果您有多个sudo用户,您可以从另一个sudo ...
- ccpd文件名转成xml_在Deepin V20/Ubuntu 20.04下安装佳能LBP2900+打印机的方法
本文为你介绍在Deepin V20系统下安装佳能LBP2900+打印机的方法,同样的方法也适用在Ubuntu 20.04下,但在Ubuntu下需要安装canberra-gtk-module. 在Dee ...
- 在Ubuntu 20.04下安装 ROOT cern
在Ubuntu 20.04下安装 ROOT cern Step1 安装必要库 Step2 安装ROOT本身 方法1:下载预编译软件包安装(Bianary Distributions) 方法2:CMAK ...
- WSL Ubuntu 20.04下Android源码编译与导入Android Studio
源码下载见前文:WSL Ubuntu 20.04下Android源码下载 idegen 模块编译 在development/tools/idegen/README下可以看到关于 idegen 工具的相 ...
最新文章
- 刻意练习:LeetCode实战 -- 二叉树的前序遍历
- mats显卡测试软件的使用教程,MATS使用说明
- axure变成一个小手了_Axure原型:超漂亮的系统首页
- 机器学习实战学习笔记 一 k-近邻算法
- 鸟类南飞,去的是哪个“南方”?
- 已完成私有化交易 “网红第一股”如涵退市
- sudo -u hdfs hdfs balancer出现异常 No lease on /system/balancer.id
- 编码的奥秘之发报机与继电器
- 区块链 solidity 零知识证明DApp开发实践【身份证明/以太坊】
- 新浪微博开放平台开发步骤简介(适合新手看)
- 2022苹果AppStore应用商店上传与APP上传流程必看(基础篇)
- 使用FlashPaper在线转换.doc为.swf
- 2021年全国压岁钱排行榜,大数据告诉你哪的红包最大?
- js复制富文本/网页内容到黏贴板
- 《数据解构》HashMap源码解读
- MIT6.824-lab2A-2022篇(万字推导思路及代码构建)
- 网站优化(seo)基础篇之网站关键词
- 自动驾驶软件开发人才现状_新技术改变传统出行方式 多国自动驾驶行业现状及人才需求分析...
- 敏捷与数字化转型银行_使敏捷人超越数字化
- String类常用方法思维导图总结