预计达成效果:
1、配置好所有项目所需环境,创建本地数据库,redies,mq等中间件库,
2、将项目发布至服务器中,
3、前端如有模型,则需要将模型库配置进本地,
4、配置测试运行无问题,后台程序需要通过守护进程使其后台运行,并且开机自启,前端vue通过打包成服务,开机自启,实现服务器开机即可进入项目网站
额外资料:
docker拉取出现问题的解决方法:
参考
#进入并编辑配置文件
vi /etc/resolv.conf
#末尾添加这两行
nameserver 8.8.8.8
nameserver 8.8.4.4
(只有基础开发工具的yum安装包)离线yum源配置教程:
参考
Index of /centos-store/7.3.1611/isos/x86_64/
1.上传下载的镜像源iso
2.挂载iso文件
#mount -o loop -t iso9660 CentOS-7-x86_64-Everything-1511.iso /mnt
3.配置yum
# cd /etc/yum.repos.d/ # mkdir bak# mv *repo bak/# vim local.repo
local.repo文件内容如下:
[iso] name=CentOS-7-x86_64-Everything-iso baseurl=file:///mntgpgcheck=0enabled=1
4.验证
# yum clean all # yum makecache
参考
首先,通过执行命令ip addr,找到需要配置的网卡名。
配置主机IP地址。
进入/etc/sysconfig/network-scripts/ 目录找到与网卡名对应的网卡配置文件。
修改网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens160 ,配置静态IP
TYPE="Ethernet" # 网络类型为以太网
BOOTPROTO="static" # 配置成静态IP
NAME="ens160" # 要跟文件名一致
DEVICE="ens160" # 要跟文件名一致
ONBOOT="yes" # 是否随网络服务启动
IPADDR="192.168.1.103" #主机ip地址
GATEWAY="192.168.1.1" # 网关
NETMASK="255.255.255.0" # 子网掩码
DNS1="114.114.114.114" #DNS2也可以配置成8.8.8.8
上面是静态IP的配置,如果想配置动态IP
修改网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens160
动态获取IP地址需要修改两处,不需要配置相关IP地址
BOOTPROTO="dhcp" # 配置成动态IP
ONBOOT="yes" # 是否随网络服务启动
配置DNS解析,vi /etc/resolv.conf
添加内容 nameserver 114.114.114.114
修改后重启一下网络服务即可(无报错就是正常重启)
systemctl restart network
然后执行ip addr 确认IP配置
执行ping www.baidu.com 确认DNS解析正常
sudo yum-config-manager --add-repo /https://download.docker.com/linux/centos/docker-ce.repo
如果拉取失败可以尝试以下方法传送门 1、在/etc/re
solv.conf #添加这两行
nameserver 8.8.8.8
nameserver 8.8.4.4
输入 systemctl restart docker 重启服务。
mkdir /mnt/sdc/mydatatest/mysqltest/log
sudo docker run -p 3306:3306 --name mysql -v /mnt/sdc/mydatatest/mysqltest/log:/var/log/mysql -v /mnt/sdc/mydatatest/mysqltest/data:/var/lib/mysql -v /mnt/sdc/mydatatest/mysqltest/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root-d percona:latest
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '12345qwerT&*()';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
\mysql -u用户名 -p密码 -D数据库 < 【sql脚本文件路径全名】,示例: C:\MySQL\bin\mysql -uroot -p 123456 -Dtest < C:\test.sql
docker run -it -d -p 80:80 \
--name nginx \
-v /mnt/sdc/test/nginx/www:/usr/share/nginx/html \
-v /mnt/sdc/test/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mnt/sdc/test/nginx/logs:/var/log/nginx nginx
容器开机自启动 docker update nginx --restart=always
参考
1.安装依赖包
//一键安装上面四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2.下载并解压安装包
//创建一个文件夹
cd /usr/local
mkdir nginx
cd nginx
//下载tar包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz
3.安装nginx
//进入nginx目录
cd /usr/local/nginx
//进入目录
cd nginx-1.13.7
//执行命令 考虑到后续安装ssl证书 添加两个模块
./configure --with-http_stub_status_module --with-http_ssl_module
//执行make命令
make
//执行make install命令
make install
4.启动nginx服务
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
4.配置nginx.conf
# 打开配置文件
vi /usr/local/nginx/conf/nginx.conf
将端口号改成8089(随便挑个端口),因为可能apeache占用80端口,apeache端口尽量不要修改,我们选择修改nginx端口。
将localhost修改为你服务器的公网ip地址。
5.重启nginx
/usr/local/nginx/sbin/nginx -s reload
查看nginx进程是否启动:
ps -ef | grep nginx
6.若想使用外部主机访问nginx,需要关闭服务器防火墙或开放nginx服务端口,端口为上一步nginx.conf的配置端口:
centOS6及以前版本使用命令: systemctl stop iptables.service
centOS7关闭防火墙命令: systemctl stop firewalld.service
关闭防火墙会导致服务器有一定风险,所以建议是单独开放服务端口 :
开放80端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent
查询端口号80 是否开启:
firewall-cmd --query-port=80/tcp
重启防火墙:
firewall-cmd --reload
随后访问该ip:端口 即可看到nginx界面。
7.访问服务器ip查看(备注,由于我监听的仍是80端口,所以ip后面的端口号被省略)
安装完成一般常用命令
进入安装目录中,
命令: cd /usr/local/nginx/sbin
启动,关闭,重启,命令:
./nginx 启动
./nginx -s stop 关闭
./nginx -s reload 重启
需要通过wget获取资源,出现”找不到命令“的情况说明没有安装wget工具,
安装wget: yum install wget
参考
#注册 Microsoft 密钥。注册产品存储库。安装必需的依赖项。
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
#安装 .NET Core 运行时
sudo yum -y install aspnetcore-runtime-6.0
#查看Dotnet 版本信息
dotnet --info
#安装.NET Core SDK
sudo yum -y install dotnet-sdk-6.0
#查看Dotnet 版本信息
dotnet --info
#查看Dotnet 版本信息
dotnet --version
查看无误即可
参考传送门
配置好net6环境后,将项目发布以文件夹的目标,通过传输工具传输到服务器上,进入该文件夹
直接运行项目查看是否能正常使用
执行指令 dotnet 项目名.dll
注意安装插件libgdiplus,不安装运行项目会报错
安装步骤:
1、下载 epel-release-7-11.noarch.rpm
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
2、rpm -Uvh epel-release*rpm
3、sudo yum install libgdiplus
安装完后再次运行查看是否会报错
执行指令 dotnet 项目名.dll
ctrl+c退出进程
参考
1.Vue项目打包
# 打包正式环境 npm run build:prod # 打包预发布环境 npm run build:stage
2. 部署时可能会发现资源路径不对 ,只需修改 vue.config.js下 文件资源路径
# 请根据自己路径来配置更改 publicPath: './'
3. 将打包后的dist文件夹上传至服务器
本次项目路径为 /usr/local/webapp/
4.修改Nginx的conf文件
vim /usr/local/nginx/cong/nginx.conf #修改如下 server { listen 80; server_name localhost; # 注意设定 root路径是有dist的 location / { root /usr/local/webapp/dist; index /index.html; } #跨域 ip和port自行替换 location /adminApi { proxy_pass http://ip:port; } }
5. 使配置生效
sbin/nginx -s reload sbin/nginx -s stop sbin/nginx
6.访问ip地址查看效果
参考
1、cd到指定目录
cd /usr/lib/systemd/system
2、创建nginx.service
vi nginx.service
3.输入以下内容,路径为nginx安装路径
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
设置开机启动
systemctl enable nginx
其它命令
#重启应用
systemctl restart nginx
#停止应用
systemctl stop nginx
#查看应用的日志
systemctl status nginx
Linux Supervisor 守护进程基本配置:
supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控、管理进程。常用于管理与某个用户或项目相关的进程。
组成部分
supervisord:服务守护进程
supervisorctl:命令行客户端
Web Server:提供与supervisorctl功能相当的WEB操作界面
XML-RPC Interface:XML-RPC接口
启动或者更新报错
错误信息 :unix:///tmp/supervisor.sock no such file
解决方法如下:(4条消息) “unix:///tmp/supervisor.sock no such file“ 错误解决方案
错误信息:error:
解决方法:重新关联配置文件启动:supervisord -c /etc/supervisor/supervisord.conf
supervisorctl 是 supervisord 的命令行客户端工具,使用的配置和 supervisord 一样,这里就不再说了。下面,主要介绍 supervisorctl 操作的常用命令:
输入命令 supervisorctl
进入 supervisorctl 的 shell 交互界面,就可以在下面输入命令了。:
也可以直接通过 shell 命令操作:
supervisorctl status //查看所有进程的状态 supervisorctl stop program_name //停止指定程序 supervisorctl start program_name //启动指定程序 supervisorctl restart program_name //重启指定程序
supervisorctl update //配置文件修改后使用该命令加载新的配置
supervisorctl reload //重新启动配置中的所有程序
supervisorctl tail program_name //查看启动时具体报错信息
注:把program_name换成all可以管理配置中的所有进程。
查看版本信息:
supervisord -v
参考地址:http://beginman.cn/linux/2015/04/06/Supervisor/
官网文档地址:http://www.supervisord.org
我使用的环境:
$ python -V
Python 2.6.6
安装:
yum install python-setuptools
easy_install supervisor
配置:
1、在etc下创建目录,并赋权限
mkdir -m 700 -p /etc/supervisor
2、在目录“ /etc/supervisor”下创建配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
3、修改配置文件
vim /etc/supervisor/supervisord.conf
在文件末尾添加,注意首尾需无空格,需顶格
[include] files=/etc/supervisor/conf.d/*.ini
4、在目录“/etc/supervisor”下创建dotnet core 进程配置文件存放目录“conf.d”
mkdir -m 700 /etc/supervisor/conf.d
5、编辑并创建进程配置文件:
vim /etc/supervisor/conf.d/dotnet.ini
配置文件内容: asp.net core
[program:OneAspNetCore] command=dotnet OneAspNetCore.dll ; 运行程序的命令 directory=/home/webapps/aspnet/ ; 执行前要不要先cd到目录去,一般不用 autorestart = true ; 程序异常退出后自动重启 autostart=true ; 随着supervisord的启动而启动 startretries = 10 ; 启动失败自动重试次数,默认是 3numprocs=1 ; 启动几个进程 stderr_logfile=/var/log/OneAspNetCore.err.log ; 错误日志文件 stdout_logfile=/var/log/OneAspNetCore.out.log ; 输出日志文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量 user=root ; 进程执行的用户身份 stopsignal=KILL ; 用来杀死进程的 stopsignal=INT
注:这里的日志文件目录必须存在 supervisor不会创建该日志目录
配置文件内容:nginx 预防nginx死掉
[program:nginx] command=systemctl start nginx ; 运行程序的命令 directory= ; 执行前要不要先cd到目录去,一般不用 autorestart = true ; 程序异常退出后自动重启 autostart=true ; 随着supervisord的启动而启动 startretries = 10 ; 启动失败自动重试次数,默认是 3numprocs=1 ; 启动几个进程 stderr_logfile=/var/log/nginx/nginx.err.log ; 错误日志文件 stdout_logfile=/var/log/nginx/nginx.out.log ; 输出日志文件 user=root ; 进程执行的用户身份 stopsignal=KILL ; 用来杀死进程的 stopsignal=INT
启动Supervisor
supervisord -c /etc/supervisor/supervisord.conf
ps:如果服务已启动,修改配置文件可用“ supervisorctl reload ”命令来使其生效
新建一个“supervisord.service”文件
#supervisord service for systemd (CentOS 7.0+) # by ET-CS (https://github.com/ET-CS)[Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown ExecReload=/usr/bin/supervisorctl $OPTIONS reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
将文件拷贝至:“/usr/lib/systemd/system/”
执行命令:systemctl enable supervisord
执行命令:systemctl is-enabled supervisord #来验证是否为开机启动
重启检测是否正常!!!
.NET core 后台开放连接端口修改位置:
修改后记得修改vue前端后台连接配置文件
vue前端通过nginx反向映射,修改位置为nginx的配置文件:
centos下
/usr/local/nginx/conf/nginx.conf
注意事项:
需要注意检测防火墙是否启动,如果防火墙启动,部署完成后也是不能对网页进行访问的
防火墙操作指令:
先开启防火墙
systemctl start firewalld
查看防火墙
systemctl status firewalld
防火墙相关命令
查看防火墙状态 systemctl status firewalld
开启防火墙 systemctl start firewalld
关闭防火墙 systemctl stop firewalld
重启防火墙 service firewalld start
若遇到无法开启
systemctl unmask firewalld.service
systemctl start firewalld.service
添加指定需要开放的端口
firewall-cmd --add-port=8080/tcp --permanent
重载入添加的端口
firewall-cmd --reload
查询指定端口是否已开
firewall-cmd --query-port=8080/tcp
移除指定端口:
firewall-cmd --permanent --remove-port=8080/tcp
查询开放的防火墙列表
firewall-cmd --zone=public --list-ports
注意: 如果开放了端口还是连接不上,有可能是安全组策略没有开放,需要去安全组开放