博客原文地址: "CentOS 7 個性化配置指南 Wind Spirit" 0x00 前言 該教程主要安裝瞭如下軟體包 iptables MySQL PHP PHP 相關模塊 Nginx 主要配置實現了以下功能 修改軟體源 修改 PS1,更改配色 SSH 每隔 30 秒發送一個心跳包 修改 ipt ...
博客原文地址: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)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[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