動かざることバグの如し

近づきたいよ 君の理想に

ServersMan@VPS&Ubuntuの初期セットアップ 改 NginxVer

ServersMan@VPS&Ubuntuの初期セットアップ - 動かざることバグの如し

ServersMan@VPS&Ubuntuの初期セットアップ 改 - 動かざることバグの如し

  • 初期ユーザー名:root
  • パスワード:メール等に記載
  • ポート:3843

ユーザー設定

rootのパスワード変更

passwd

新しいユーザー[thr3a]を作成

adduser thr3a
adduser thr3a sudo
adduser thr3a adm

apt-get updateapt-get upgradeしたうえで以下作成したユーザー上で実行

SSHの設定

公開鍵認証方式に設定する

鍵を生成

ssh-keygen -t rsa
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
chmod 700 .ssh/

/etc/ssh/sshd_configにてSSH各種設定

  • Port 3843→xxxx
  • PasswordAuthentication yes→no
  • PermitRootLogin yes→no

再起動

sudo service ssh restart

iptablesの設定

適当に実行ファイルを作成

sudo vi /tmp/ip

iptablesで適応させたいルールを記述

#!/bin/sh
#現在のルールを全削除
iptables -F
iptables -X
#FORWARDは不許可
iptables -P FORWARD DROP
#とりあえず全許可
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
#ローカルホストからは許可
iptables -A INPUT -i lo -j ACCEPT
#確立済みの通信は許可
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#http許可
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#SSH許可
iptables -A INPUT -p tcp --dport 2407 -j ACCEPT
#https許可
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#Node.js
iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
#sinatra
iptables -A INPUT -p tcp --dport 4567 -j ACCEPT
iptables -A INPUT -p tcp --dport 1129 -j ACCEPT
#ping許可
iptables -A INPUT -p icmp -j ACCEPT
#その他全不許可
iptables -P INPUT DROP

権限付加

sudo chmod +x /tmp/ip

実行 これでiptablesの設定が適応される

sudo /tmp/ip

確認

sudo iptables -L

が、再起動すると設定は吹っ飛んでしまうので起動時毎回適応されるようにする。

現在の設定をバックアップ

<<rootで>>
iptables-save > /etc/iptables.rules

以下のファイルを編集(新規作成)

sudo vi /etc/network/if-pre-up.d/iptables_start

以下を記述

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.rules
exit 0
sudo chmod 755 /etc/network/if-pre-up.d/iptables_start

これで再起動してiptables -Lして反映されてたら成功

オレオレ証明書の生成

openssl genrsa 2048 > server.key
openssl req -new -key server.key > server.csr
openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt
cp server.key server.crt /etc/nginx/conf.d/

NginxとPHPのインストール

まずはApacheを殺す

service apache2 stop
update-rc.d -f apache2 remove

レポジトリを追加

sudo apt-get install python-software-properties
sudo apt-add-repository ppa:nginx/development
sudo add-apt-repository ppa:ondrej/php5

インストール

sudo apt-get update
sudo apt-get install nginx php5 php5-fpm php5-curl php5-gd

/etc/nginx/sites-available/defaultを以下に変更

server {
    listen 80 default_server;
    server_name nyaaz.info;
    root /usr/share/nginx/html/www;
    location / {
        #root /usr/share/nginx/html/www;
        index index.html index.htm index.php;
    }
    location ~ \.(php|html|htm)$ {
        #root /usr/share/nginx/html/www;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
}

/etc/php5/fpm/php.iniを以下変更

Nginxの設定

  • cgi.fix_pathinfo=0 に変更

日本語に関する設定

  • ;mbstring.language = Japanese
  • mbstring.internal_encoding = UTF-8
  • default_charset = "UTF-8"
  • date.timezone = Asia/Tokyo

セキュリティに関する設定

  • expose_php = Off

処理に関する設定

  • upload_max_filesize
  • post_max_size
  • memory_limit これら各種100M程度に
  • max_execution_time = 180

セッションデータ保存パス(session_save_path)で使われるディレクトリのパーミッション変更

sudo chown -R www-data:www-data /var/lib/php5

/etc/php5/fpm/pool.d/www.confを以下変更

(127.0.0.1:9000から変更)
listen = /var/run/php5-fpm.sock
(コメントアウト)
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
(拡張子がphp以外でも実行されるように)
security.limit_extensions = .php .html .htm

再起動

sudo service nginx restart
sudo service php5-fpm restart

MySQLのインストール

sudo apt-get install mysql-server php5-mysql

インストールの途中でrootに対するパスワード設定を求められるので入れておく

/etc/mysql/my.cnfを修正して文字コードを全てUTF-8に変更

[client]
(追記)
default-character-set=utf8

[mysqld]
(追記)
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

設定反映

service mysql restart

ログインして確認

mysql -u root -p

ちゃんとエンコード設定できているか確認

show variables like 'character_set%';

以下他にやったことたち

各種インストール

sudo apt-get install build-essential libc6-dev g++ patch bash-completion git 

ServersMan@VPSのおせっかいサービスを抹消

sudo apt-get purge ajaxterm

WinSCPで使えるように

さっき生成したOpenSSH形式の鍵だとWinSCPで使えない

unable to resolve host対策

sudoする度にunable to resolve host *が出てきてウザい

<<root上で>>
echo 127.0.1.1 dti-vps-srv737 >> /etc/hosts

Owncloudのインストール

wget http://download.owncloud.org/community/owncloud-latest.zip
unzip owncloud-latest.zip
sudo chown -R www-data:www-data owncloud

/etc/nginx/sites-available/owncloudを新規作成 参考:Owncloudの公式サイト

server {
        listen 443 ssl;
        server_name cloud.nyaaz.info;
        
        root /usr/share/nginx/html/owncloud;
        index index.php;
        
        ssl_certificate /etc/nginx/conf.d/server.crt;
        ssl_certificate_key /etc/nginx/conf.d/server.key;
        
        client_max_body_size 10G; # set max upload size
        fastcgi_buffers 64 4K;
        
        rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
        rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
        rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
        
        error_page 403 /core/templates/403.php;
        error_page 404 /core/templates/404.php;
        
        location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
        }

        location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README) {
                deny all;
        }

        location / {
                # The following 2 rules are only needed with webfinger
                rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
                rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

                rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
                rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

                rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

                try_files $uri $uri/ index.php;
        }
        
        location ~ \.php(?:$|/) {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_param HTTPS on;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
        }
        
        # Optional: set long EXPIRES header on static assets
        location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                expires 30d;
                # Optional: Don't log access to assets
                access_log off;
        }
}

シンボリックリンクを貼る

sudo ln -s /etc/nginx/sites-available/owncloud  /etc/nginx/sites-enabled/

その他