前のページ
最近、企業はLinux上で動作する開発プロジェクトを必要としており、サンプル開発プロジェクトは. NET Core + Angularで開発され、理論的には完全にクロスプラットフォームをサポートしています。
しかし、実践こそが真理を検証する唯一の基準であり、実践を検証し、その過程で何か問題が発生した場合には経験の蓄積とみなされます。
I.環境への備え
由于本次主要验证项目部署 Linux 环境,也不想去重新搭建一个虚拟机环境;就使用 Win10 中 Linux 子系统(WSL 什么?)
- WSL有効化手順:
- 次の図のように、“Windowsの機能を有効または無効にする”でWSLを有効にする

- Microsoftストアにアクセスして適切なバージョンを選択します。

- インストール完了後の起動時(問題発生)

最终确定问题原因:需要更新 Linux 内核包(更新包下载地址:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)
インストール後、CentOSシステム環境の準備が整いました。
- NET Core環境のインストール:
- システムベースソフトウェアのバージョンの更新(実行できません)
sudo yum update
- Microsoft Signature Keyを登録する:
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
- 安装.NET Core SDK,示例程序采用 3.1 版本开发(站长注:现在 2022 年 5 月 11 日,.NET 7 Preview 4已经发布)
sudo yum install dotnet-sdk-3.1
- 表示はインストール成功しました。インストールは成功しました。

- Nginx環境のインストール:(Webプロジェクトのデプロイ)
- 依存環境インストール
yum install gcc-c++
yum install pcre pcre-devel
yum install zlib zlib-devel
yum install openssl openssl--devel
- Nginxのyumライブラリの追加
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- Nginxのインストール
sudo yum install nginx
- Nginxの基本情報
ディレクトリの構造:
| Nginxディレクトリ | |
|---|---|
| パスの構成 | /etc/nginx/ |
| エラー·ログ | /var/log/nginx/error.log |
| アクセス·ログ | /var/log/nginx/access.log |
| デフォルトのサイトディレクトリ/usr/share/nginx/html |
基本的なコマンド:
- nginx //nginxの起動
- NGINX-S QUIT //nginxの停止
- nginxのリロード //プロファイルの再読み込み
II.プロジェクトの展開
CentOSにプロジェクトをデプロイする方法はいくつかあります。直接実行、Dockerデプロイ(以前の記事で何度も使用しました)、そして今回はアプリケーションをデプロイするために直接実行アプローチを使用します。プロジェクトは前後エンドで分離されているため、個別に展開する必要がある
- サーバ側の導入
サーバプロジェクトファイルをCentOSディレクトリにコピーします。このデプロイメントパスは/home/www/publishです。

設定ファイルの変更:vimコマンドが必要です(別途インストールが必要)。
コマンドからプロファイルの編集にアクセスする:
vim appsettings.json
編集終了後、次のコマンドで終了
vim命令
:w 保存但不退出
:wq 保存并退出
:q 退出
:q! 强制退出,不保存
:e! 放弃所有修改,从上次保存文件开始再编辑命令历史

3.サービスの開始
プロジェクト·ディレクトリに移動してコマンドを実行する
[root@Coder supervisor]# cd /home/www/publish
[root@Coder publish]# dotnet ZLSoft.UnifiedDS.Web.Host.dll --urls http://*:8220

- フロントエンドプロジェクトの展開
1、将 web 项目拷贝到:/home/www/web
Nginx設定ファイルディレクトリに設定ファイルweb.confを追加する
server {
listen 8221;
server_name 192.168.243.86:8220;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /home/www/web;
index index.html index.htm;
try_files $uri $uri/ /index.html?$query_string;
}
#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 /usr/share/nginx/html;
}
}
** 注:Angularプロジェクトではルートリダイレクトが使用されているため、タグ付きコンテンツが必要です **
Nginx設定ファイルを更新する:
/usr/sbin/nginx -s reload
III.運用例
サーバーの動作:

Webプロジェクトの実行効果

このプロジェクトは正常に実行されましたが、CentOSコマンドを終了するとWebサーバが停止し、Creation Serviceデーモンが必要になります。
4.デーモンの作成-supervisor
1)スーパーバイザのインストール
#安装python的扩展
yum install python-setuptools
#通过python的扩展安装supervisor
easy_install supervisor
#建立设置文件夹
mkdir /etc/supervisor
mkdir /etc/supervisor/conf.d
#设置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
#修改设置文件(supervisord.d 文件夹下的所有 ini 类型的文件都是配置文件)
#在文件/etc/supervisor/supervisord.conf末端
;files = relative/directory/*.ini 改为 files = conf.d/*.ini
2、创建配置文件:在/etc/supervisor/conf.d目录下创建publish.conf
[program:publish]
command=dotnet ZLSoft.UnifiedDS.Web.Host.dll --urls http://192.168.243.86:8220 #运行命令
directory=/home/www/publish #程序路径
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true #自动启动
autorestart=true #3秒自动重启
startsecs=3
stderr_logfile=/var/log/ossoffical.err.log
stdout_logfile=/var/log/ossoffical.out.log
3.サービスの開始
#进入supervisor目录
cd /etc/supervisor
#启动supervisord 服务
supervisord -c supervisord.conf
4.デーモンのインターフェイス管理機能を有効にする
#修改配置文件:
vim /etc/supervisord.conf
#取消注释内容
[inet_http_server] ; inet (TCP) server disabled by default
port=*:9001 ; ip_address:port specifier, *:port for all iface
username=user ; default is no username (open server)
password=123 ; default is no password (open server)
#重新加载配置文件
supervisorctl reload
5.supervisorctlの一般コマンド
$ sudo service supervisor stop 停止supervisor服务
$ sudo service supervisor start 启动supervisor服务
$ supervisorctl shutdown #关闭所有任务
$ supervisorctl stop|start program_name #启动或停止服务
$ supervisorctl status #查看所有任务状态
V.サマリー
CentOSシステムで実行されるプロジェクトのデプロイメントは、主にLinux関連のコンテンツが熟練しているかどうかです。コマンド、権限、ソフトウェアおよびその他の関連コンテンツなど、何が必要か、より多くの練習が必要です。
また、WSLのLinuxシステムはまだ完全ではなく、当面の間、サービス、ファイアウォール関連機能がないので、実際の環境では、サービス起動、ファイアウォール関連の処理を設定することができます。
だからこそ、学習環境全体が必要です。