世界を旅して暮らしたい放浪エンジニアブログ

【作業メモ】Sakura VPSの CentOS7.x をLaravelのWebサーバーとして利用する

今回は、Sakura VPSのCentOS7環境にnginx, php, php-fpmなどのミドルウェアをインストールした際の作業ログを残しておきたいと思います。

[ 目次 ]

はじめに

こんにちは、香港に住んでいるWEBデベロッパーのなかむ(@nakanakamu0828)です。

久しぶりにCentOS7で商用環境の構築を行いました。Dockerなどモダンなコンテナ環境を利用するわけでもなく、ミドルウェアをインストールし基本となるサーバーの設定を行っています。
そんな作業ログを残しておきたいと思います。

環境はSakuraのVPSで、CentOS7にLaravel用のWebサーバーを構築していきます。
DBサーバーは別途MySQLサーバーが用意されているので、今回の構築作業からは除外します。

環境 バージョン
サービス Sakura VPS
OS CentOS Linux release 7.6.1810 (Core)
カーネル 3.10.0-327.36.3.el7.x86_64
nginx 1.15.8
PHP 7.3.1
php-fpm v3.3.1

rootユーザーでログイン

初期はrootユーザーしか用意されていません。

$ ssh root@xxx.xxx.xxx.xxx

passwordはSakuraの管理画面からOSインストール時に設定したものを使います。

yumを更新

# yum update -y

ホスト名を設定

# vi /etc/sysconfig/network
HOSTNAME=[host name]

# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
↓
127.0.0.1 [host name] localhost localhost.localdomain localhost4 localhost4.localdomain4

Bashプロンプト設定

プロンプトの設定をカスタマイズすることでどのサーバーにアクセスしているかわかりやすくしています。

# vi /etc/profile.d/prompt.sh

export NICKNAME=[name]

set_ps1() {
    local _PS1
    if [ $UID = 0 ] ; then
        #root
        _PS1="\[\033[1;31m\][\u@\h \W]#\[\033[0m\] "
    else
        _PS1="[\e[1;32m\u\e[00m@\e[1;32m\h\e[00m \e[1;33m\w\e[00m] (\e[1;34m$1\e[00m)\n$ "
    fi
    export PS1=$_PS1
}
set_ps1 "[name]"

MariaDB インストール

DBサーバーは別になるためクライアントのみインストールします。
接続のテストや直接SQLコマンドを実行できるようにする為です。

# vi /etc/yum.repos.d/mariadb.repo
# MariaDB 10.1 CentOS repository list - created 2016-01-06 10:34 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=1

# yum -y install MariaDB-devel MariaDB-client

Git インストール

# yum -y install git

ユーザー作成

今回は一般ユーザーとしてdevelopユーザーを作ることを想定しています。

# useradd develop
# su - develop

$ ssh-keygen -t rsa -b 2048
$ mv .ssh/id_rsa.pub .ssh/authorized_keys
$ # rootに戻る 
$ exit

ローカルPCからdevelopユーザーにアクセスするためには、ローカルPCの公開鍵をdevelopユーザーの~/.ssh/authorized_keysに追加します。

$ echo "keykeykey" >> ~/.ssh/authorized_keys

sudoの設定

developユーザーで、root権限の作業がしたくなる場合もあるのでsudoを設定しておきます。

# visudo

%develop ALL=(ALL) NOPASSWD: ALL

今回は全ての権限をsudoで与えてしまいましたが、セキュリティを考慮して適した設定を行なってください。

SSHポート変更

SSHのポートを変更して、22ポートに接続してくる輩を防ぎましょう。

# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
# vi /etc/ssh/sshd_config
# # 今回は2222ポートに変更
Port 22
↓
Port 2222

# systemctl restart sshd

SSHのrootログイン拒否

外部からrootユーザーに直接ログインできないようにします

# vi /etc/ssh/sshd_config
# # 79行目:パスワード認証不可に変更
PasswordAuthentication no

# # 83行目:no になっていることを確認
ChallengeResponseAuthentication no

# # 110行目:yes になっていることを確認
UsePAM yes

# systemctl restart sshd

ファイアーウォール設定

以下ポートへの外部アクセスを許可します。

Protocol Port
ssh 2222
http 80
https 443
# firewall-cmd --list-all
# sshはポートを変更したので修正
# firewall-cmd --permanent --remove-service=ssh
# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-2222.xml
# vi /etc/firewalld/services/ssh-2222.xml
<port protocol="tcp" port="22"/>
↓
<port protocol="tcp" port="2222"/>

# firewall-cmd --permanent --add-service=ssh-2222
# firewall-cmd --reload

# # http, httpsへのアクセスを追加
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --reload

nginx インストール

# vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

# yum -y --enablerepo=nginx install nginx

php73 インストール

# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum remove php*
# yum install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-mysqlnd php-fpm

# vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen.mode = 0666

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock;

composer インストール

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"


$ su -
# # rootユーザーでmvする
# mv composer.phar /usr/local/bin/composer
# exit

$ # composerコマンドが利用できるようになります
$ composer

Nginxでbasic認証

# htpasswd -c /etc/nginx/.htpasswd username
New password: password
Re-type new password: password
Adding password for user username

nginxの設定ファイルに以下を追加

server {
    ・・・・
    location / {
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

最後に

今回はLaravelのWebサーバーの基本となるミドルウェアを中心に作業をまとめました。
実際は、

  • Let's Encryptのインストール
  • nginxのhttp2での接続設定(SSL対応)
  • Laravelのセットアップ
  • ウィルス対策ソフトのインストール

なども行っているのですが、別の記事として今後まとめていければと思います!

追記(2019/1/29)

いつもウィルス対策ソフトは、ClamAV を利用しています。
CentOS7へclamavインストール(epelリポジトリ使用) の記事を参考にさせてもらっています。
皆さんも参考にしてみてください🙇🏻

前のページ

次のページ

Profile

なかむ🇭🇰Webデベロッパー

なかむ🇭🇰Webデベロッパー

香港在住4年目になるWEBエンジニアのなかむです。 現在は、LaravelやRailsを利用したWEB開発を中心にエンジニアをしています。 顧客は全て日本の企業になります。リモート開発にて各企業様の支援を行なっております

プロフィール詳細はこちら

Latest Posts