====== CentOS+基本服務安裝程序 ======
===== 安裝 CentOS 作業系統 =====
* 適用 5.x / 6.x / 7.x x86_64 版本
啟用 SELinux : **警告** 並非預設值, 所以常常會出現這部份沒設正確的狀況!!!
==== 確認 CentOS 安裝完成 ====
- 建立備援 root 帳號(Exp. misadm)
- 建立登入帳號 (Exp. jonathan)
- 網路可否正常運作 (ssh 到外部主機, 然後再 ssh 回來)
==== 更新 CentOS 版本作業 ====
- 使用 root 身分登入主機
- 安裝 yum 更新套件
- 使用 yum 更新到最新版本
- 重新啟動電腦讓新版的 kernel 生效
su - root
yum update; sync; sync; sync; reboot
==== 安裝 EPEL 程序 ====
**CentOS7**
* 64 bits 環境 : rpm -Uvh http://mirror01.idc.hinet.net/EPEL/7/x86_64/e/epel-release-7-2.noarch.rpm
**CentOS6**
* 64 bits 環境 : rpm -Uvh http://mirror01.idc.hinet.net/EPEL/6/x86_64/epel-release-6-8.noarch.rpm
* 32 bits 環境 : rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm
**CentOS5**
* 64 bits 環境 : rpm -Uvh http://mirror01.idc.hinet.net/EPEL/5/x86_64/epel-release-5-4.noarch.rpm
* 32 bits 環境 : rpm -Uvh http://mirror01.idc.hinet.net/EPEL/5/i386/epel-release-5-4.noarch.rpm
==== 安裝其餘系統管理套件 ====
yum install -y iptraf sysstat net-snmp mrtg
===== 設定 snmp agent =====
cd /etc/snmp
vi snmpd.conf
com2sec notConfigUser default public
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
view systemview included .1.3.6.1.2.1.2
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
view systemview included .1.3.6.1.2.1.2.2.1
access notConfigGroup "" any noauth exact systemview none none
syslocation Taipei
syscontact Root
* 啟動 snmpd 並設定開機可自動啟動
service snmpd start
chkconfig snmpd on
chkconfig --list | grep snmpd
[root@ed2 snmp]# chkconfig --list | grep snmpd
snmpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
===== 安裝與設定 ntpd =====
yum -y install ntp
* 如果要自己編輯 ntp server
cd /etc
vi ntp.conf
:
:
# --- OUR TIMESERVERS -----
server 210.59.157.30
server tick.stdtime.gov.tw prefer
server mizbeaver.udel.edu prefer
server ntps1-0.cs.tu-berlin.de
server ntps1.pads.ufrj.br
server time1.one4vision.de
server watch.stdtime.gov.tw
server time.stdtime.gov.tw
server tock.stdtime.gov.tw
server clock.stdtime.gov.tw
server 192.43.244.18 # time.nist.gov (ACTS)
server 192.5.41.40 # tick.usno.navy.mil
:
:
* 第一次網路校時 ntpdate -u tick.stdtime.gov.tw
[root@tryboxap1 etc]# ntpdate -u tick.stdtime.gov.tw
23 Mar 17:22:58 ntpdate[3552]: adjust time server 220.130.158.51 offset -0.225961 sec
[root@tryboxap1 etc]# date
Thu Mar 23 17:23:33 CST 2006
* 啟動 ntpd
service ntpd start
chkconfig ntpd on
chkconfig --list | grep ntpd
ntpq -p
[root@tryboxap1 etc]# chkconfig --list | grep ntpd
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@tryboxap1 etc]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
210.59.157.30 .INIT. 16 u - 64 0 0.000 0.000 4000.00
220-130-158-51. 220.130.158.50 2 u 30 64 1 16.261 -104.84 0.001
mizbeaver.udel. .GPS. 1 u 29 64 1 228.213 -109.85 0.001
ntps1-0.cs.tu-b .PPS. 1 u 32 64 1 371.710 -142.98 0.001
ns2.pads.ufrj.b .GPS. 1 u 31 64 1 471.069 -166.67 0.001
212-82-32-15.ip .PPS. 1 u 31 64 1 456.025 -158.71 0.001
210.241.22.10 .INIT. 16 u - 64 0 0.000 0.000 4000.00
220-130-158-54. 220.130.158.50 2 u 30 64 1 159.259 -168.66 0.001
220-130-158-52. 220.130.158.50 2 u 29 64 1 161.984 -169.12 0.001
220-130-158-71. 220.130.158.50 2 u 28 64 1 146.384 -164.47 0.001
220-130-158-72. 220.130.158.50 2 u 27 64 1 226.089 -205.19 0.001
time.nist.gov .ACTS. 1 u 25 64 1 577.621 -231.61 0.001
ntp0.usno.navy. .USNO. 1 u 24 64 1 520.448 -175.86 0.001
LOCAL(0) LOCAL(0) 10 l 24 64 1 0.000 0.000 0.001
===== 安裝與設定 apache =====
yum -y install httpd mod_ssl
* 依據實際狀況設定 httpd.conf 參數檔
cd /etc/httpd/conf
vi httpd.conf
:
KeepAlive Off
:
ServerAdmin tryweb@ichiayi.com
:
ServerName tryboxap.ichiayi.com:80
:
DocumentRoot "/var/www/html"
:
Alias /icons/ "/var/www/icons/"
# Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
:
# End of proxy directives.
DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE js css
### Section 3: Virtual Hosts
:
* 啟動 httpdservice httpd start
* 設定每次開機自動啟動 httpd
chkconfig httpd on
chkconfig --list | grep httpd
===== 安裝與設定 MySQL =====
yum -y install mysql-server mysql-devel
* 第一次啟動 MySQL 並設定自動啟動
service mysqld start
chkconfig mysqld on
chkconfig --list | grep mysqld
* 設定與確認 MySQL 內的 root 密碼
/usr/bin/mysqladmin -u root password 'newpassword'
mysql -u root -p
* 如果要建立一個資料庫 testdb 與帳號 testuser 可以在本機連上管理這個資料庫的權限可以參考以下與法
CREATE DATABASE testdb;
CREATE USER 'testuser'@'localhost' IDENTIFIED BY '**password**';
GRANT ALL ON testdb.* TO 'testuser'@'localhost';
FLUSH PRIVILEGES;
* 如果要關閉 MySQL 對連線來源的 IP 反查, 可在 /etc/my.cnf 內 [mysqld] 增加 skip-name-resolve
[mysqld]
:
# Skip reverse DNS lookup of clients
skip-name-resolve
:
* 然後重新啟動 mysqld 即可
* 參考資料 : http://developers.sugarcrm.com/wordpress/2012/01/10/howto-turn-off-mysql-reverse-dns-lookup-to-speed-up-response-times/
===== 安裝與設定 PostgreSQL =====
yum install postgresql-server postgresql-devel
* 第一次建立 PostgreSQL 資料目錄service postgresql initdb
* 檢查 PostgreSQL 參數檔是否已產生
cd /var/lib/pgsql/data
ls -lt
* 看結果內容
[root@tryboxap07 data]# ls -lt
total 116
drwx------ 5 postgres postgres 4096 Jan 25 03:29 base
drwx------ 2 postgres postgres 4096 Jan 25 03:29 global
drwx------ 2 postgres postgres 4096 Jan 25 03:29 pg_log
drwx------ 2 postgres postgres 4096 Jan 25 03:29 pg_clog
-rw------- 1 postgres postgres 3200 Jan 25 03:29 pg_hba.conf
-rw------- 1 postgres postgres 1460 Jan 25 03:29 pg_ident.conf
drwx------ 2 postgres postgres 4096 Jan 25 03:29 pg_subtrans
drwx------ 3 postgres postgres 4096 Jan 25 03:29 pg_xlog
-rw------- 1 postgres postgres 15201 Jan 25 03:29 postgresql.conf
drwx------ 4 postgres postgres 4096 Jan 25 03:29 pg_multixact
drwx------ 2 postgres postgres 4096 Jan 25 03:29 pg_tblspc
drwx------ 2 postgres postgres 4096 Jan 25 03:29 pg_twophase
-rw------- 1 postgres postgres 4 Jan 25 03:29 PG_VERSION
* 設定 PostgreSQL 參數檔 postgresql.conf 內容 vi postgresql.conf
:
listen_addresses = '*'
port = 5432
max_connections = 750
:
shared_buffers = 24MB
:
stats_start_collector = on
stats_command_string = on
stats_block_level = on
stats_row_level = on
:
autovacuum = on
:
* 依據實際需要來修改 postgresql 登入權限檔 pg_hba.conf vi pg_hba.conf
# IPv4 local connections:
local all all ident sameuser
host all all 127.0.0.1/32 md5
* 啟動 PostgreSQL service postgresql start
* **如果無法成功啟動, 可能需要調整 Kernel 的參數** vi /etc/sysctl.conf
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.shmall = 2097152
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
* /sbin/sysctl -p
* 設定每次開機自動啟動 postgresql
su - root
chkconfig postgresql on
chkconfig --list | grep postgresql
[root@trybox-03 data]# chkconfig --list | grep postgresql
postgresql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@trybox-03 data]#
===== 安裝 php =====
* 安裝 php 與 php-mysql / php-pgsql 模組 yum install -y php php-mbstring php-mysql php-pgsql
* 原則上 php 已經隨 apache 安裝上去, 所以只要驗證是否沒問題
cd /var/www/html/
vi php.php
service httpd restart
* 然後輸入網址, 應該可以看到 php 資訊網頁http://your-server-url/php.php
===== 安裝 perl Module =====
* 透過 EPEL 安裝
yum install -y perl-Text-Iconv perl-Mail-Sendmail perl-DBI perl-DBD-Pg perl-DBD-mysql perl-Digest-Perl-MD5
===== 安裝 phpMyAdmin =====
* 至 https://www.phpmyadmin.net/downloads/ 找 phpMyAdmin 最新版
cd /var/www/html
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.tar.gz
tar -zxvf phpMyAdmin-*.tar.gz
rm -rf phpMyAdmin-*.tar.gz
mv phpMyAdmin-*-all-languages phpMyAdmin
* 設定 config.inc.php 參數檔
cd /var/www/html/phpMyAdmin
mkdir tmp
chown apache:apache tmp
cp config.sample.inc.php config.inc.php
vi config.inc.php
:
$cfg['blowfish_secret'] = '1234567890qwertyuiopasdfghjklzxc';
:
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
:
:
* 這樣設定之後,連上 phpMyAdmin 網頁就會談出輸入帳號密碼的視窗,輸入 root 與建立 MySQL 或 MariaDB 的密碼就可以登入
* 參考網址 - http://benjr.tw/97998
===== 安裝 phpPgAdmin =====
* 至 www.sf.net 找 phpPgAdmin
* 網址 : http://sourceforge.net/projects/phppgadmin
cd /var/www/html
wget http://nchc.dl.sourceforge.net/sourceforge/phppgadmin/phpPgAdmin-3.5.6.tar.gz
tar -zxvf phpPgAdmin-3.5.6.tar.gz
rm -rf phpPgAdmin-3.5.6.tar.gz
* 設定參數檔 conf/config.inc.php
cd phpPgAdmin/conf
cp config.inc.php-dist config.inc.php
vi config.inc.php
:
// Hostname or IP address for server. Use '' for UNIX domain socket.
$conf['servers'][0]['desc'] = 'PostgreSQL';
$conf['servers'][0]['host'] = 'localhost';
:
* 驗證 phpPgAdmin 安裝是否正確
* 網址 : http://your-server-url/phpPgAdmin/
* 可以使用之前建立的帳號密碼登入
* 建立 Reports 資料庫
su - postgres
export LANG=C
cd /var/www/html/phpPgAdmin/sql
psql template1 < reports-pgsql.sql
-bash-3.00$ psql template1 < reports-pgsql.sql
CREATE DATABASE
You are now connected to database "phppgadmin".
NOTICE: CREATE TABLE will create implicit sequence "ppa_reports_report_id_seq" for "serial" column "ppa_reports.report_id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "ppa_reports_pkey" for table "ppa_reports"
CREATE TABLE
GRANT
GRANT
-bash-3.00$
===== 安裝 SubVersion(svn) =====
==== 安裝 SubVersion rpm ====
壓力測試發現在同時 svnadmin export 與 svn update 時會出現 db 異常問題, 導致無法運作, 必須執行 svnadmin recover svndir 修復, 以下就是針對 trybox 所修復的範例: \\
\\
cd /var/www/svn
svnadmin recover trybox
chown -R apache:apache trybox
yum install -y subversion mod_dav_svn
==== 編輯設定檔 subversion.conf ====
cd /etc/httpd/conf.d/
vi subversion.conf
# Needed to do Subversion Apache server.
LoadModule dav_svn_module modules/mod_dav_svn.so
# Only needed if you decide to do "per-directory" access control.
#LoadModule authz_svn_module modules/mod_authz_svn.so
:
:
:
DAV svn
SVNParentPath /var/www/svn
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
# Allow from ::1
# Allow from .ichiayi.com
AuthzSVNAccessFile /var/www/control
# Satisfy Any
# Limit write permission to list of valid users.
#
# Require SSL connection for password protection.
SSLRequireSSL
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /var/www/passwdfile
Require valid-user
#
* 如果 svn 要改用 http:// 沒有加密傳送方式, 就在 SSLRequireSSL 前加上 # 拿掉 SSLRequireSSL 功能
* 如果不需要設定特定使用者權限,就在 AuthzSVNAccessFile 前加上 # 拿掉指定權限功能, 也不用編輯 /var/www/control
* 如果拿掉 Satisfy Any 前 #, 以下的限制 SSLRequireSSL / Deny from / Allow from 都會失效
==== 依實際需要建立 svn 目錄與專案 ====
mkdir /var/www/svn
cd /var/www/svn
svnadmin create trybox
chown -R apache:apache trybox
==== 設定存取 subversion 用戶帳號密碼 ====
htpasswd -c /var/www/passwdfile jonathan
htpasswd /var/www/passwdfile trybox
[root@tryboxap1 svn]# htpasswd -c /var/www/passwdfile jonathan
New password:
Re-type new password:
Adding password for user jonathan
[root@tryboxap1 svn]# htpasswd /var/www/passwdfile trybox
New password:
Re-type new password:
Adding password for user trybox
==== 設定每個使用者在每個 repos 內的權限 ====
vi /var/www/control
[trybox:/]
jonathan = rw
trybox = r
==== 重起 apache 讓 subversion 生效 ====
service httpd restart
===== 安裝 cronolog 讓 log 檔可自動依日期分檔 =====
yum install -y cronolog
* 透過下載原始碼安裝
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
tar -zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make
make install
cd ..
rm -rf cronolog-1.6.2*
===== 安裝 RRDTool =====
* RRD Tools 官方網站 : http://oss.oetiker.ch/rrdtool/
* RRD Tools 官方下載網站 : http://dag.wieers.com/rpm/packages/rrdtool/
yum install rrdtool
===== 設定 iptables =====
* 依實際需要設定, 預設只有開放 tcp port 22
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 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -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 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
service iptables restart
===== 設定 yum-cron 自動升級 =====
* 適用 : CentOS7
* 參考 :
* https://www.opencli.com/linux/rhel-centos-7-auto-update-packages
* https://linux.cn/article-9455-1.html
* ++看設定語法|
yum install yum-cron -y
systemctl start yum-cron
systemctl enable yum-cron
預設會更新所有安裝套件, 更新紀錄會寫入 /var/log/cron , 如果有特殊需求, 可以更改設定檔 /etc/yum/yum-cron.conf
vi /etc/yum/yum-cron.conf
:
apply_updates = yes
:
systemctl restart yum-cron
++
{{tag>linux centos 安裝 snmp ntpd apache httpd mysql postgresql php perl phpmyadmin phppgadmin svn subversion rrdtool cronolog iptables 置頂}}