通用NetCore前后端分离项目Linux系统部署步骤

        最近参与的大部分项目都是NetCore API加SAP页面的形式,都是部署在linux系统上,本文记录新领的服务器的部署步骤。采用NetCore3.1,MySql数据库。

        本文记录的程序名:myapp.dll

        部署文件保存目录:

        后台程序:/usr/publish/myapp/server/

        前端页面:/usr/publish/myapp/web_root

1、安装配置MySQL

1.1、安装MySQL

        使用以下命令即可进行mysql安装,注意安装前先更新一下软件源以获得最新版本:

sudo apt-get update  #更新软件源
sudo apt-get install mysql-server #安装mysql

        安装过程会提示设置mysql root用户的密码,设置完成后等待自动安装即可。

        启动和停止mysql服务指令:

service mysql start
service mysql stop

         使用指令确认是否启动成功,mysql节点处于LISTEN状态表示启动成功

sudo netstat -tap | grep mysql

1.2、MySQL设置root帐号密码

        部分Linux版本安装mysql后不会自动提示设置root密码,此时需要手动修改root密码:

1.2.1、cd到etc/mysql目录下,查看debian。cnf文件:

 

 1.2.2、使用文件中记录的用户名和密码登录mysql:

mysql -u debian-sys-maint -p

 1.2.3、在mysql中使用sql语句修改root帐号密码:

use mysql;
update user set authentication_string=PASSWORD("自定义密码") where user='root';
# update user set authentication_string=PASSWORD("rootadmin") where user='root';
update user set plugin="mysql_native_password";
flush privileges;
quit;

1.2.4、修改root密码后重启mysql服务

/etc/init.d/mysql restart #远程账户可能会需要输入系统root帐号密码

1.3、mysql基础配置修改

        常用需要修改的配置包括开启远程登录,修改连接端口,忽略大小写表名等。

        进入到mysql配置文件目录,修改配置文件mysqld.cnf

cd /etc/mysql
vim mysql.conf.d/mysqld.cnf

        开启远程登录只需要注释掉 [mysqld]节点下的bind-address行:

# bind-address = 127.0.0.1

        修改port行更改连接端口,默认的连接端口为3306,以下配置修改为3316:

port = 3316

        如果需要忽略数据库表名的大小写,需要在 [mysqld]下增加配置:

lower_case_table_names = 1

1.4、为程序配置mysql帐号

        通常会为程序单独建立新的账号连接mysql,并访问指定的数据库,使用root账号登录数据库:

mysql -u root -p

        使用sql语句先给程序创建数据库,再给程序创建帐号并授权:

CREATE DATABASE appdatabase;     --程序专用数据库  appdatabase
use mysql;
CREATE USER 'appaccount'@'%' IDENTIFIED BY 'app123456';  --程序专用帐号用户名 appaccount,密码 app123456
GRANT ALL PRIVILEGES ON appdatabase.* TO 'appaccount'@'%' IDENTIFIED BY 'app123456'; 
flush privileges;
quit;

        对于DB First的程序,需要导入sql脚本初始化数据库。Code First 程序启动时会自动初始化数据库。

1.5、自动备份数据库

1.5.1、安装Crontab定时任务服务:

sudo apt-get install cron

1.5.2、创建数据库备份shell脚本

cd /usr/publish/myapp
mkdir dbback
chmod 777 dbback/
touch autodbbackupsql.sh
chmod 777 autodbbackupsql.sh
vim autodbbackupsql.sh

        shell脚本指令:

Mysqldump -uappaccount -papp123456 appdatabase> /usr/publish/myapp/dbback/appdatabase_$(date +%Y%m%d_%H%M%S).sql

1.5.3、添加任务计划

        使用指令配置计划:

crontab -e                #选择编辑器进行编辑

        添加如下指令保存退出:

00 06 * * * bash /usr/publish/myapp/dbback/autodbbackupsql.sh
# m h  dom mon dow   command   
# m 表示分 0-59
# h表示小时 0-23
# dom表示一个月中的第几天 1-31
# mon表示月份 1-12
# dow表示星期中的第几天 0-6(星期天为0)
# * 表示参数未配置
# 以上完整命令即表示 每天早上6点执行命令 bash /usr/publish/myapp/dbback/autodbbackupsql.sh 进行备份

        配置计划完成后重启定时任务服务:

service cron restart

2、安装NetCore环境

2.1、安装相关依赖

        不同的系统版本,相关依赖包的下载地址不同,具体参考官方说明:

在 Ubuntu 上安装 .NET - .NET | Microsoft Learn

        以Ubuntu16.04为例,依赖包的下载安装指令为:

wget https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

2.2、安装SDK

        使用以下指令完成SDK安装:

sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y dotnet-sdk-3.1  #不同版本将3.1替换为对应版本号

2.3、安装图形处理库

        很多程序都需要图片验证码,Linux环境中需要安装netcore能使用的图形处理库,通常使用libgdiplus:

sudo apt-get install libgdiplus
cd /usr/lib
sudo ln -s libgdiplus.so gdiplus.dll

2.4、启动netcore程序

        采用后台模式启动程序:

cd /usr/publish/myapp/server
nohup dotnet myapp.dll > log.log 2>&1 &

        查看程序运行状态:

 ps -ef | grep myapp.dll

2.5、程序开机自动启动

        安装进程守护程序supervisor配置开机启动:

sudo apt-get install supervisor

        安装完成之后,在/ect/supervisor/conf.d/目录下新建一个节点配置文件myapp.conf:

cd /etc/supervisor/conf.d
touch myapp.conf
vi dotnetmedia.conf

        修改节点配置文件:

[program:myapp]
command=dotnet myapp.dll
directory=/usr/publish/myapp/server
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=5
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log

        按esc 然后输入:wq保存并退出。修改supervisor配置文件:

vim /etc/supervisor/supervisord.conf

        添加以下配置:

[inet_http_server]
port=*:8082
username=myusername
password=myapp123456

        退出,保存,执行以下指令应用配置:

sudo supervisorctl shutdown && sudo supervisord -c /etc/supervisor/supervisord.conf

        重启supervisor服务:

service supervisor restart

        supervisor服务启动后可通过web页面对配置的进程进行管理,浏览器访问以上配置的8082端口,使用以上配置的username和password登录之后就能看到对应管理页面:

         页面可对管理的服务进行重启、停止,状态进行监测等。

3、安装Nginx环境

        使用指令安装Nginx:

sudo apt-get install nginx

        基本配置修改,对于大多数程序,nginx默认一些配置项需要调整:

proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;

        新版的nginx站点的配置节点移到了单独的目录:

cd /etc/nginx/sites-enabled
vim default

        添加站点配置:

server {
        listen 8080;
        server_name myapp;
        root /usr/publish/myapp/web_root;
        index index.html;
        
        #配置接口数据跨域代理                                                                                                                               
        location /api{
                proxy_pass http://127.0.0.1:8081;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host:$server_port;
                proxy_redirect off;
        }
        #图片及下载文件等后台资源路径代理
        location /Resource {
                proxy_pass http://127.0.0.1:8081;
                proxy_redirect off;
        }           
}

        配置完成后reload nginx即可:

nginx -s reload

        至此整个项目就部署完成了。

猜你喜欢

转载自blog.csdn.net/evanyanglibo/article/details/128727992