最初はrootでログインできる。パスワードはメールに記載されてる。
ユーザー初期設定
まずはともあれrootのパスワード変更
passwd
新しいユーザーを作成
sudo adduser username
途中で色々聞いてくるけど特に設定する必要なければ空白でEnter
追加したユーザーに管理者権限を与える
sudo vi /etc/group
21行目辺りのsudoに追記(2個目以降は,で区切る)以下のようになるはず
sudo:x:27:username
unable to resolve host対策
これでsudoできるが、実行しようとすると、「unable to resolve host *」というエラーが出る。が、sudoコマンド自体は正常に実行される。けどこれ逐一出るとよろしくないので対策しておく。
ホスト名を調べる
hostname
そのホスト名をホストファイルに追記する
sudo vi /etc/hosts
127.0.0.1 localhost.localdomain localhost ::1 localhost.localdomain localhost 127.0.1.1 dti-vps-srvxx ←この一行を追加。ホスト名はさっき調べたやつ
SSHの設定
まずは共有鍵認証。パーミッションに気をつけること!!!!!!!!
$ chmod 755 /home/thr3a $ mkdir .ssh $ cat /tmp/id_rsa.pub >> .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys $ chmod 700 .ssh
各種設定
sudo vi /etc/ssh/sshd_config
- Port 3843→xxxx
- PasswordAuthentication yes→no
- PermitRootLogin yes→no
再起動忘れずに
sudo service ssh restart
dip.jpでDNS登録をする
以下を実行するとVPS側のIPで登録される
wget -q -O - 'http://ieserver.net/cgi-bin/dip.cgi?username=[サブドメイン]&domain=[ドメイン]&password=[パスワード]&updatehost=1'
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 3843 -j ACCEPT #MySQL許可 iptables -A INPUT -p tcp --dport 3306 -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
が、再起動すると設定は吹っ飛んでしまうので起動時毎回適応されるようにする。
suログイン
su -
現在の設定をバックアップ
iptables-save > /etc/iptables.rules
元のユーザに戻っておく
su - username
以下のファイルを編集(新規作成)
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して反映されてたら成功
Apacheの設定
セキュリティ対策
sudo vi /etc/apache2/conf.d/security
- ServerTokens OS→Prod
- ServerSignature On→Off
今回はバーチャルホストを利用する こんな感じ
sudo vi /etc/apache2/sites-available/hogehoge
<VirtualHost *:80> ServerName hogehoge.com ServerAdmin webmaster@localhost DocumentRoot /var/www/hoge <Directory /var/www/hoge> Options FollowSymLinks AllowOverride All </Directory> LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined SetEnvIf Remote_Addr 192.168.1. no_log SetEnvIf Remote_Addr 127.0.0.1. no_log SetEnvIf User-Agent "^.*mirall.*$" no_log SetEnvIf User-Agent "^.*csyncoC.*$" no_log SetEnvIf Request_URI "\.(jpg|png|gif|css|js|ico)$" no_log CustomLog ${APACHE_LOG_DIR}/access.log combined env=!no_log LogLevel warn ErrorLog ${APACHE_LOG_DIR}/error.log </VirtualHost>
デフォルト設定を無効化してさっき作った設定を有効化する
cd /etc/apache2/sites-available/ sudo a2dissite default sudo a2ensite hogehoge
Apache2再起動
sudo service apache2 restart
PHPのインストール
sudo apt-get install php5 libapache2-mod-php5 php5-curl
各種設定変更
sudo vi /etc/php5/apache2/php.ini
日本語に関する設定
- ;mbstring.language = Japaneseの;を外す
- mbstring.internal_encoding = EUC-jpの;を外してUTF-8へ
- default_charset = "UTF-8"の;を外す
- date.timezone = Asia/Tokyoへ変更
セキュリティに関する設定
- expose_php = OnをOffに変更
処理に関する設定
- upload_max_filesize
- post_max_size
- memory_limit 各種100M?
- max_execution_time 30から180(3分)とかに変更(0でタイムアウト無効)
設定後apache再起動
MySQLのインストール
sudo apt-get install mysql-server php5-mysql
インストールの途中でrootに対するパスワード設定を求められるので入れておく
sudo vi /etc/mysql/my.cnf
[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
設定反映
sudo /etc/init.d/mysql restart
ログインして確認
mysql -u root -p
ちゃんとエンコード設定できているか確認
show variables like 'character_set%';
ここから先は必須じゃないけど入れてる奴
Mecabのインストール
sudo apt-get install build-essential libc6-dev g++
MeCab本体のダウンロード
wget http://mecab.googlecode.com/files/mecab-0.996.tar.gz
wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
MeCab本体のビルド
tar zxfv mecab-0.996.tar.gz cd mecab-0.996 ./configure make make check sudo make install
辞書のビルド
tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz mecab-ipadic-2.7.0-20070801 ./configure --with-charset=utf8 make sudo make install
libmecab.so.2: cannot open shared object file
のエラーが出る場合は以下のコマンドを実行してリトライ
sudo ldconfig
sudo apt-get install php-pear pear channel-discover pecl.opendogs.org pear remote-list -c opendogs sudo pear install opendogs/mecab-beta
インストール途中で以下のように入力を尋ねられたらイアkのように設定
specify pathname to mecab-config [no] : /usr/local/bin/mecab-config
最後に
sudo vi /etc/php5/conf.d/mecab.ini
以下を追加(新規作成)
extension=mecab.so
Squidのインストール
sudo apt-get install squid
設定変更
sudo vi /etc/squid3/squid.conf
ポート番号変更 1138行目 http_port xxxx (デフォルト3128) 外部からのアクセスを有効化 815行目辺に追記 acl all src all http_access allow all アクセス元のIPを表示しない 5555行目 forwarded_for on → off Proxyの存在を知らせない 3422行目辺に追記 request_header_access X-Forwarded-For deny all request_header_access Via deny all request_header_access Cache-Control deny all キャッシュサイズを指定 2083行目 cache_mem 32 MB
再起動
sudo service squid3 restart