ubuntu 20.4下服务器部署


​ – 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

  1. 进入管理员权限
sudo su
  1. 常用命令
cd /	# 回到根目录/
cd ~	# 回到根目录~
cd ..	# 返回上一级
mkdir	# 新建文件夹
ll     (或ls -al(或ls))	# 显示
rm -f 路径或文件名	# 删除文件
rm -rf 路径或文件夹名	# 删除文件夹
tar xzvf 文件名	# 解压
find / name x.text	# 查找文件
sudo netstat -tap | grep 程序名	# 查看程序的进程
  1. 文档编辑器操作
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;
  • 卸载
  1. 删除MySQL服务器:
sudo apt-get remove mysql-server
  1. 删除随MySQL服务器自动安装的任何其他软件:
sudo apt-get autoremove
  1. 查看从MySQL APT存储库安装的软件包列表:
dpkg -l | grep mysql | grep ii
  1. 卸载这些:
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

  1. 安装virtualenvwrapper
pip install virtualenvwrapper
  1. 配置

①用 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

  1. 安装uwsgi
pip install uwsgi
  • 如果未能安装 按python版本安装相关依赖
sudo apt-get install libpython3.8-dev

参考文档: https://blog.birost.com/a?ID=01700-22afe1ba-b206-4378-8ef4-c1fd7eef566e

  1. 配置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
  1. 运行 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

  1. 安装supervisor
sudo apt-get install supervisor
  1. 环境配置
# 在/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信号,包括子进程
  1. 卸载
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

猜你喜欢

转载自blog.csdn.net/Niiuu/article/details/123605937