管廊项目部署 创建者: Zhiwei Huang 创建时间: August 30, 2023 11:06 AM
本文档记录管廊项目如何完整部署的流程,是交付给管廊公司私有化部署的教程,也是为后续维保做准备。
项目部署包括Linux下的前期准备、Mysql原生安装、Redis安装、Nginx配置、前端项目配置、后端项目配置、算法项目配置
前期准备
安装Linux Ubuntu18.04或者Ubuntu20.04
安装显卡驱动,包括Cuda、cudnn等
下载Jetbrain 全家桶,为了风格统一和代码审查的方便,请下载Pycharm Professional、Intelli Idea(注意Idea不可以是Community版)、Webstorm、DataGrip,可以使用正版或使用任意方法破解。下面是这些软件的下载链接:
1 2 3 4 https: https: https: https:
软解解压和破解,破解就请自行想办法了,完成后”下载“路径应当形如:
Mysql原生安装 项目使用Linux下的Mysql原生安装,本次未使用Docker安装,是因为担心Docker容器允许过程中万一被终止会导致项目运行错误,原生安装可以将服务注册为service使服务更稳定。本节内容参考:Linux 下 MySQL 8.0版本的安装配置部署 ,如有在本节看不懂的内容可以查阅该链接对照一下。
在”下载“中解压,Ubuntu界面下就是”提取到此处“,然后将文件移动到”/usr/local“目录下,并重命名,指令如下:
1 2 3 cd /home/ubuntu/Downloadssudo mv mysql-8 .0.33 -linux-glibc2 .28 -x86_64 /usr/local // 然后切换到 /usr/local 目录下,将这个文件夹名字缩短一点,缩短成mysql-8 .0.33
检查用户组,sudo groups mysql
正常没安装的机器上应当显示groups: mysql: No such user
增加用户组:sudo groupadd mysql
在用户组下增加用户 sudo useradd -r -g mysql mysql
,没有报错的情况下用户组下的用户就添加完毕了,这时输入sudo groups mysql
,应当出现mysql : mysql
,如图:
接下来配置数据库用户组权限,分为两部分,一部分是数据库数据路径权限,另一部分是数据库根目录路径权限。
1 2 3 4 5 //创建数据目录并赋予权限 sudo mkdir -p /data /mysql sudo chown mysql:mysql -R /data /mysql //赋予根目录路径的权限 sudo chown -R mysql:mysql /usr/local/mysql-8 .0.33 /
修改配置文件 my.cnf,该文件位置在 /etc/my.cnf
,如果没有就需要创建一个,同时考虑到vim比较用,可以赋予权限用文本编辑器打开。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //创建配置文件 sudo touch /etc/my.cnf //赋予权限 sudo chmod 777 /etc/my.cnf //用文本编辑器打开后将一下内容修改后贴进去, 其中最后一个是为了向内网暴露做准备的 [mysqld ] basedir=/usr/local/mysql-8 .0.33 datadir=/data /mysql port=3306 socket=/tmp/mysql.sock character_set_server=utf8 lower_case_table_names=1 log-error =/data /mysql/mysql.err pid-file =/data /mysql/mysql.pid [mysql ] default-character-set = utf8 bind-address =0.0 .0.0
初始化Mysql,初始化后会出现一个密码,必须要记住。如果忘记了这个密码可以用cat /data/mysql/mysql.err
查看。
1 2 3 //初始化 cd /usr/local/mysql-8 .0.33 /bin/./mysqld --defaults-file =/etc/my.cnf --basedir =/usr/local/mysql-8 .0.33 / --datadir =/data /mysql/ --user =mysql --initialize
💡 这里可能出现错误,例如`./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory` 或者`./bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory` ,这是因为`libaio`或者`numactl` 没安装导致的,可以使用`sudo apt update` 更新一下然后再`sudo apt install libaio` 。注意需要先更新一下,否则会出现`无法定位`的错误
将Mysql的启动注册成系统服务,然后配置环境变量。
1 2 3 4 5 6 7 8 9 10 //将启动脚本复制到系统启动服务里 cd /usr/local/mysql-8 .0.33 /support-files sudo cp mysql.server /etc/init.d/mysql // 为profile 赋予权限 sudo chmod 777 /etc/profile // 将下面两行添加到profile里 export MYSQL_HOME="/usr/local/mysql-8.0.11" export PATH="$PATH: $MYSQL_HOME /bin" // 使环境变量生效 source /etc/profile
启动服务:service mysql start
,登录Mysql,mysql -u root -p
,输入刚才保存的密码即可,如果不可以。首次登录后会叫你重置一下密码
1 2 3 mysql> use mysql; mysql> ALTER USER ‘root’@ ‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的密码’; mysql> flush privileges;
(可选)向内网暴露Mysql服务,允许使用某个用户名及密码从任何主机连接到该 mysql 服务,必须注意该步骤前检验/etc/my.cnf
中bind-address=0.0.0.0
:
1 2 3 mysql> use mysql; mysql> update user set host=’%’ where user = ‘root’; mysql> flush privileges;
1 2 3 mysql> exit service mysql restart
从外部,例如windows使用Navicat更方便地查看数据库,例如我们可以将dfb数据直接导入数据库形成具有初始内容的数据表,至此数据库配置结束。
Redis安装 Redis安装比Mysql简单多了,Redis没有版本要求,本节内容参考Linux安装部署Redis(超级详细) - 长沙大鹏 - 博客园 (cnblogs.com)
将Redis解压一下,有图形界面就提取到此处即可,没有图形界面就命令行解压,tar -zvxf redis-7.2.0.tar.gz
移动redis目录,将redis目录放置到 /usr/local/redis目录,sudo mv /root/redis-7.2.0 /usr/local/redis
make一下,进入/usr/local/redis,cd /usr/local/redis
,然后直接输入make
即可;make过程中会有一堆checking和config,等待它结束即可;
安装,PREFIX
关键字的作用是编译的时候用于指定程序存放的路径,如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录,库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis 即可删除redis。
1 make PREFIX=/usr/local/redis install
启动redis,./bin/redis-server& ./redis.conf
看到这个小方块就可以了。
Nginx配置 Nginx需要集成一下FLV模块,这两个东西已经提供了。进入nginx-http-flv,里面有nginx-1.20.2和nginx-http-flv-module-master。本节内容参考nginx 搭建http-flv(rtmp)流媒体_nginx可以http访问rtmp_像风一样的男人@的博客-CSDN博客 ,如果在本节有看不懂的可以看这篇博客对照。
进入nginx-1.20.2,将flv模块添加进去
1 2 cd xxxx/nginx-1 .20.2 ./configure --add-module =flv模块的绝对路径,如/data /Deployment/PipeGallery/nginx-http-flv /nginx-http-flv-module-master
编译和安装,安装完毕后会在/usr/local/
创建一个nginx目录
1 ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
启动验证一下,输入nginx
即可
修改配置,将我们提供的conf文件复制一份到/usr/local/nginx/conf/nginx.conf
如果无法复制就使用命令行:
如图所示,红色框内的地址都要改动,server_name需要对整个配置文件做替换,替换成当前机器的ip,location则只需要修改第一个 listen 8070的root即可,修改成部署的根目录。
1 2 3 4 cd xxxx/PipeGallerysudo cp nginx.conf /usr/local/nginx/conf/nginx.conf //赋予权限 sudo chmod 777 /usr/local/nginx/conf/nginx.conf
最后重启nginx,验证一下 nginx -s reload
前端项目配置 前端项目使用Webstorm打开,打开后即可在右上角看到一个dev和一个绿色三角。
前端项目需要修改两个地方的配置,一个是.env.development里的三个地址,端口号不用变,只要将它改成当前机器的地址即可;
另一个是merge-header.vue中的href下的路径,需要改成当前机器的路径
前端项目的启动可以在webstorm中启动,也可以在前端项目的路径下使用npm run dev
启动
后端项目配置 后端项目使用Springboot完成,必须使用Idea完整版打开,community版是不可以的。由于idea需要的插件比较多,而一开始都是没有的,而且最新的idea可能自带的插件啥的有冲突,maven镜像配置也比较麻烦,我们只能给出有限个可能问题的解决。
然后点击运行,如果没有冲突的话项目就正常启动了,如果有冲突,请再联系。
算法配置
算法配置主要是环境配置和路径配置,环境配置方面,我们提供了一个conda导出的环境包pipe.tar.gz
,使用如下指令即可导入环境并激活。
1 2 3 4 5 6 cd /home/ubuntu/anaconda3/envs/mkdir -p my_env tar -xzf xxxx/my_env.tar.gz -C my_env source my_env/bin/activate
如果想节省空间使用已有的环境,就需要使用pycharm检验一下环境,也就是有没有飘红。比较重要的几个包是:opencv-python==4.5.5,torch==1.6。如果环境配置存在问题,可以再和我们联系。
我们在后端配置时就建议过,本地验证部署建议使用cvrgb_template0803.py。