2016年新建Server流程(轉換Server)備忘筆記

這裡假設使用 Google Compute Engine,建立一台機器後要做的流程

  1. 檢查目前作業系統版本是幾位元,CPU是幾位元
  2. 修改 root 密碼
  3. 建立一個使用者帳號,輸入密碼
  4. 關閉SELinux
  5. 更改主機名稱
  6. 修改系統時區
  7. 導入自己寫的 iptables 腳本,只允許某些 IP 登入 22 埠,並在 /etc/rc.local 中加入開機執行
  8. 修改 sshd 服務,改為可使用帳號密碼登入
  9. 修改 /etc/hosts、/etc/resolv.conf
  10. 重新啟動
  11. 安裝服務 httpd, php, mysqld…等服務
  12. 安裝phpmyadmin,設定只有允許的IP才能使用phpmyadmin
  13. 在name server增加新主機位置,記得設定檔裡Serial的編號也要跟著改
  14. 設定 postfix,若使用 GCE,設定第3方轉寄
  15. 安裝系統監測工具 nmon, vnstat, logwatch…
  16. 確定新主機裡所有客戶網站都沒問題後,就可以修改name server的dns設定了

 

查看作業系統是32還是64位元

file /bin/bash
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

查看作業系統是32還是64位元

getconf LONG_BIT

查看作業系統是32還是64位元

uname -a
Linux google-mercury 2.6.32-573.18.1.el6.x86_64 #1 SMP Tue Feb 9 22:46:17 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

查cpu

cat /proc/cpuinfo

永久關閉 SELinux

vim /etc/sysconfig/selinux
#SELINUX=enforcing
SELINUX=disabled

儲存然後重新啟動系統

更改主機名稱

vim /etc/sysconfig/network

改為

NETWORKING=yes
HOSTNAME=mercury.hsuweni.idv.tw

然後再用 hostname 指定一次主機名稱

hostname mercury.hsuweni.idv.tw

登出再重新登入即可

將時區改為 Taipei

cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime
#列出UTC時區時間
date -u
Wed Mar  9 10:29:06 UTC 2016
#列出目前主機時區時間(Taipei為UTC+8)
date
Wed Mar  9 18:29:09 CST 2016
#修改 ZONE 區域
vim /etc/sysconfig/clock
//ZONE="UTC"
ZONE="Asia/Taipei"
#查看硬體使用的時間
hwclock --localtime
#查看硬體使用的時間
hwclock -r
#將時間寫入硬體
hwclock -w

在舊主機部份修改 iptables 讓新主機可以透過 ssh 連線
在新主機的部份下達 scp 指令,把自己寫的腳本拷貝過來

scp -r root@舊主機ip:/scripts ./

修改 /etc/rc.local (iptables.sh為自己寫的規則,執行前先注意,不要封鎖到自己了)

ntpdate -u time.stdtime.gov.tw
sh /scripts/iptables.sh

修改排程,加入以下(block_http為鳥哥撰寫的http防砍站腳本,固定時間分析,固定時間清除)

  0  1  *  *  * root (/usr/sbin/ntpdate -s time.stdtime.gov.tw; /usr/sbin/hwclock -w) > /dev/null 2>&1
 */2 *  *  *  * root /scripts/block_http
  0  1  *  *  * root /sbin/iptables -F blockhttp

安裝 EPEL Repository
RHEL / CentOS 7.x (x86_64)

rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

RHEL / CentOS 6.x (x86_64)

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

RHEL / CentOS 6.x (i386)

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

注意! 要先永久關閉 SELinux 重新啟動系統,安裝 EPEL
安裝 denyhosts

yum -y install denyhosts
service denyhosts start
chkconfig denyhosts on

安裝 fail2ban

yum -y install fail2ban

修改 設定檔

vim /etc/fail2ban/jail.conf
bantime  = 3600
findtime  = 600
maxretry = 3
service fail2ban start
chkconfig fail2ban on

安裝 vsftpd

yum -y install vsftpd

備份原設定檔

cp vsftpd.conf vsftpd.conf.back

設定 vsftpd

vim vsftpd.conf
anonymous_enable=NO
chroot_local_user=YES
listen_port=21
pasv_enable=NO

安裝好即啟動了,所以使用 restart

service vsftpd restart
chkconfig vsftpd on

安裝簡易的流量監測

yum -y install vnstat

檢查設定檔

vim vnstat.conf

注意 interface 的裝置是否正確

Interface "eth0"

啟動,但會提示目前沒資料所以沒有報表

service vnstat start
Starting vnstatd: Zero database found, adding available interfaces...
"eth0" added, -1 Mbit bandwidth limit.
-> 1 interface added. Limits can be modified using the configuration file.[  OK  ]

設定開機啟動

chkconfig vnstat on

 

關於在 google compute engine 中使用 postfix 的方式

google compute engine 不開放寄信功能,需透過第3方服務來寄信,可使用推薦的 SendGrid
先申請,再依下個連結的說明操作
https://cloud.google.com/compute/docs/tutorials/sending-mail/using-sendgrid#postfixsendgrid

 

安裝 apache, php, mysql等服務

若忘記 mysql root 密碼

安裝好主機所需要的服務後(php,mysql…),

yum install httpd httpd-devel php php-devel mysql mysql-server php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring mcrypt

修改 /etc/httpd/conf/httpd.conf

KeepAlive On
KeepAliveTimeout 10
ServerName your.hostname.tw:80
<Directory "/var/www/html">
Options FollowSymLinks
</Directory>
UserDir public_html
DirectoryIndex index.php index.html index.htm index.html.var
#AddDefaultCharset UTF-8
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
NameVirtualHost *:80

由於指定了403、404頁面,所以要自己在 /var/www/error/ 建立403、404頁面

由於有設定虛擬主機參數,所以啟動之前先把舊主機裡的 /etc/httpd/conf.d/* 裡的各個網站設定檔拷貝到新主機,不然啟動會出錯

啟動 httpd 和 mysqld 服務,並設定開機執行

service httpd start
service mysqld start
chkconfig httpd on
chkconfig mysqld on

設定新主機的mysql root密碼

mysqladmin -u root password 'password'

在舊Server把所有資料倒出來,使用 mysqldump指令

mysqldump -u root -p --all-database > mercury.sql
Enter password:
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.

出現錯誤訊息:– Warning: Skipping the data of table mysql.event. Specify the –events option explicitly.
加入參數 –events –ignore-table=mysql.event

mysqldump -u root -p --all-database --events --ignore-table=mysql.event > mercury.sql
Enter password:
ll
total 37416
-rw-r--r--  1 root    root    29708378 Feb 22 09:52 mercury.sql

取得 Phpmyadmin,要注意有版本相容的問題,phpmyadmin版本和php版本要能搭配

wget https://files.phpmyadmin.net/phpMyAdmin/4.0.10.12/phpMyAdmin-4.0.10.12-all-languages.tar.gz
tar -zxv -f phpMyAdmin-4.0.10.12-all-languages.tar.gz -C ./
mv phpMyAdmin-4.0.10.12-all-languages phpmyadmin
cp config.sample.inc.php config.inc.php
vim config.inc.php
yum -y install php-mbstring
yum -y install mcrypt
service mysqld restart
service httpd restart

注意!!! 要在新主機中的 Phpmyadmin 中重新載入權限,讓資料庫裡的使用者重新載入權限,這樣才能正常讀取!

建立檔案 /etc/httpd/conf.d/phpmyadmin.conf,只接受固定的 IP 使用 phpmyadmin 網站

<Directory "/var/www/html/phpmyadmin">
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 111.222.333.444
    Allow from 111.222.333.445
</Directory>

建立 .conf 檔後,要重啟 http 服務

service httpd restart

當非允許的 IP 用戶嘗試登入時會出現沒有權限頁面

Forbidden
You don't have permission to access /phpmyadmin on this server.

使用 Rsync 將 Mysql備份檔同步到新主機

rsync -av mercury.sql hsuweni@111.222.333.444:~
hsuweni@111.222.333.444's password:
sending incremental file list
mercury.sql
sent 29712082 bytes  received 31 bytes  1800734.12 bytes/sec
total size is 29708378  speedup is 1.00

在新主機還原所有資料庫

mysql -u root -p < mercury.sql

使用 scp 將檔案拷貝到新主機

scp mercury.tar.gz hsuweni@111.222.333.444:~
hsuweni@111.222.333.444's password:
mercury.tar.gz             7%   17MB   3.2MB/s   01:03 ETA

使用 tar 壓縮

tar -zcv -f mercury.tar.gz andy/ hsuweni/ nobuyuki/

解壓縮前先依照舊主機的用戶名稱,在新主機建立用戶,並設定密碼

#建立用戶 abc
useradd abc
#設定用戶 abc 的密碼
passwd abc

解壓縮到目前所在的目錄

tar -zxv -f mercury.tar.gz -C ./

如果一開始沒有關閉 SELINUX,可能會因為開啟 SELINUX 導致啟動/重啟 httpd 服務時出錯,以下為暫時關閉 SELINUX 的方法

service httpd start
Starting httpd: httpd: Syntax error on line 221 of /etc/httpd/conf/httpd.conf: Could not open configuration file /etc/httpd/conf.d/111.222.333.444.conf: Permission denied   [FAILED]
getenforce
#顯示Enforcing
setenforce 0

getenforce
#顯示Permissive

#再啟動一次
service httpd start
Starting httpd:     [  OK  ]

安裝其它工具 ImageMagick

yum -y install ImageMagick

安裝 nmon 主機監測工具
將 nmon 從舊主機那裡拷貝一份過來

scp -r root@舊主機IP:/tools/nmon ./

建立 nmon 的軟連結(建立軟連結請選擇適合的檔案)

ln -s nmon/nmon_x86_64_rhel5 nmont