部落格原文地址:CentOS 7 個性化配置指南 – Wind Spirit
0x00 前言
該教程主要安裝瞭如下軟體包
iptables
MySQL
PHP
PHP 相關模組
Nginx
主要配置實現了以下功能
修改軟體源
修改 PS1,更改配色
SSH 每隔 30 秒傳送一個心跳包
修改 iptables 規則,開放埠
修改 MySQL 密碼
修改 PHP-FPM 的工作模式
使 Nginx 支援解析 .php 檔案
大部分軟體的配置檔案被修改後需要重啟程式才能應用更改
為了配置方便我個人習慣先切換到 root 許可權,使用如下命令並輸入密碼
注意:這是一種錯誤的,不良的習慣,在 root 許可權下任何行為都不會受到系統的限制,因此導致的任何後果需要自己承擔
sudo -s
注意:這是一種錯誤的,不良的習慣,在 root 許可權下任何行為都不會受到系統的限制,因此導致的任何後果需要自己承擔
注意:在 linux 中被要求輸入的密碼都是不可見的
正確的做法應該是以使用者許可權執行如下命令
sudo 命令
注意:這是一種錯誤的,不良的習慣,使用 -y 引數執行的命令會直接跳過使用者確認的流程,因此導致的任何後果需要自己承擔
本文中大部分命令使用了 -y 這一引數,該引數的含義是在執行命令的過程中預設確認所有需要使用者手動確認的提示,例如安裝或解除安裝軟體包時明確告知使用者該動作涉及哪些依賴包
注意:這是一種錯誤的,不良的習慣,使用 -y 引數執行的命令會直接跳過使用者確認的流程,因此導致的任何後果需要自己承擔
正確的做法是執行命令後等待系統提示確認,再根據提示手動輸入類似 y/yes/n/no 的關鍵詞,然後按下 回車 執行
0x01 SSH
使 SSH 服務每隔30秒傳送一個心跳包,用來保持 SSH 連線
echo "ClientAliveInterval 30" >> /etc/ssh/sshd_config
重啟 sshd
systemctl restart sshd
0x02 修改 PS1 配色
自帶的配色實在太難看了
將 PS1 也就是控制配色的變數寫入 ~/.bashrc
bash 在每次啟動時都會載入 .bashrc 檔案的內容
echo "PS1=`${debian_chroot:+($debian_chroot)}[ 33[01;32m]u@h[ 33[00m]:[ 33[01;34m]w[ 33[00m]\$ `" >> ~/.bashrc
應用更改後的 ~/.bashrc
source ~/.bashrc
0x03 修改源
由於大家都懂的原因,CentOS 的預設源訪問速度賊慢或者根本無法訪問,所以替換成國內服務商的源,這裡用的是阿里雲的
用 wget 下載源列表到 /etc/yum.repos.d/ 並重新命名為 CentOS-AliCloud.repo
wget -O /etc/yum.repos.d/CentOS-AliCloud.repo http://mirrors.aliyun.com/repo/Centos-7.repo
如果這一步發生錯誤,可能是因為沒有安裝 wget 使用如下命令安裝
yum install -y wget
安裝 epel 源
EPEL 全稱 Extra Packages for Enterprise Linux,是由 Fedora 社群為 RHEL 系 Linux 打造的軟體源,比官方釋出的源更新,質量更高
yum 全稱 Yellow dog Updater, Modified,是 RHEL 系 Linux 上的軟體包管理工具
yum install -y epel-release
清除並重建 yum 快取
yum clean all
yum makecache
檢查並應用已安裝軟體包的可用升級
yum update -y
0x04 小工具
一些我自己經常用到的工具類軟體包
yum install -y bash-completion curl git unzip htop yum-utils lsof tree
具體用法請移步如下連結
0x05 開發/編譯工具
一些我自己經常用到的用於開發或編譯的軟體包,同時也作為很多第三方軟體的依賴包,建議安裝
yum install -y vim gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
0x06 解除安裝 firewalld
firewalld 是系統自帶的防火牆,emmmmmm,很辣雞
停止 firewalld 服務
systemctl stop firewalld
關閉 firewalld 的開機自啟
systemctl disable firewalld
解除安裝 firewalld
yum remove -y firewalld
0x07 安裝 iptables-servers
這是一個我自己用著比較舒服的防火牆
yum install -y iptables-services
啟動 iptables
systemctl start iptables
設定 iptables 開機自啟
systemctl enable iptables
0x08 systemctl
單獨說一下 systemctl
systemctl 是一個 systemd 工具,主要負責控制 systemd 系統和服務管理器
systemd 是一個系統管理守護程式、工具和庫的集合,用於取代 system V 初始程式,systemd 的功能是用於集中管理和配置類 UNIX 系統
在 Linux 生態系統中,systemd 被部署到了大多數的標準 Linux 發行版中,只有為數不多的幾個發行版尚未部署
在平時的工作中主要會用到以下幾種引數,以 iptables 為例,其中服務名可以簡寫為 iptables,也可以寫全稱 iptables.service
啟動 iptables 服務
systemctl start iptables
停止 iptables 服務
systemctl stop iptables
過載 iptables 服務
如果修改了服務的配置檔案,建議重啟而不是過載
systemctl reload iptables
重啟 iptables 服務
systemctl restart iptables
開啟 iptables 開機自啟
systemctl enable iptables
關閉 iptables 開機自啟
systemctl disable iptables
0x09 配置 iptables 規則
該規則主要控制可以從外部訪問哪些埠,預設應該只有 22 埠,用於 SSH 訪問,請勿刪除,刪除 22 埠訪問許可權會導致無法通過 SSH 登陸伺服器
這裡直接用 sed 新增到 iptables 的配置檔案裡,常規的做法是使用 vim 開啟配置檔案,並手動新增
sed -i `/-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT/a-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT` /etc/sysconfig/iptables
sed -i `/-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT/a-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT` /etc/sysconfig/iptables
sed -i `/-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT/a-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT` /etc/sysconfig/iptables
這裡新增了三條規則,對應三個埠
80:web 服務
443:web 服務中的 https
3306:MySQL
重啟 iptables
systemctl restart iptables
0x10 匯入 MySQL 5.7 映象源
這個是 MySQL 自己的源,用著比較舒服,直接安裝這一個就可以解決所有依賴項
目前 MySQL 5.7 是穩定版本中最新的,雖然現在已經有 MySQL 8.0 了,但 8.0 還不成熟,而且他的上一個版本就是 5.7,中間沒有 6.0 和 7.0
yum install -y http://repo.mysql.com/mysql57-community-release-el7.rpm
安裝 mysql-server
yum install -y mysql-server
啟動 MySQL 並設定開機自啟
systemctl start mysqld
systemctl enable mysqld
0x11 查詢 MySQL 預設密碼
MySQL 在安裝後會設定一個預設密碼,使用 grep 工具查詢安裝日誌中包含 password 關鍵詞的行並輸出
grep "password" /var/log/mysqld.log
應該會輸出這樣一行日誌
時間 [Note] A temporary password is generated for root@localhost:
不管後邊的字元有多奇怪,那個就是密碼
登入 mysql
mysql -u root -p
輸入密碼後進入 MySQL 控制檯
0x12 修改 MySQL 密碼
MySQL 要求密碼至少符合以下條件
數字、小寫字母、大寫字母 、特殊字元、長度至少8位
但這種要求可能不適合一些記不住密碼的人,所以直接寫出來修改規則的方式
注意:這是一種錯誤的,不良的習慣,低安全等級的密碼可能遭到攻擊甚至意料之外的訪問、修改及資料洩露,因此導致的任何後果需要自己承擔
設定密碼安全等級為 0
mysql> SET GLOBAL VALIDATE_PASSWORD_POLICY = 0;
設定密碼最小長度為 1
mysql> SET GLOBAL VALIDATE_PASSWORD_LENGTH = 1;
注意:這是一種錯誤的,不良的習慣,低安全等級的密碼可能遭到攻擊甚至意料之外的訪問、修改及資料洩露,因此導致的任何後果需要自己承擔
更改密碼為 passwd
注意:passwd 是個示例密碼,安全度極低,請自己修改
mysql> ALTER USER USER() IDENTIFIED BY `passwd`;
允許 root 使用 passwd 從任意主機連線
注意:passwd 是個示例密碼,安全度極低,請自己修改
mysql> GRANT ALL PRIVILEGES ON *.* TO `root`@`%` IDENTIFIED BY `passwd` WITH GRANT OPTION;
退出 mysql 控制檯
mysql> exit
0x13 安裝 nginx
yum install -y nginx
啟動 nginx 並設定開機自啟
systemctl start nginx
systemctl enable nginx
0x14 修改 nginx 基礎配置
備份 nginx.conf 為 nginx.conf.bak,並將 nginx.conf.default 複製為nginx.conf
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
nginx 配置檔案中使用 { } 來標識配置檔案塊,本文中只修改使其支援 php 的部分
開啟 nginx 配置檔案
vim /etc/nginx/nginx.conf
按 i 鍵進入編輯模式
在 http -> server 塊中新增如下配置
location ~ .php(.*)$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
按鍵盤左上角的 ESC 鍵退出編輯模式,直接輸入如下命令儲存並退出
:wq
重啟 nginx
systemctl restart nginx
0x15 mv 命令
mv 命令全稱 move
常用的功能如下
將檔案 test 更名為 abc
mv test abc
將檔案 test 移動到 /home/ 目錄下
mv test /home
0x16 修改網站根目錄
預設的網站根目錄位於 /usr/share/,我個人不太習慣,所以修改到 /var/www/html/
建立 /var/www/ 資料夾
mkdir -p /var/www
將 /usr/share/nginx/html/ 下的 html/ 目錄移動到 /var/www/
mv /usr/share/nginx/html/ /var/www/
在 /usr/share/nginx/ 處建立 /var/www/html/ 的軟連結並命名為 html
ln -s /var/www/html /usr/share/nginx/html
重啟nignx
systemctl restart nginx
0x17 安裝 PHP 7.2
安裝 remi 源
remi 是一個包含 PHP、MySQL 等工具的軟體源
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
啟用 PHP 7.2 倉庫
該命令屬於 yum-utils 包
yum-config-manager --enable remi-php72
安裝 PHP 7.2
yum install -y php72
安裝 PHP 模組
使用 remi 安裝的 PHP 7.2 在安裝模組時的字首均為 php72-php-
yum install -y php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysql php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache
啟動 PHP-FPM 並設定開機自啟
PHP-FPM 是一個 PHP FastCGI 程式管理器,並且直接被整合進 PHP 中
systemctl start php72-php-fpm
systemctl enable php72-php-fpm
修改 PHP-FPM 程式保留設定
php-fpm 的程式在建立後並不會直接退出,並且會佔用大量記憶體,修改配置檔案中的執行方式可以節省大量記憶體
sed -i `s/^pm = dynamic/pm = ondemand/` /etc/opt/remi/php72/php-fpm.d/www.conf
重啟 PHP-FPM
systemctl restart php72-php-fpm