.net5发布到Linux指南
目录
- 下载安装gcc编译库
- 下载安装pcre正则表达式库
- 下载安装openssl安全加密库
- 下载安装zlib解压库
- 下载解压并编译安装nginx
- 启动nginx
- 设置nginx开机启动
- 查看nginx状态
- 常用nginx命令
一、搭建nginx服务器
gcc -v
yum -y install gcc
yum install -y pcre pcre-devel
yum install -y openssl openssl-devel
yum install -y zlib zlib-devel
wget http://nginx.org/download/nginx-1.9.9.tar.gz
tar -zxvf nginx-1.9.9.tar.gz
cd nginx-1.9.9
./configure --prefix=/usr/local/nginx
make&&make install
cd /usr/local/nginx/sbin
./nginx
#在rc.local增加启动代码即可
vi /etc/rc.local
#增加一行 /usr/local/nginx/sbin/nginx,增加后保存
#设置执行权限
cd /etc
chmod 755 rc.local
通过端口查询: lsof -i:80 #nginx默认是80端口
通过进程查询: ps -ef | grep nginx
访问网页查询 curl 127.0.0.1
nginx -s stop :快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit :平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload :因改变了Nginx相关配置,需要重新加载配置而重载。
nginx -s reopen :重新打开日志文件。
nginx -c filename :为 Nginx 指定一个配置文件,来代替缺省的。
nginx -t :不运行,而仅仅测试配置文件。nginx将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的 文件。
nginx -v:显示 nginx 的版本。
nginx -V:显示 nginx 的版本,编译器版本和配置参数
二、安装.net5 runtime
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-runtime-5.0
sudo yum install aspnetcore-runtime-5.0
三、上传发布的项目文件并创建服务
cd /lib/systemd/system
sudo touch Oceania.ShopConfigService.service
sudo nano Oceania.ShopConfigService.service
配置ShopConfig.service服务文件
[Unit]
Description= ShopConfigService
[Service]
WorkingDirectory=/root/apiservices/Oceania.ShopConfigService/
ExecStart=/usr/bin/dotnet /root/apiservices/Oceania.ShopConfigService/Oceania.ShopConfigService.Api.Host.dll
Restart=always
RestartSec=10
SyslogIdentifier= ShopConfigService
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
然后输入
ctrl+x ->y 回车
systemctl enable Oceania.ShopConfigService.service
systemctl start Oceania.ShopConfigService.service
systemctl status Oceania.ShopConfigService.service
systemctl [command] [unit]
command 主要有:
start:立刻启动后面接的 unit
stop:立刻关闭后面接的 unit。
restart:立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。
reload:不关闭 unit 的情况下,重新载入配置文件,让设置生效。
enable:设置下次开机时,后面接的 unit 会被启动。
disable:设置下次开机时,后面接的 unit 不会被启动。
status:目前后面接的这个 unit 的状态,会列出有没有正在执行、开机时是否启动等信息。
is-active:目前有没有正在运行中。
is-enable:开机时有没有默认要启用这个 unit。
kill :不要被 kill 这个名字吓着了,它其实是向运行 unit 的进程发送信号。
show:列出 unit 的配置。
mask:注销 unit,注销后你就无法启动这个 unit 了。
unmask:取消对 unit 的注销。
四、配置nginx代理和防火墙
firewall-cmd --state
service firewalld start
firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=5000/tcp
ifconfig
firewall-cmd --zone=public --add-interface=ens192
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /shopconfigservice/ {
proxy_pass http://localhost:5000; #本地应用地址及端口,可以使用 curl 命令测试一下
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;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
五、运行截图
也可以输入:http://192.168.11.120/shopconfigservice/swagger/index.html 测试
六、发布更新
- 发布邮件接口服务
cd /usr/lib/systemd/system
sudo touch Oceania.MailApiService.service
sudo nano Oceania.MailApiService.service
[Unit]
Description= Oceania.MailApiService.service
[Service]
WorkingDirectory=/root/net5services/Oceania.MailService.Api.Host
ExecStart=/usr/bin/dotnet /root/net5services/Oceania.MailService.Api.Host/Oceania.MailService.Api.Host.dll urls=”http://*:5011”
Restart=always
RestartSec=10
SyslogIdentifier= Oceania.MailApiService.service
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
先Ctrl+x 再y
systemctl enable Oceania.MailApiService.service
systemctl start Oceania.MailApiService.service
systemctl status Oceania.MailApiService.service
查询端口
lsof -i tcp:80
curl http://127.0.0.1:5010/api/mail/getemailserverlist
或者
http://192.168.11.120/mailservice/swagger/index.html
- 发布邮件发送服务
使用winSCP上传文件
cd /usr/lib/systemd/system
sudo touch Oceania.MailService.service
sudo nano Oceania.MailService.service
[Unit]
Description= Oceania.MailService.service
[Service]
WorkingDirectory=/root/net5services/Oceania.MailService.Host
ExecStart=/usr/bin/dotnet /root/net5services/Oceania.MailService.Host/Oceania.MailService.Host.dll
Restart=always
RestartSec=10
SyslogIdentifier= Oceania.MailService.service
User=root
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
先Ctrl+x 再y
systemctl enable Oceania.MailService.service
systemctl start Oceania.MailService.service
systemctl status Oceania.MailService.service