====== CentOS7 - 技巧 ======
===== 修改預設開機的模式 =====
使用指令切換文字模式或圖形模式
systemctl isolate multi-user.target //切換到模式3,該命令對下次啟動無影響,等價於telinit 3
systemctl isolate runlevel3.target //切換到模式3,該命令對下次啟動無影響,等價於telinit 3
systemctl isolate graphical.target //切換到模式5,該命令對下次啟動無影響,等價於telinit 5
systemctl isolate runlevel5.target //切換到模式5,該命令對下次啟動無影響,等價於telinit 5
執行systemctl命令,設置啟動時預設進入文字模式或圖形模式。
# systemctl -f enable multi-user.target //文字模式
# systemctl -f enable graphical.target //圖形模式
執行以下命令,設置啟動時預設進入文字模式或圖形模式
開機啟動之預設檔案為default.target,預設連結到graphical.target(大致相當於原來的運行級別5)。
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target //文字模式
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target //圖形模式
===== 安裝 ifconfig 命令 =====
ifconfig命令是設置或顯示網絡接口的程序,可以顯示出我們機器的網卡信息,可是有些時候最小化安裝CentOS等Linux發行版的時候會默認不安裝ifconfig等命令,這時候你進入終端,運行ifconfig命令就會出錯
yum安裝ifconfig這個命令包
[root@CentOS7 ~]# yum search ifconfig
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.tc.edu.tw
* extras: ftp.tc.edu.tw
* updates: ftp.tc.edu.tw
============================== Matched: ifconfig ===============================
net-tools.x86_64 : Basic networking tools
[root@CentOS7 ~]#
通過yum search 這個命令我們發現ifconfig這個命令是在net-tools.x86_64這個包裡,接下來我們安裝這個包就行了
yum install net-tools
----
===== 修改網卡名為eth0 =====
從CentOS/RHEL7起,可預見的命名規則變成了默認。這一規則,接口名稱被自動基於固件,拓撲結構和位置信息來確定。現在,即使添加或移除網絡設備,接口名稱仍然保持固定,而無需重新枚舉,和壞掉的硬件可以無縫替換。
在 RHEL 及 CentOS 7 開始, 網卡的預設名稱由以往的 Ethx 改成 Enox, 以下文章會介紹將 CentOS 7 網卡名稱修改, 用回 Eth0 的方法。
但是這樣一來,雖然有好處,但也影響了不少用戶的操作,因為新的命名方案接口名稱比傳統的eth0相比有點難以閱讀。出於習慣等一些原因,你想修改網卡名稱,下面為大家介紹如何在CentOS7或RHEL7命名網絡接口。
=== 無序列表項目系統安裝完畢,可能你的網卡命名是這樣的! ===
[root@CentOS7 ~]# ifconfig
eno16777736: flags=4163 mtu 1500
inet 192.168.200.133 netmask 255.255.255.0 broadcast 192.168.200.255
inet6 fe80::20c:29ff:fe83:6b22 prefixlen 64 scopeid 0x20
ether 00:0c:29:83:6b:22 txqueuelen 1000 (Ethernet)
RX packets 148 bytes 17435 (17.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 68 bytes 11507 (11.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@CentOS7 ~]#
=== 首先,先編輯網卡的配置文件 vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 將裡面的NAME項修改為eth0 ===
HWADDR="00:0C:29:83:6B:22"
TYPE="Ethernet"
BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777736"
UUID="ec6adc96-025d-42ca-ae30-ae2b513c8ff3"
ONBOOT="yes"
全句是這樣:
NAME="eth0"
=== 繼續,重命名該配置文件 ===
[root@CentOS7 ~]# cd /etc/sysconfig/network-scripts/
[root@CentOS7 network-scripts]# mv ifcfg-eno16777736 ifcfg-eth0
=== 然後,禁用該可預測命名規則。對於這一點,你可以在啟動時傳遞「net.ifnames=0 biosdevname=0 」的內核參數。這是通過編輯/etc/default/grub並加入「net.ifnames=0 biosdevname=0 」到GRUBCMDLINELINUX變量來實現的。 ===
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_centos7/swap rd.lvm.lv=centos_centos7/root vconsole.font=latarcyrheb-sun16 vconsole.keymap=us rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
裡面其中一行是 GRUB_CMDLINE_LINUX, 在這行結尾的雙引號前加上這句:
net.ifnames=0 biosdevname=0
要留意, 加上以上一行資料前, 要先加上一個空格, 整行修改後是這樣:
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_centos7/swap rd.lvm.lv=centos_centos7/root vconsole.font=latarcyrheb-sun16 vconsole.keymap=us rhgb quiet net.ifnames=0 biosdevname=0"
=== 然後用 grub2-mkconfig 指令重新建立 GRUB 的設定檔: ===
運行命令grub2-mkconfig -o /boot/grub2/grub.cfg 來重新生成GRUB配置並更新內核參數。
[root@CentOS7 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@CentOS7 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-123.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-123.el7.x86_64.img
Warning: Please don't use old title `CentOS Linux, with Linux 3.10.0-123.el7.x86_64' for GRUB_DEFAULT, use `Advanced options for CentOS Linux>CentOS Linux, with Linux 3.10.0-123.el7.x86_64' (for versions before 2.00) or `gnulinux-advanced-73d3a1f2-7f58-4459-9bcd-382a346c6e51>gnulinux-3.10.0-123.el7.x86_64-advanced-73d3a1f2-7f58-4459-9bcd-382a346c6e51' (for 2.00 or later)
Found linux image: /boot/vmlinuz-0-rescue-def0630cbe164c37894b6e5a40772064
Found initrd image: /boot/initramfs-0-rescue-def0630cbe164c37894b6e5a40772064.img
done
[root@CentOS7 ~]#
=== 最後重新啟動系統便會生效, 要確認修改成功, 可以用 ifconfig 指令確認。 ===
[root@CentOS7 ~]# ifconfig
eth0: flags=4163 mtu 1500
inet 192.168.200.133 netmask 255.255.255.0 broadcast 192.168.200.255
inet6 fe80::20c:29ff:fe83:6b22 prefixlen 64 scopeid 0x20
ether 00:0c:29:83:6b:22 txqueuelen 1000 (Ethernet)
RX packets 107 bytes 13408 (13.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 69 bytes 11859 (11.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@CentOS7 ~]#
=== 創建規則 ===
重啟在ifconfig查看應該就已經生效了,根據Centos 官方WIKI的FAQ中得知,如果你有多個接口,並且想要控制其設備名,而不是讓內核以它自己的方式命名,創建,/etc/udev/rules.d/XXX-net.rules規則是必要的!那麼這裡我們也創建好規則吧。
注意:以前系統的net規則名稱是70-persistent-net.rules,這裡我也按照這個名字定義規則!
[root@centos7 ~]# cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x1022:0x2000 (pcnet32) ---> (可能網卡 VID:PID 吧?)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:83:6b:22", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
[root@centos7 ~]#
===== 解決 CentOS 7 開機不啟動 rc.local =====
以前在 Redhat 及 CentOS 要設定開機自動執行的 Shell Script, 一般都會在檔案 /etc/rc.d/rc.local 加入需要執行的 Shell Script 或指令, 但在 CentOS 7 開始, /etc/rc.d/rc.local 預設權限改為 644, 即沒有執行權限, 為甚麼會這樣, 可以開啟 CentOS 7 的 /etc/rc.d/rc.local 看看, 裡面有 Redhat 的說明:
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In constrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
可以看到這個檔案在 RHEL 及 CentOS 7 只為了解決兼容性, Redhat 建議還是自行建立 systemd 服務或者 udev rules 較好, 如果真的需要使用 rc.local, 只要執行 chmod 給予 rc.local 可執行權限即可:
# chmod +x /etc/rc.d/rc.local
執行以上指令後, 下次開機便會自動執行 rc.local 內的指令或 Shell Script.
===== CentOS 7 Service 操作 =====
CentOS 7.0 開始,服務的管理使用變成用 systemctl,例如 httpd 的使用可用下面幾種方式
# systemctl status|start|stop|restart|reload httpd
OR
# service httpd status|start|stop|restart|reload
OR
# apachectl configtest| graceful
service httpd 會自動重導指令到 systemctl 命令,問題不大。
===== CentOS 7 安裝設定 Samba =====
https://www.opencli.com/linux/centos-7-install-samba
===== CentOS 7.0 x64 的 iptables 與 firewall-cmd 防火牆 =====
http://shaurong.blogspot.tw/2014/07/centos-70-x64.html
===== RHEL 7 / CentOS 7 : 關閉 Firewalld 及使用 iptables =====
https://www.phpini.com/linux/rhel-centos-disable-firewalld-use-iptables
===== CentOS 7 安裝 Apache, MariaDB, PHP =====
https://www.phpini.com/linux/redhat-centos-7-setup-apache-mariadb-php\\
**安裝 Apache**
# yum install httpd
跟著回答 “y” 後便會完成安裝, 然後輸入以下指令啟動及設定 Apache 開機自動執行:
# systemctl start httpd
# systemctl enable httpd
這時 Apache 已經啟動了, 可以在瀏覽器輸入伺服器的位置試試, 例如 http://localhost
**安裝 MariaDB**
執行以下指令安裝 MariaDB:
# yum install mariadb-server mariadb
啟動及設定開機自動執行 MariaDB:
# systemctl start mariadb
# systemctl enable mariadb
執行以下指令設定 MariaDB 的 root 密碼, 預設是空密碼, 所以建議盡快修改:
# /usr/bin/mysql_secure_installation
完成後可以用測試一下 MariaDB 是否已經啟動:
# mysql -u root -p
**安裝 PHP**
以下指令除了會安裝 PHP 外, 還會安裝一些常用的 PHP 套件:
# yum install php php-mysql php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel
安裝好 PHP 後需要重新啟動 Apache 才會生效:
# systemctl restart httpd.service
要測試 PHP, 可以放一個簡單的 PHP Script 會 Apache DocumentRoot 目錄, 這裡:
# vi /var/www/html/test.php
然後輸入以下幾行程式碼:
然後在瀏覽器看看 http://localhost/test.php, 如果看到 PHP 的設定資料便表示安裝完成了。
===== CentOS 7 upgrade php 5.6 =====
How to Upgrade PHP version 5.4 to 5.6 on CentOS/RHEL 6/7
# php -v
To upgrade php, first you must include the Webtatic EL yum repository data relating to your CentOS/RHEL variant to yum:
For CentOS/RHEL 7:
# rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
For CentOS/RHEL 6:
# rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
After installing Webtatic yum repository, you have to remove the old version of php-common package. It will also delete it dependencies packages.
# yum remove php-common
Now we install PHP 5.5 using following command:
# yum install -y php56w php56w-opcache php56w-xml php56w-mcrypt php56w-gd php56w-devel php56w-mysql php56w-intl php56w-mbstring