Help us understand the problem. What is going on with this article?

Win上でビルドした.NET Core Webアプリを、CentOS7で実行するまでの最短環境構築 (CentOS事前準備編)

なにする

CentOS7 minimal インストールの状態から、

  • 開発はWindowsで行って
  • CentOS上ではビルドせず、実行のみ行う

ための環境構築および手順。(最低限に絞りました。)

もうちょい細かく

  • Windows10 上の VSCode で .NET Core 2.1 Webアプリ を開発してビルド
  • それを CentOS7 に samba で(エクスプローラで)アップ
  • CentOS 上では実行のみを行い、Apache 2.4 経由で公開する

ための環境構築および手順。

初期環境

  • Windows 10
  • CentOS Linux release 7.5.1804(minimal インストール)

最終的にこういう構成になります

  • Windows 10

    • VSCode (Visual Studio Code)
    • .NET Core 2.1 SDK
  • CentOS Linux release 7.5.1804(minimal インストール)

    • Apache 2.4
    • samba
    • .NET Core 2.1 ランタイム

はじめに

CentOS 7 minimal インストールの状態から、
Apache とsamba、.NET Coreランタイムを入れるまでのCentOS事前準備編です。
(要するにインフラ担当部分に相当)
※ ちなみにCentOS7 + Apache 環境がすでにあるなら、最後のランタイムのインストール(3行)だけでOKです。

開発環境の準備~デプロイまではこちら
https://qiita.com/miyapei/items/28f1b7360614551e7f15

CentOS 事前準備編 はじめます!

SELinuxについて

何もない状態からなら、まずは一通り動く状態にしてから設定したほうが楽だと思います。
# べ、別に面倒くさいとかややこしいとか、そんなんじゃないんだからね…

…というわけで無効化(異論は認める。すまんな…)

vi /etc/selinux/config
### SELINUX=disabled にします
reboot

### 起動後再接続したのち、Disabledになっているか確認
getenforce

Apache

インストール

### インストール
yum install httpd -y

### 起動
systemctl start httpd

### 自動起動有効化
systemctl enable httpd

### 確認
systemctl status httpd

ファイアウォールの設定

httpを許可します(最初なのでちょっと細かく書いておきます)

### 今動いてる?
systemctl status firewalld

### 今のzoneを確認
firewall-cmd --get-default-zone

public

### publicのzoneにhttpを恒久的に追加
firewall-cmd --add-service=http --zone=public --permanent

### 反映
firewall-cmd --reload

### 確認
firewall-cmd --list-all-zones | less

ブラウザからアクセスしてデフォルトページ見えたらOK

(今回必要ないけど一応バーチャルホストの仮設定も参考までに書いときます)

sambaでapacheユーザ流用して色々アップするみたいな想定で
ホームディレクトリ以下にドキュメントルート設定するよ
(この段階ではまだディレクトリも何も無いよ)

vi /etc/httpd/conf.d/vhost.conf
/etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
        ServerName 192.168.0.123
        DocumentRoot /home/apache/vhost
        <Directory "/home/apache/vhost">
                Require all granted
        </Directory>
</VirtualHost>

samba

…の前に、hostnameを設定しておきます

hostname dev123

適当な名前でOK。
何故これが必要かというと、サーバのhostnameが初期状態のlocalhost.localdomainだと、
sambaでそもそも書き込めないか、グループ権限などで書き込めるようにしても変な動作になります。
(ディレクトリ1回の作成で4つできたりとかした…)
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/410cantacssamba.html

もしユーザ作成してしまった後に変更しても、
ユーザのDomainだけがlocalhostのままになっていると思うので
その場合はユーザを削除して再作成すればOKです。

インストール、ファイアウォールの設定

(Apacheと大体同じ)

yum install samba samba-common -y
systemctl start smb nmb
systemctl enable smb nmb

firewall-cmd --add-service=samba --zone=public --permanent
firewall-cmd --reload

sambaの設定(smb.conf)

vi /etc/samba/smb.conf
/etc/samba/smb.conf
[global]

### ▼ [global] セクション変更したところ
#       printing = cups
#       printcap name = cups
        load printers = no
#       cups options = raw

### ▼ [global] セクションに以下追記
        server string = Samba Server Version %v
        dos charset = CP932
        disable spoolss = yes

### ■ [homes],[printers],[print$] 全てコメントアウト

### ▼ 末尾に追記
[apache]
        path = /home/apache
        read only = no

保存して確認

testparm

samba用のユーザ作成

httpのドキュメントを置くためだけに使用するので、apacheユーザを流用することにしました。

### ログインシェル、ログインパスワードを変更(suできるように)
usermod -s /bin/bash apache
passwd apache

### ホームディレクトリを変更
usermod -d /home/apache apache
cd /home/
mkdir apache
chown apache:apache apache/

### 確認
less /etc/passwd

### samba用のユーザとして登録
pdbedit -a -u apache -f "Apache"
pdbedit -L

### samba再起動
systemctl restart smb nmb

エクスプローラから接続確認できたらOK

.NET Core

今回はサーバ上ではビルドはせず、ビルドしたプロジェクトを配置だけして動かす想定なので
ランタイムのインストールのみです。

rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
yum update
yum install aspnetcore-runtime-2.1

CentOS事前準備編としては以上になります。

開発環境の準備~デプロイまではこちら
https://qiita.com/miyapei/items/28f1b7360614551e7f15

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away