カテゴリー

アクセスカウンター


since 1996/06/14

Count per Day

  • 36今日の訪問者数:
  • 47昨日の訪問者数:
  • 743月別訪問者数:
  • 0現在オンライン中の人数:

CentOSサーバセットアップメモ

CentOSでオペレーションをしてるときによく調べる事をメモっておきます。細かい説明は極力省いてます。

CentOSセットアップ関連

セットアップ備忘録(超私的)

  • CentOS6以前は、/bootにxfsが使えない。/bootはソフトミラーもできない(LVMで強引にできるけど、あとで痛い目を見る)
  • 主なパーティションサイズ(アプリデータを別に入れると想定した場合)
    /boot…500M。長期間運用サーバなら1GB
    /(root)…GUI無し5G(だいたい2~3GB使用)、GUI有り10G(だいたい5GB使用)
    /var…5GB(だいたい1~2GB使用)
    swap…2G以下ならメモリx2。8G以下ならメモリと同容量。8G以上なら8GB。
  • CentOS6で作成されるデフォルトユーザのuidは500からだが、CentOS7は1000からになるので、データ移行する際には一応注意する。

セットアップ後の備忘録(超私的)

  • /etc/hostsをいい感じにする
  • /etc/fstabの「defaults,noatime」にする
  • UID変更
    usermod <変更する項目> <USER>
    ※項目の指定方法は後述のuseraddと同じ
  • SELinuxを無効可(/etc/sysconfig/selinux→SELINUX=disabled)→再起動
  • firewalldを止めたくないけど止める
    # systemctl disable firewalld
  • yum update
  • ~ここで再起動~
  • yum install nmap epel-release yum-plugin-priorities yum-cron tmpwatch rsync mailx zip unzip wget screen tcpdump openssh-clients figlet
    – 仮想化ゲストならacpidも入れる
    -MariaDB(Client)を使うならmariadb-libsも入れる
    – NFS(Client)を使うならnfs-utilsも入れる。

    # yum install nfs-utils
    ~略~
    # vi /etc/idmapd.conf
    ※Domainに自ドメインを追記
    # systemctl status rpcbind
    # systemctl start rpcbind
    # systemctl enable rpcbind
  • vi /etc/ssh/sshd_config
    rootで直接リモートログインを許可しない
    PermitRootLogin no
  • vi /etc/profile.d/banner.sh
    #!/bin/sh
    figlet -f banner -w 100 $HOSTNAME
    figlet -f banner "<"$USER">"
  • できればHostOSからのシャットダウンをテストした方がいい。
  • グループ追加
    # groupadd -g <GID> <GROUP>
  • ユーザ追加
    # useradd -u <UID> -g <GID> -d /home/<USER> -m -s /bin/bash -c <コメント> <USER>

 

CentOS7関連

systemctl

  • systemctl –full
    管理されてる物を全て表示する。あまり使わないコマンド。
  • systemctl list-dependencies
    管理されている物をツリー状に表示してさらにエラー状態を色分け表示。便利。
  • systemctl -t service
    サービス(デーモン)だけ絞って表示。ここでエラー表示があるなら原因は探った方がいいかも。
  • serviceファイルを手で更新したら再読み込み。
    # systemctl daemon-reload
  • サービス名わからない、見つからない場合
    # systemctl status httpd
    # ls -la /usr/lib/systemd/system/httpd
    # ls -la /usr/lib/systemd/system | grep -i httpd
    などなど
  • シェルを起動するserviceファイルを作る
    残念ながらCentOS6以前の起動シェルをそのまま使うのは困難。以下、言葉の意味はググれば出てくるので略。シェルをキックする場合は、Type=forkingにしないとエラー扱いになる。直接デーモンとなるファイルをExecStartに指定できる場合は、Type=simpleでも良い。
    # /etc/systemd/system/サービズ名.service
    [Unit]
    Description=サービス名 Server
    After=network.target
    Requires=
    [Service]
    Type=forking
    ExecStart=/path/to/シェル名.sh
    User=ユーザ
    Group=グループ
    Restart=always
    [Install]
    WantedBy=multi-user.target

それ以外

  • ifconfigの変わり
    $ ip a
  • どうしてもifconfigとかnetstatとかを使いたい
    # yum install net-tools.x86_64

 

仮想化関連

  • qcow2ファイルの縮小(shrink)。(旧ファイルは残る)
    qemu-img convert -c -O qcow2 from.qcow2 to.qcow2
    ※ただし、qcow2ファイルは拡大時の性能劣化が激しいので注意。

 

yum関連

  • リポジトリ指定実行
    # yum –enablerepo=mariadb search mariadb
  • MariaDBとPostfixの同居(mariadb-libsの競合回避)
    # yum remove postfix mariadb-lib
    # yum –enablerepo=mariadb install MariaDB-shared postfix
    (MariaDB-commonとMariaDB-compatも依存でインストールされる)
    # yum –enablerepo=mariadb install MariaDB-server MariaDB-client

 

Disk関連

  • UUIDを見る
    blkid
  • ノンスパースなrawファイルを作る(200G)。重いので仮想サーバが居る場合は注意。
    dd if=/dev/zero of=disk.img bs=1024M count=200
  • スパースファイルかの確認
    # qemu-img info disk.img
    (disk sizeを見る)

 

LVM関連

「物理パーティション→pvへ登録→vgへ登録→lvへ登録→OSへマウント」という流れ。面倒だけど、動的リサイズ(条件はあるけど)やオンラインmoveが使えるので、仮想化環境のように複雑な環境を管理する場合は使うと便利。そういうのは必要無いなら無理して使うことは無い。

  • pv追加
    # pvcreate /dev/sda1
    先にfdiskでスライスを作っておくと良い。mkfsは不要。ディスク丸ごとも指定できたはず(# pvcreate /dev/sda)
  • vg追加
    # vgcreate -s 32M vg_vgname /dev/sda1
    -sはエクステントサイズ。32Mにすると、2TBまでのpvを扱える。デフォは4M(256GBまで)。大きく取ると容量の無駄(残が32M以下だとそこが使われない)らしいけど、そのくらいなら気にしない。小さい方が性能が良くなるらしいけど、まぁ気にする程でも無いという話もある。
  • lv追加。
    # lvcreate -n lv_lvname -l 100%FREE vg_vgname
    -lはサイズの指定(100Mとか)だけど、指定したvgの容量を全て割り当てる場合は「100%FREE」と書く。
  • ファイルシステム作成
    vg_vgname、lv_lvnameを作るとデバイス「/dev/vg_vgname/lv_lvname」ができるのでフォーマット。
    # mkfs.xfs /dev/vg_vgname/lv_lvname
    フォーマットすればblkid等でも見れるようになる。

 

MariaDB関連

初期設定

  • DBを起動して、「mysql_secure_installation」

phpMyAdminを使えるようにする。

  • # yum install httpd php php-mbstring php-gd php-mysql phpMyAdmin
  • # vi /etc/httpd/conf.d/phpMyAdmin.conf
    ローカルログインしか許可されてないので、アクセスする外部のIPを追加するなり、全部許可するなりする。
  • ブラウザから、http://IP/phpmyadmin/

基本的な操作
また、Webアプリの多くは設定ファイルにDBのパスワードを書く場合が多く、ファイルに誰でも読めるパーミッションが設定されている事も多いことから、あまりセキュリティを意識しないでroot/パスワード無しでDB操作する人も多いけど(気持ちはわかる)、誤操作の原因になるのでせめてユーザ名くらいはDB毎に別々にした方がいい。

  • ユーザ作成
    接続元ホストはlocalhostとかIPとかFQDNとか。リモート接続の場合は、IPとホスト名が同じ物でも指定の仕方と定義が一致しないと繋がらない。(localhostと127.0.0.1が別物という意味)
    # mysql -u root -p
    mysql> grant all privileges on DB名.* to ユーザ名@接続元ホスト identified by ‘パスワード’;
    ※「all privileges」は全ての操作、「DB名.*」は対象DBの全てのテーブル、「ユーザ名@接続元ホスト」はその権限を与えるユーザとその接続元。接続元をサブネットレベルにしたいなら「192.168.1.%」という感じ。
  • DB作成
    UTF-8で作成。rootユーザで作成してもいいけど、動作確認を兼ねてユーザを変えてる。
    # mysql -u ユーザ名 -p
    mysql> create database DB名 DEFAULT CHARACTER SET utf8;

Docker関連

バージョンが上がることに導入方法や振る舞いが変わるので注意すること。ここでは、CentOS7.2、Docker1.11。
ちなみにここが何かと詳しい。
https://www.qoosky.net/techs/0a0bd52cd3

※以下、Docker 1.12で同じ事をするとおかしくなります。

導入

  • ここに書いてある通り入れる。https://docs.docker.com/engine/installation/linux/centos/
  • # systemctl start docker
  • # systemctl stop docker
  • # cp /usr/lib/systemd/system/docker.service /etc/systemd/system/
  • # vi /etc/systemd/system/docker.service
  • # systemctl start docker
    「ExecStart=」前後を書き換える。これで。「/etc/sysconfig/docker云々」ファイルが使えるようになる。
    EnvironmentFile=-/etc/sysconfig/docker
    EnvironmentFile=-/etc/sysconfig/docker-storage
    EnvironmentFile=-/etc/sysconfig/docker-network
    ExecStart=/usr/bin/docker daemon -H fd:// $OPTIONS \
    $DOCKER_STORAGE_OPTIONS \
    $DOCKER_NETWORK_OPTIONS \
    $BLOCK_REGISTRY \
    $INSECURE_REGISTRY

shipyardも入れる

  • ここに書いて有るとおり入れる。https://github.com/shipyard/shipyard
  • 基本的にこれだけで導入できる。
    # curl -s https://shipyard-project.com/deploy | bash -s

imageのダウンロード

  • docker hub(https://hub.docker.com/)でよさげなのを探す
  • # docker pull owncloud:9.0.1
    イメージ名は「名前:タグ」で最新でいいならタグはlatestでもいい。使用可能なタグはDocker Hubに書いてあります。
  • # docker images | grep owncloud
    owncloud 9.0.1 *** 2 weeks ago 698.2 MB

コンテナの操作

  • docker run -d -p 10080:80 –name hoge -v /path/to:/var/www/html イメージ名
    –nameでコンテナ名を指定する。無くても大丈夫だけど、有った方がわかりやすい。
    「-p ホスト側:コンテナ側」でNAT。この例だと、ホスト側の10080ポートへアクセスすると、コンテナ側の80へフォワードしてくれる。

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

  

  

  

Time limit is exhausted. Please reload CAPTCHA.