将.net core 应用发布到centos,并使用supervisor做守护进程
Admin1002021-01-06
1、Centos 下安装.NET CORE 3.1
- 注册Microsoft 密钥和源
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm - 安装 .NET Core SDK
sudo yum install dotnet-sdk-3.1 - 安装 ASP.NET Core 运行时
sudo yum install aspnetcore-runtime-3.1 - 测试.NET SDK安装成功
dotnet --version
2、安装nginx
- 添加源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm - 安装Nginx
sudo yum -y install nginx - 设置开机启动
sudo systemctl enable nginx
3、安装supervisor守护进程
- 安装supervisor
sudo yum install supervisor - 设置开机启动
sudo systemctl enable supervisord
4、安装Mysql 8.0(不需要数据库请忽略)
- 添加源
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm - 安装Mysql 8.0
sudo yum --enablerepo=mysql80-community install mysql-community-server - 启动mysql前切记
由于mysql8的限制,区分大小写必须在数据库初始化设置前进行设置,后期无法在配置文件etc/my.cnf中进行修改,修改了也不生效。安装好后千万不要启动服务。在etc目录下然后找到my.cnf,在末行添加 :lower_case_table_names=1然后再启动服务,这样lower_case_table_names 就初始化完成了。 - 设置开机启动
systemctl enable mysqld - 手动启动mysql
service mysqld start
5、Mysql账号配置
- 查看默认密码
sudo grep 'temporary password' /var/log/mysqld.log - 登录mysql
mysql -uroot -p - 修改root本地登录密码
alter user 'root'@'localhost' identified with mysql_native_password by '你的密码'; - 允许root指定远程ip登录
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
grant all on *.* to 'root'@'%'; 其中%可以换成指定的IP - 刷新数据库配置
flush privileges;
6、发布网站到指定目录
- 创建网站目录
如:var目录下创建www/你的网站 - 配置Nginx
server {listen 8888;//端口号server_name 192.168.1.1; //服务器ip或者域名# ssl_certificate /etc/ssl/xxx.crt; //ssl证书# ssl_certificate_key /etc/ssl/xxx.key;# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;
location / {proxy_pass http://localhost:5000;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection keep-alive;proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}} - 配置supervisor
在/etc/supervisord.d 目录下添加xx.ini文件配置如下
[program: Test]
command=dotnet Test.Web.dll ; 运行程序的命令
directory=/var/www/Test/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
autostart=true ; 是否自动启动
stderr_logfile=/var/log/supervisor/test.err.log ; 错误日志文件
stdout_logfile=/var/log/supervisor/test.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
startsecs=1 ; 自动重启间隔 - 加载配置
supervisorctl reload