最近参与的大部分项目都是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
至此整个项目就部署完成了。