VPSで必要最低限の初期設定と高速化&負荷対策まとめ(CentOS5系)
2021/07/29
久しぶりにVPSで新しくサーバを構築する機会があった。過去記事を見て設定しようと思ったけど、記事を分散して書いてたのでまとめてメモ。メモリ2GB、CPUコア数2で1日10万PVは耐えられる筈。phpMyAdminは導入せずAdminerで対応。あとサーバ側でのキャッシュ対策も。環境としていつもはCentOS6.x系だったけど今回はCentOS5.5だった。
目次
SSHに接続
IPアドレス、パスはあるはずなのでポートを22で接続。DTIの場合は3843が初期ポートなので注意。
rootのパスワード変更
passwd
を入力すると新しいパスワードを2回聞かれるので入力する。
接続用ユーザーの作成と設定
接続用ユーザーはユーザー名testuser、パスワードtestpassとする。まずはユーザーの作成。
useradd -d /testuser -G wheel testuser
次にパスワードの設定。
passwd testuser
パスワードの入力が2回求められるので入力する。
sudoコマンドの設定
visudo
を入力して「/wheel」で検索すると、
##Allows people in group wheel to run all comma #wheel ALL=(ALL) ALL
みたいな部分があるので#wheelの#を削除する。削除後は「:wq」で保存。
SSHの設定
vi /etc/ssh/sshd_config
で設定ファイルを開き、「#Port 22」を検索。コメントアウトの#を外して、22の数字は適宜変更する。ここでは例として7777に変更する。
次にrootでのログインを拒否したいので「PermitRootLogin」を検索。Yesになっている部分をNoに書き換えて「:wq」で保存。
/etc/rc.d/init.d/sshd restart
で再起動かけて完了。
iptablesの設定
vi /etc/sysconfig/iptables
で設定ファイルを開いて以下を記述。
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7777 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10000 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
7777のところはSSHで設定したポートの番号を入れる。
以下で再起動。
service iptables restart
yumのアップデート(※2015/08/09追記)
yumをアップデートしておく。
yum update
Apacheのインストールと設定
yum -y install httpd
でApacheをインストールする。完了すれば、以下で自動起動設定。
/sbin/chkconfig httpd on
次にApacheの設定をしたいので以下で設定ファイルを開く。
vi /etc/httpd/conf/httpd.conf
以下設定に編集していく。
#ServerTokens OS #↓↓に書き換え ServerTokens Prod #KeepAlive Off #↓↓に書き換え KeepAlive On #ServerName www.example.com:80 #↓↓に書き換え ServerName *:80 #Options Indexes FollowSymLinks #↓↓に書き換え(複数あるかも) Options FollowSymLinks #AllowOverride NONE #↓↓に書き換え(複数あるかも) AllowOverride ALL #ServerSignature On #↓↓に書き換え ServerSignature Off #Timeout 300 #↓↓に書き換え Timeout 10 #MaxKeepAliveRequests 100 #↓↓に書き換え MaxKeepAliveRequests 50 #KeepAliveTimeout 15 #↓↓に書き換え KeepAliveTimeout 8 #<IfModule prefork.c> #StartServers 8 #MinSpareServers 5 #MaxSpareServers 20 #ServerLimit 256 #MaxClients 256 #MaxRequestsPerChild 4000 #</IfModule> #↓↓に書き換え <IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 400 </IfModule> #<IfModule worker.c> #StartServers 2 #MaxClients 150 #MinSpareThreads 25 #MaxSpareThreads 75 #ThreadsPerChild 25 #MaxRequestsPerChild 0 #</IfModule> #↓↓に書き換え <IfModule worker.c> StartServers 5 MaxClients 300 MinSpareThreads 30 MaxSpareThreads 150 ThreadsPerChild 50 MaxRequestsPerChild 50 </IfModule> #以下を追記。/var/www/htmlの部分はドキュメントルートを適宜書き換える。 <Directory "/var/www/html"> ExpiresActive On ExpiresByType image/gif "access plus 30 days" ExpiresByType image/jpeg "access plus 30 days" ExpiresByType image/png "access plus 30 days" ExpiresByType image/icon "access plus 60 days" ExpiresByType image/ico "access plus 60 days" ExpiresByType text/html "access plus 60 minutes" ExpiresByType text/css "access plus 10 days" ExpiresByType text/xml "access plus 60 minutes" ExpiresByType text/javascript "access plus 10 days" ExpiresByType application/javascript "access plus 10 days" ExpiresByType application/x-javascript "access plus 10 days" </Directory>
また、サブドメインを設定したい場合は以下変更も必要。
#↓↓コメントアウト付いている場合は外す NameVirtualHost *:80 #↓↓下記を追記 <VirtualHost *:80> ServerAdmin domain.com DocumentRoot /var/www/html/domain.com ServerName domain.com ErrorLog logs/error_log CustomLog logs/access_log common </VirtualHost>
以下でApacheを再起動させて完了。
service httpd restart
尚、この時点でIPアドレスを参照するとApacheのテストページが表示される。なので、
vi /etc/httpd/conf.d/welcome.conf
の設定ファイルを開いて、
<LocationMatch “^/+$”> Options -Indexes ErrorDocument 403 /error/noindex.html </LocationMatch>
上記の部分を全て#でコメントアウトして保存する。確認したい場合は再度Apacheの再起動が必要。
PHPのインストールと設定
先にepelとremiレポジトリを入れる。
rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
PHPと必要そうなモジュールを入れる。
yum -y install --enablerepo=remi --enablerepo=remi-php55 php php-devel php-mbstring php-mcrypt php-mysql php-gd
PHPの設定を変更する。以下で設定ファイルを開く。
vi /etc/php.ini
以下変更を行う。
#memory_limit = 128M #↓↓に書き換え memory_limit = 32M
尚、もし大きいファイルのアップロードやダウンロードがしたい場合は以下変更も必要。
#upload_max_filesize = 2M #↓↓に書き換え。memory_limit以下且つpost_max_size以下の数値で好きな設定にする。 upload_max_filesize = 8M #post_max_size = 8M #↓↓に書き換え。memory_limit以下の数値で好きな設定にする。 post_max_size = 16M
「memory_limit > post_max_size > upload_max_filesize」にならないといけないので注意。
あとキャッシュ対策としてopcacheを以下で導入。
yum -y install php-opcache --enablerepo=remi-php55,remi
opcacheの状況を視覚的に確認しやすいよう、ocp.phpを導入すると良い。
https://gist.github.com/ck-on/4959032
FTP関連の設定が終わった後、上記ページのソースを適当な名前をつけて保存して、適当なディレクトリにアップする。
MySQLのインストールと設定
yum -y install mysql-server
でMySQLをインストール。
/sbin/chkconfig mysqld on service mysqld restart
自動起動設定と再起動。
mysql_secure_installation
で初期設定。rootのパスワードだけ入れて、後はYesの選択肢でOK。
mysql -u root -p
でMySQLに接続して、
GRANT ALL PRIVILEGES ON *.* TO testuser IDENTIFIED BY 'testpass'; GRANT ALL PRIVILEGES ON *.* TO testuser@localhost IDENTIFIED BY 'testpass';
でMySQL用のユーザーを作成する。下がlocalhostで上がワイルドカード指定。testuserとtestpassは適宜書き換える。
vi /etc/my.cnf
でMySQL用の設定ファイルを開いて全部削除し、以下を記述。
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql character-set-server=utf8 skip-character-set-client-handshake query_cache_limit=1M query_cache_min_res_unit=4k query_cache_size=24M query_cache_type=1 key_buffer = 16M sort_buffer_size = 1M read_buffer_size = 256K # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8
以下でMySQLを再起動して完了。
service mysqld restart
FTPサーバのインストールと設定
yum -y install vsftpd
でFTPサーバをインストールして、
vi /etc/vsftpd/vsftpd.conf
で設定ファイルを開く。
#anonymous_enable=YES #↓↓に書き換え anonymous_enable=NO #ascii_upload_enable=NO #↓↓に書き換え ascii_upload_enable=YES #ascii_download_enable=NO #↓↓に書き換え ascii_download_enable=YES #ls_recurse_enable=NO #↓↓に書き換え ls_recurse_enable=YES #以下を追記 use_localtime=YES local_root=/var/www/html force_dot_files=YES
追記のlocal_rootはドキュメントルートを適宜書き換える。
以下で自動起動と再起動。
/sbin/chkconfig vsftpd on service vsftpd restart
尚、所有権の問題でファイルをアップロードできない場合は、
chown testuser:testuser /var/www/html
で所有権を変更する。
サーバ自体の再起動と確認
reboot
でサーバの再起動をかける。
確認項目としては、
- FTPでファイルのアップロード、ダウンロードが出来るか?
- rootでSSH接続不可になっているか?
- SSH接続時に指定したポート以外ではログイン不可になっているか?
- Adminer.php入れてPHPとMySQL動いているか?
- ocp.phpでopcacheが動いているか?
- Apacheのテストページが表示されていないか?
辺りを見ておく。
関連記事
-
ServersManのVPSにRuby on Railsを導入する方法
Ruby on Railsを導入した際のメモ。Cens OSのバージョンは6.3 ...
-
VPSに無料SSLのLet's Encryptを導入
SSLといえば有料という認識だったが、無料のものも出てきているという話を聞いた。 ...
-
久しぶりにVPS(CentOS6系)でサーバー構築して詰まった点のメモ
DTIのVPSで久しぶりに初期化→再構築する機会があった。その際に詰まった部分の ...
-
VPSでWebARENAのIndigoが安い
サーバの勉強や開発環境の為にVPSをレンタルすることが多い。当ブログのように常時 ...
-
ConoHaのVPSの使用感について
ConoHaのVPSを試しに使ってみたので使用感をメモ。使用したプランはメモリ5 ...