說在前面
在閱讀本文之前,您必須對Linux中涉及的常見命令有一定了解,本文側重實戰,不會對相關概念詳述。
注:本文實驗環境是 Oracle VM VirtualBox虛擬機, CentOS-7-x86_64-Minimal-1908系統 。
安裝 CentOS7 Minimal
- 可自行 Google 或百度
配置 ip,通過 xshell 連接
vi /etc/sysconfig/network-scripts/ifcfg-eno
- 將
ONBOOT=no
修改為ONBOOT=yes
- 重啟網絡
sudo service network restart
- 將網卡的連接方式修改為橋接網卡
- 輸入命令
ip addr
查看 ip
安裝.NETCore sdk
- 可以按照微軟官方文檔進行 點擊查看
創建.NETCore 項目,並上傳至 CentOS 中
安裝配置 Nginx 進行反向代理
安裝 Nginx
- 使用如下命令安裝 CentOS 的 EPEL 倉庫:
yum install epel-release
- 使用如下命令安裝 Nginx:
yum install nginx
- Nginx 安裝完成后, 系統並不會啟動 Nginx, 使用如下命令啟動 Nginx:
systemctl start nginx
- 使用如下命令設置系統啟動后, 默認啟動 Nginx:
systemctl enable nginx
添加 nginx 配置文件
server {
listen 81;
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;
}
}
防火牆相關操作
systemctl start firewalld //啟動防火牆
systemctl status firewalld //查看防火牆狀態
firewall-cmd --permanent --zone=public --add-service=http //允許HTTP
firewall-cmd --permanent --zone=public --add-service=https //允許HTTPS
firewall-cmd --reload //重新加載防火牆
firewall-cmd --zone=public --add-port=80/tcp --permanent //開啟80端口
firewall-cmd --list-ports //查看已經開放的端口
訪問 502
原因是由於 SELinux 保護機制所導致,我們需要將 nginx 添加至 SELinux 的白名單。接下來我們通過一些命令解決這個問題。
yum install policycoreutils-python
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
sudo semodule -i mynginx.pp
配置守護進程
安裝 Supervisor
yum install python-setuptools
easy_install supervisor
配置 Supervisor
-
先創建 Supervisor 配置文件的目錄
mkdir /etc/supervisor
-
通過 echo_supervisord_conf 指令(用來生成初始配置文件,文件名可以自定義)來初始化一個配置文件:
echo_supervisord_conf > /etc/supervisor/supervisord.conf
-
通過 vim 命令修改創建好的 supervisord.conf 配置信息,或有視圖界面的直接打開編輯
vi /etc/supervisor/supervisord.conf
-
文件內容末尾找到以下內容進行修改
;[include] ;files = relative/directory/*.ini [include] files = /etc/supervisor/conf.d/*.conf
-
創建目錄,添加配置文件
mkdir /etc/supervisor/conf.d cd /etc/supervisor/conf.d touch netcore.conf
-
通過 vi 指令或視圖界面編輯 netcore.conf,添加以下配置內容(分號后面的是注釋,注意看注釋,免得配置錯了)
[program:NetCoreDemo] ;自定義進程名稱, 根據自己喜好命名 command=dotnet NetCoreDemo.dll ;程序啟動命令 使用dotnet 命令(dll是你的項目文件) directory=/root/Documents/NETCore ;命令執行的目錄 你.NET Core 程序存放目錄 autostart=true ;在Supervisord啟動時,程序是否啟動 autorestart=true ;程序退出后自動重啟 startretries=5 ;啟動失敗自動重試次數,默認是3 startsecs=1 ;自動重啟間隔 user=root ;設置啟動進程的用戶,默認是root priority=999 ;進程啟動優先級,默認999,值小的優先啟動 stderr_logfile=/etc/supervisor/log/GDSMPlateForm.err.log ;標准錯誤日志 路徑可以自定義,文件夾要建好 stdout_logfile=/etc/supervisor/log/GDSMPlateForm.out.log ;標准輸出日志 路徑可以自定義,文件夾要建好 environment=ASPNETCORE_ENVIRONMENT=Production ;進程環境變量 stopsignal=INT ;請求停止時用來殺死程序的信號
-
啟動 supervisor 服務
supervisord -c /etc/supervisor/supervisord.conf
開機啟動 Supervisor 服務
-
1.進入
/usr/lib/systemd/system/
目錄cd /usr/lib/systemd/system/
-
2.創建自定義配置文件 supervisord.service
touch supervisord.service
-
3.編輯 supervisord.service 文件,有視圖界面就直接打開編輯
vi supervisord.service
-
4.添加以下內容,保存退出
[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
-
5.設置開機啟動
systemctl enable supervisord.service
-
6.檢測是否配置成功
systemctl is-enabled supervisord