CentOS 7 個性化配置指南

WindSpirit發表於2019-02-12

部落格原文地址: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

具體用法請移步如下連結

Baidu
Google

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

相關文章