次のようにこの記事のディレクトリです
- 動作環境
- 準備
- MySQLデータのインポートおよびインストール
- nginxのをインストールします。
- .NETコアランタイムをインストールします。
- 実行にコピー.NETのコアプログラムの試行
- 登録サービス
- nginxのリバースプロキシHTTPS
まず、動作環境
システムのUbuntu 16.04、ASP.netコア2.1 + MySQLのの展開。使用nginxのリバースプロキシHTTPSなど。
他にもLinuxシステムこの記事の手順のいくつかの違いであってもよいが、プロセスは同じであることがあります。
他のシステムでは、インストールされたMicrosoftのドキュメントを参照してくださいすることができます。ネットコアランタイムチュートリアル
https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install
第二に、仕事の準備
Toolsソフトウェアは、FTP転送ソフトウェアおよびリモートアクセスツールが必要です。WinSCPやパテのこの選択。Quguanネットワークダウンロードをお勧めします、Baiduの検索で見つけることができます。
あなたはまた、私は二次ドメイン名の証明書と秘密鍵のアプリケーションテンセントクラウドを使用し、プライベートキーファイルと証明書ファイルのドメイン名とドメイン名が必要です。
三、MySQLデータのインポートおよびインストール
Linuxは、MySQLのインストールと展開が簡単にインターネット上のチュートリアルを見つけることができ、ここでは詳述しません。このセクションをスキップすることができますMySQLの読者を使用しないでください。
(1)のMySQLをインストールします
sudo su //转到管理员模式
apt-get install mysql-server //安装mysql
後に(2)を設定するMySQLのMySQLをインストールした後
MySQLのデフォルトのエンコーディングの一般的な場合をLATIN1、入力された中国語文字化けされています。
プロジェクトは、時限イベントデータベースが必要になりますので、途中ように、イベントには、スイッチをオープンする予定です。
cd /etc/mysql/mysql.conf.d/
vi mysqld.cnf
ではmy.iniでここで少しピット、窓のMySQL設定ファイルのmy.iniの下に一つだけ、およびLinuxは、我々がする必要があるので、それは、一緒に複数のiniファイルの組み合わせを参照することであり、ここでmy.cnfの[mysqldを]ノードmysqld.cnfにこのファイルの対応を変更します。[mysqld]セクションに追加します。
[mysqld]
character-set-server=utf8 #设置默认编码为utf8
event_scheduler=ON #打开事件调度支持定时任务
VIの基本的な使用:私が編集モードに入る押す場所にカーソルを移動しますが、変更する、Escキーを押して終了し、編集モードを編集した後、Shiftキーを押しながら+ QはWQ +、W =ストレージ、Q =出口を保存するには、コマンドライン、タイプ出口とリターンを吐き出しました、Q!保存せずに終了します。
設定ファイルの編集が完了した後、再起動のMySQLであります
service mysql restart //重启MySQL
データベースに(3)
FTPツールを使用して、データベース・サーバーへの事前の良いエクスポートファイルインチ
mysql -u root -p
输入密码登录后
create database XXX;
use XXX;
set names utf8;
source /home/ubuntu/XXX.sql
ソースパスが続く前XXXは、データベースファイル転送データベースの名前です。
第四に、インストールnginxの
apt-get install nginx
インストール後に使用することができますのdpkg -L nginxの設置位置を表示
第五に、.NETのコアランタイムをインストール
ここでは独立した展開配備モードの選択、のみ、.NETのコアランタイムは、それに取り付けられた、あなたは依存フレームを展開することを選択した場合、あなたはDOTNET-SDKをインストールする必要があります。
それが信頼にMicrosoftの最初のapt-getをパスする必要があり、その後、apt-getを次のように(rootユーザがsudoを追加する必要がない)コマンドをインストールします。
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-runtime-2.0.9
コマンドを使用して、インストール後:インストールのようなものが成功した参照DOTNET。
します。https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install他のシステムは、Microsoftのドキュメントを参照してくださいすることができます
第六は、ASP.netコアのコピーを実行しようとします
ASP.netコアのリリースは、選挙のフレームワークに依存しない独立したリリースをX64 Linuxの選択したオプションを、公開覚えて、FTPを介してサーバにアップロードされたファイル。
コマンド使用してアップロードしたら:プログラムを実行しようDOTNET XXX.dllを、説明へのアクセスが近い成功になっている場合、+ IPしようとする、次の表示ショーが正常に実行エクストラネットアクセスポートを介して表情を参照してください。
VII登録サービス
今、プログラムを実行するだけでなく、訪問するが、いくつかのバグが予期せずしてそう終了するプログラムを引き起こしなどのプログラムは、すべての時間を実行しているかどうか、我々がわからないので、これは、十分ではありません。だから我々は我々のASP.netコアを実行するためのLinuxサービスの下での登録が必要となります。これは、プログラムが終了しますが、予期せず、それを再起動する必要があれば、システムが、このプログラムのバックグラウンドで実行されている伝えることとして理解することができます。どのようなサービスは、Windowsで比較することができます。
xxx.service:名前のサービスファイルを作成します。次の
[Unit]
Description=xxxService_config
[Service]
WorkingDirectory=/home/ubuntu/WebApps/PSDReminder
ExecStart=/usr/bin/dotnet /home/ubuntu/WebApps/PSDReminder/PasswordReminder.dll
Restart=always
# Restart service after 30 seconds if the dotnet service crashes:
RestartSec=30
KillSignal=SIGINT
SyslogIdentifier=PasswordReminder
User=ubuntu
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
サービスの説明では説明の塗りつぶしは、あなたが簡単に埋めることができ
WORKINGDIRECTORY塗りつぶしASP.netコアプログラムのフォルダパス
セクションVIでネット番組をドットのコマンドを実行し、ExecStartは、実際には、ASP.netコアのコマンドのあなたの塗りつぶしを実行します。
SyslogIdentifierフィルログを識別し
、ユーザー名でのユーザー塗りつぶしを、それが大きなユーザー権限を埋めるために最善です。
サービスファイルには、次のパスにコピーした後に行う
/etc/systemd/system/xxx.service
サービスを有効にするには、次のコマンドを実行
systemctl enable xxx.service
systemctl start xxx.service
首尾よく実行した後の状態を実行しているサービスを表示するには、以下のコマンドを使用します。
systemctl status xxx
退出レビューにプレスQ
八、使用nginxのリバースプロキシHTTPS
別のアドレスに転送リバースプロキシは、ユーザの要求に処理することが理解されるであろう。.NETのコアコードは、ドメインを結合されていないので、それほど使用する必要があります。https nginxのは、私たちの.NETのコアのドメイン名への要求を転送します。
私はポート8888にデフォルトのHTTPSポート443への要求を転送する必要があるので、コア・プログラムは、ポート8888でリッスンしている.NET設定しました。具体的には、次の
修正/etc/nginx/nginx.confファイルは、HTTP {}内の次の行を追加します
http{
...
...
server{
listen 443;
server_name xxx.xxx.com;#可用域名
ssl on;
ssl_certificate ca.crt; #证书路径
ssl_certificate_key privateKey.key; #私钥路径
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on; #ensure your cert is capable
ssl_stapling_verify on; #ensure your cert is capable
location / {
proxy_pass http://127.0.0.1:8888;#请求转发地址
proxy_set_header Host $host;
}
}
}
秘密鍵と証明書パスのパスが相対パスを記述する必要があり、私のアプローチは、直接の権限証明書であると秘密鍵ファイルは/ etc / nginxの/フォルダに配置されていることに留意すべきです。
再起動nginxのに実行コマンドを編集した後
systemctl restart nginx
それはnginxのconfファイルを起動に失敗した場合は間違っている可能性があります。
完了