CentOS 7 個性化配置指南


博客原文地址: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

具體用法請移步如下鏈接

Baidu
Google

0x05 開發/編譯工具

一些我自己經常用到的用於開發或編譯的軟件包,同時也作為很多第三方軟件的依賴包,建議安裝

yum install -y vim gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

0x06 卸載 firewalld

firewalld 是系統自帶的防火牆,很強大,可以動態管理規則,如果有能力盡量使用firewalld,在 CentOS7 之后的版本中 iptables 的啟動腳本會被忽略掉,不過寫這篇文檔的時候個人比較習慣用iptables,現在已換firewalld

停止 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM