Linuxサーバー構築

初カキコ…ども…

俺みたいな業務中でQiitaに投稿してる腐れ野郎、他に、いますかっていねーか、はは

今日のクラスの会話
あの流行りのソースかっこいい　とか　あの機材ほしい　とか
ま、それが普通ですわな

かたや俺は電子の砂漠で死体を見て、呟くんすわ
Hello wolrd．狂ってる？それ、誉め言葉ね。

好きな音楽　[ネクライトーキー]![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3236383133342f66626663373835622d353062372d396366382d626563652d3935356539323433366661632e6a706567.jpg](https://qiita-image-store.s3.amazonaws.com/0/260656/80eaad4f-aff4-4f41-f2af-8e6cd699a93d.jpeg)


マジでおすすめです。

なんつってる間にお昼終わりっすよ(笑)　あ～あ、社会人の辛いとこね、これ


と、冗談はさておき、これは初めてサーバ構築したときの参考にしたサイトやキーワードをまとめた覚書
また間違えたとこがあったら優しく指摘してくれたら幸い

#Linuxのインストールからサーバ構築まで

##CentOSインストール
ダウンロード先は[公式ページ](https://www.centos.org/)から

このDVD　ISOをダウンロードして、DVD－Rに書き込み
それをインストール用のPCに読み込ませて、もろもろの設定

[参考ページはここ](https://eng-entrance.com/linux-centos-install)

大体の設定は参考ページでいいかと
実際にやったときはもともとWindowsが入っていたPCなので、その分のパーテーションの削除しないといけないのに初め気づかなかった…
セキュリティはデフォルトにしたかったけど妙なエラーが出るってことでRedHatなんたら〜というのにしました
ソフトウェアの設定はKDE

ネットワーク接続に関しては、別のpcのコマンドプロンプトからipconfigでからipアドレスとサブネットマスクがわかる
アドレスに関してはこの2つから振り分けられる範囲をもとに設定
デフォルトゲートウェイはこのままで良い
肝心のdnsアドレスはnslookup google.comなどで知ることができる

インストールが終わったら再起動し、まずはCentOSをyumでアップデート

以降各種サービス追加

###サービス追加の流れ
大体のサーバーサービス追加の全体の流れは一緒なので、ここにそのメソッドを書いておく

まずはそのサービスの有無について次のコマンドで確認
```[root]#systemctl list-unit|less
/#ここにサービス名(一部でもいい)```

それがなかった場合や次の段階でconfファイルがなければ、サービスがないと見て、次のコマンドでインストール

```[root]yum install #ここにサービス名```

それが終わったらここからは各サービスによって設定をいじったり色々な事情がある

それが終わったら基本的にウェブ上でアクセスさせるため、firewalldのポート開放を行う
ちなみにこのfirewallはCentOS7以前ではiptablesで十分用が足りるということで停止するように設定する例が多かったが、7からはfirewalldがiptablesを活用する構図になったぽい（間違ってたらスミマセン）
そしてこのfirewalldは6〜9以上のゾーンファイルをもとにアクセスの可不可を判断する

とりあえず基本的なfirewalld-cmdは[ここのサイト](https://qiita.com/kenjjiijjii/items/1057af2dddc34022b09e)を参考にした
これをもとにサービスをゾーンファイルに追加する
どこのゾーンファイルに追加するかはプロジェクトによって異なってくるかもしれないが、基本的にデフォルトのゾーンとなるであろう
設定を追加したらfirewalldを再起動することをお忘れなく

firewalldの設定も終えたらサービスを起動していく
最初に自動起動の設定を行い、サービス開始
```$sudo systemctl enable #サービス名
$sudo systemctl start #サービス名```
それを終えたら最後に接続の確認となる
各サービスに合わせたフリーソフトやwebブラウザから確認が行える
これが成功して初めてでサーバーを立てるのに成功と言える

それでは実際に各サーバーの立て方について見ていくとする


##SSH接続
インフラ構築のイロハのイ、SSH接続
このサーバーを立てることで遠隔地からの安全な接続ができるようになる

まずはopenssh-serverをインストールする

このsshまではrootで作業するが、Rootで作業して事故らないよう、ユーザーにsudo権限を付与してユーザーで極力作業する

具体的にはまずsudoグループを作成し、一般ユーザーをそのグループに所属させる
そしてvisudoで以下の一文を追記

```%sudo ALL=(ALL) NOPASSWD:ALL ```

これ以降はRoot権限の必要な場合はsudoをつけるだけで虎の威を借りれる
(一部のディレクトリ作成やファイルコピーの時はできないときもある模様)

権限付与とsshのインストールができたらさっそくsshdサーバを自動起動設定しつつ起動し、ポート開放も行う

無事サーバーが建てられたかの確認は別のpcから[TeraTerm](https://ja.osdn.net/projects/ttssh2/releases/)を使用してアクセス

##vsftp
ftpサーバーを立てていく
ftpサーバーはデータをやり取りするときに必要となる


まずはftpのインストール
名称はvsftpdとなる

インストールが終わったらまずはconfファイルを編集する
```/etc/vsftp/vsftpd.conf ```

設定項目に関しては[ここ](https://vicsfactory.com/?p=62)を参考にした

このftpusersは拒否するユーザーについて定義するリストだったのとpaM認証を有効にしてしまったため、うっかりこのユーザーリストにユーザー名を入れてしまうと、そもそものユーザーログインすらできなくなってしまう…

またこのchroot_listはデフォルトで存在しない場合があるため、そのときは作成するように

最後にfirewalldのサービスにftpを追加して、サーバーを立てる

無事建てられたかどうかは[ffftp](https://synclogue-navi.com/ffftp-install)を使用して接続できるかどうかで確認する
できなければ大体configの問題であろう

##apache
apacheはwebページを表示させる上で機能するサーバーだ

まずはhttpdをインストールする

その後confについて設定する

```/etc/httpd/conf/httpd.conf ```

confの設定に関しては[ここ](https://qiita.com/salt_field/items/3e255c3356006a1e020f)を参考とした
使用する箇所のDirectoryのAllowOverrideの項目は要チェック
後のTomcatなどでアクセスできなくなったりする

ドキュメントルートの変更


その後はポート開放からのシステム起動でサーバーが立てられる

確認するにはドキュメントルートに指定されている箇所にindexページなどを作り、http://###.###.###.###/(#部はアドレス)へアクセス
初期ドキュメントルート```/var/www/html/```
```echo hello_world >/var/www/html/index.html```

##Tomcat導入
apaheとtomcatは共にwebページを閲覧できるようにするシステム
そして前者が静的コンテンツ(html等)向けで後者が動的コンテンツ(jsp,servlet等)向けとなってる
厳密に言えばtomcatはサーブレットコンテナで、一部がサーバーとしての機能を持っている

tmcatの導入は[ここ](https://qiita.com/LowSE01/items/2c735f22d220f53a6b2f)を参考とした
tomcatの導入の際の手順は以下のとおり

jdkをインストール(インストールするjdkはwebで確認すれば最新のをインストールできる)
次にjdkまでのパスを通す
tomcatユーザーを追加して、
tomcatのtar.gzファイルを```/usr/local/src```へダウンロードする
それを展開してtomcatユーザーに所有権を変える

最後にサービス定義ファイルを作成して、パスを通したら、ファイアウォールの独自サービスの追加でtomcatを追加して、ポート開放を行った上で下記のコマンドで実行させる

ちなみに参考元ではシンボリックリンクを作成して、サービスファイルのパスを底に指定しているが、うまくいかなかったため、シンボリックリンクでのアクセスはやめた

```sudo service tomcat enable
sudo service tomcat start'''

確認するには、
http://###.###.###:8080にアクセスすることでtomcat独自のページにアクセスできる

#apacheとtomcatの連携
ここまでの時点ではapacheとtomcatが入ってるだけで、厳密にどう働き分けをするかについて定義されていない
それらを改めて設定するためajpモジュールの設定を編集することで連携をさせる



まず、ポート8080の開放はあくまで確認のためであるため、
```firemall-cmd --remove=tomcat --permanent```　で、ポートを閉じる


以下は/etc/httpd/conf/ディレクトリにて作業を行う
まずhttpd.confの設定に以下の一文を書き加える
```Include /etc/httpd/conf/extra/httpd-proxy.conf```
ここはアンダーバーじゃなくハイホン(ここで半日つぶしたなんていうのは内緒)
それができたらextraディレクトリを作成して、ディレクトリ内にhttpd-proxy.confを作成する
次はその中身

```ProxyPass /html !
ProxyPass /images !
ProxyPass / ajp://localhost:8009/program/```

それが終わったら```http://local/program/```このアドレスで確認できる

###Struts2の導入

[ここ](https://struts.apache.org/download.cgi)で最新バージョンのアドレスを確認する
したうえで/usr/local/src/にwgetでダウンロードして解凍する

解凍後は/opt/に移動して、struts2ディレクトリ内のapps内のstruts2-showcase.warとstruts2-rest-showcase.warを/opt/apache-tomcat-8.5.32/webapp/内へコピーする
コピー後は所有権を変更して置くこと

確認方法はこのアドレス(http://localhost/program/struts2-showcase/sshowcase.action)


###PostgreSQLの導入

[参考にしたサイトはここ](https://qiita.com/LowSE01/items/84af05449f96dedd0edc)
と[ここ](http://vdeep.net/centos7-postgres)

インストールはおおむね以下の通り

```$sudo rpm -iUvh https://download.postgresql.org/pub/repos/yum/testing/11/redhat/rhel-7-x86_64/pgdg-centos11-11-1.noarch.rpm
$sudo yum install --enablerepo=pgdg11 postgresql11-server postgresql11-devel postgresql11-contrib```

その後は新しいデータベースクラスタを作成
```$sudo /usr/pgsql-11/bin/postgresql-11-setup initdb```


その後はサービスの自動化設定と起動を行って、postgresユーザーのパスワード設定

```sudo passwd postgres```

その後はpostgresユーザーになり、 ```$psql``` コマンドでpostgresモードに
そしてそこで

```Postgres=# create role #ユーザー名 login created password ‘#パスワード’;```



これで特定のユーザーにデータベースの権限が与えられる。

データベースの一覧を見たいときは次のコマンドを使用する

```psql -l ```


駆け足気味だけれど、大体こんな感じでサーバー構築の初歩っぽいところをざっとまとめてみました。