毕业设计部署踩坑笔记
# 毕业设计部署踩坑笔记
首先为什么要叫踩坑,主要还是之前从来没有正式的发布过
其次就是最后想要的效果,就是用docker直接在服务器上发布
# 1.nginx直接发布编译好的vue项目
先停掉apache2或其他服务
sudo /etc/init.d/apache2 stop
1
# 安装nginx
sudo apt update
sudo apt install nginx
1
2
2
nginx 配置 我们使用最简单的配置
sudo vim /etc/nginx/nginx.conf
1
/etc/nginx/nginx.conf
#最简单的配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include conf/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80; #端口
server_name localhost; #主机名
location / {
root html; #项目根目录
index index.html index.htm; #起始页
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/etc/nginx/conf/mime.types
types {
text/html html htm shtml;
text/css css;
text/xml xml rss;
image/gif gif;
image/jpeg jpeg jpg;
application/x-javascript js;
text/plain txt;
text/x-component htc;
text/mathml mml;
image/png png;
image/x-icon ico;
image/x-jng jng;
image/vnd.wap.wbmp wbmp;
application/java-archive jar war ear;
application/mac-binhex40 hqx;
application/pdf pdf;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;
application/x-java-jnlp-file jnlp;
application/x-makeself run;
application/x-perl pl pm;
application/x-pilot prc pdb;
application/x-rar-compressed rar;
application/x-redhat-package-manager rpm;
application/x-sea sea;
application/x-shockwave-flash swf;
application/x-stuffit sit;
application/x-tcl tcl tk;
application/x-x509-ca-cert der pem crt;
application/x-xpinstall xpi;
application/zip zip;
application/octet-stream deb;
application/octet-stream bin exe dll;
application/octet-stream dmg;
application/octet-stream eot;
application/octet-stream iso img;
application/octet-stream msi msp msm;
audio/mpeg mp3;
audio/x-realaudio ra;
video/mpeg mpeg mpg;
video/quicktime mov;
video/x-flv flv;
video/x-msvideo avi;
video/x-ms-wmv wmv;
video/x-ms-asf asx asf;
video/x-mng mng;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 编译vue项目
yarn run bulid
1
修改nginx.conf http server location root 为 项目所在位置 (dist文件夹)
访问localhost,成功
# 2.发布flask应用
这里没有其他项目就不用虚拟环境了
sudo pip3 install gunicorn
gunicorn -w 2 -b 127.0.0.1:5000 waterMeter:app
1
2
2
# 3.部署阿里云服务器
首先初始化服务器并下载项目
# 初始化
sudo apt update
sudo apt upgrade
# 创建目录
sudo mkdir /app
sudo chmod 777 /app
cd /app
# 安装git
sudo apt install git
# 设置git
git config --global user.name wiidede
git config --global user.email wiixdede@gmail.com
# 克隆前后端仓库
git clone -b dist https://gitee.com/wiidede/water-meter-frontend.git
# 安装tree
sudo apt install tree
# 查看目录
tree -L 2
# .
# ├── water-meter-backend
# │ ├── app
# │ ├── assets
# │ ├── base
# │ ├── main
# │ ├── README.md
# │ ├── utils
# │ ├── waterMeter.py
# │ └── 毕业设计.md
# └── water-meter-frontend
# ├── dist
# └── README.md
# 8 directories, 4 files
# 安装nginx
sudo apt install nginx
# 修改配置
cd /etc/nginx/sites-available/
# defalut默认被占用 可以先删除它
sudo vim default
# 添加server配置
# server {
# listen 80;
# server_name localhost;
# location / {
# root /app/water-meter-frontend/dist;
# index index.html;
# }
# }
# 重启
sudo nginx -s reload
# 或者
sudo systemctl reload nginx
sudo systemctl restart nginx
# 后端配置
cd /app/water-meter-backend/
sudo apt install python3-pip
# sudo pip3 install tensorflow==1.15 # python3.8 无法安装 tf1
# 使用虚拟环境
sudo pip3 install virtualenv
# 安装python3.6
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.6
python3.6 -V
virtualenv venv --python=python3.6
source venv/bin/activate
# 虚拟环境(venv)
pip install gunicorn
pip install flask
pip install flask-cors
pip install tensorflow==1.15
pip install scipy
pip install easydict
pip install Pillow
pip install opencv-python
# 安装依赖
sudo apt install libgl1-mesa-glx
# 传输checkpoints
# scp -r file(ubuntu的文件) root(用户名)@xx.xx.xx.xx(公网ip):/home/(目标文件夹)
scp -r -i ssh-key.pem /home/robot/dd_demo/watermeter/WaterMeter/checkpoints root@xx.xx.xx.xx:/app/water-meter-backend
gunicorn -w 2 -b 127.0.0.1:5001 waterMeter:app
# 退出虚拟环境
deactivate
# 修改配置
cd /etc/nginx/sites-available/
# defalut默认被占用 可以先删除它
sudo vim default
# 添加这个服务
# proxy服务器
# server {
# listen 5000;
# server_name xx.xx.xx.xx;
# location / {
# proxy_pass http://127.0.0.1:5001; #反向代理
# proxy_cookie_domain 127.0.0.1 xx.xx.xx.xx; #修改cookie里域名
# # 当用webpack-dev-server等中间件代理接口访问nignx时,此时无浏览器参与,故没有同源限制,下面的跨域配置可不启用
# # add_header Access-Control-Allow-Origin *; #当前端只跨域不带cookie时,可为*
# # add_header Access-Control-Allow-Credentials true;
# }
# }
cd /usr/lib/systemd/system
vi water-meter-backend.servier
# [Unit]
# After=syslog.target network.target remote-fs.target nss-lookup.target
# [Service]
# #项目所在目录
# user=root
# WorkingDirectory=/app/water-meter-backend/
# #gunicorn启动命令
# #解释1.先是虚拟环境下的gunicorn所在位置
# #2.--bind 绑定端口 承接上篇所以选用0.0.0.0:8001
# #3.xxx表示项目名称
# ExecStart=/app/water-meter-backend/venv/bin/gunicorn -w 2 -b 127.0.0.1:5001 waterMeter:app
# Restart=on-failure
# [Install]
# WantedBy=multi-user.target
# 添加到开机自启动项
sudo systemctl enable water-meter-backend.servier
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
上次更新: 2023/06/01, 12:40:50