產業消息

Centos 7中新指令 ip addr

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:ba:0b:07 brd ff:ff:ff:ff:ff:ff
    inet 163.17.xx.xx/25 brd 163.17.40.127 scope global ens192
       valid_lft forever preferred_lft forever
    inet6 2001:288:5400:0:250:56ff:feba:b07/64 scope global dynamic
       valid_lft 2591718sec preferred_lft 2591718sec
    inet6 fe80::250:56ff:feba:b07/64 scope link
       valid_lft forever preferred_lft forever
$ #查看介面傳輸狀態 -s 是詳細顯示
$ ip -s link
1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    4400       45       0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    4400       45       0       0       0       0
2: ens192: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:50:56:ba:0b:07 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    207938930  2541628  0       1809366 0       495
    TX: bytes  packets  errors  dropped carrier collsns
    788417     8512     0       0       0       0
$ #查看介面傳輸狀態 -s 是詳細顯示
$ ip  link
1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens192: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:50:56:ba:0b:07 brd ff:ff:ff:ff:ff:ff
 
 
連線觀察工具,新的指令ss
$ #TCP listen
$ ss -lt
$ #UDP listen
$ ss -ul
$ #TCP 連線
$ ss -t
 
ip -route
$ #route table
$ ip route
$ #route6 IPv6的route table
$ ip -6 rou
 
介面開關
$ ip l set eth1 up 
$ ip l set eth1 down
 

Centos7 的ifconfig和netstat

firewalld執行指令

啟動
# service firewalld start

停止
# service firewalld stop

重新啟動
# service firewalld restart

重讀設定
# firewall-cmd --reload

查看狀態
# service firewalld status

# firewall-cmd --state

程式設定

目錄 /etc/firewalld
設定檔 /etc/firewalld/firewalld.conf

防火牆基礎操作

畢竟他是一個防火牆,所以他引入了防火牆的zone的觀念,一看到就能瞭,一個zone可以有規則,zone到zone也可以有規則。

預設是一個叫 public的 zone,就是外面進到伺服器的zone,如果伺服器很單純對外服務不當路由器的話,這個zone就夠了。

操作這個防火牆如果有圖形介面直接在選單中點選防火牆就好了,圖形化易學易懂較沒問題,指令的話主要是用firewall-cmd 這個指令。

查看zone
# firewall-cmd --get-default-zone
public

查看運作中的zone和zone裡的介面
# firewall-cmd --get-active-zones
public
  interfaces: ens192

可以看到ens192這個介面是在public 這個zone中。

查看所有的zone
# firewall-cmd --get-zones

新增zone
# firewall-cmd --set-default-zone=home

查看此zone=public所開的服務
# firewall-cmd --zone=public --list-all
public (default, active)
  interfaces: ens192
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:


在public zone新增80TCP的服務
# firewall-cmd --zone=public --add-port=80/tcp

移除在public zone上80埠的所有服務 tcp/udp
# firewall-cmd --zone=public --remove-port=80

移除在public zone上5144埠的udp服務 5144/udp
# firewall-cmd --zone=public --remove-port=5144/udp

上面移除新增port(或服務)是整個zone都生效(一個zone可以由很多interfaces組成),我們可以指定來源:

# firewall-cmd --zone=public  --add-source=163.17.40.0/24
# firewall-cmd --zone=public  --remove-source=163.17.40.0/24

複雜的限定

這樣是所有的服務都套用這個來源,如果要限定單一服務的來源,可以使用他的rich rules:

列出所有rich-rules
# firewall-cmd --zone=public --list-rich-rules
<預設是沒有>

新增接受限制40.0可以讀取 28001埠
# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="163.17.40.0/24" port port="28001" protocol="tcp" accept'

查看設定結果
# firewall-cmd  --zone=public --list-all
public (default, active)
  interfaces: ens192
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

        rule family="ipv4" source address="163.17.40.0/24" port port="28001" protocol="tcp" accept

這樣子就開通了40.0/24連往這台機器的規則。

但是這樣子設定只是runtime的環境有用,一設定下去就生效,不需要重啟和重讀;

移除,得要完整的寫才有用,請把 --list-all 顯示出來的 rich rules整行貼上
# firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.56.0/24" port port="3306" protocol="tcp" accept'

當 firewalld重啟或重讀時,剛才加的設定就不見了,所以上面的操作要全部加上--permanent,讓它變成永久的設定

防火牆永久的設定

操作要全部加上--permanent,讓它變成永久的設定,runtime和永久的設定的不同,在firewalld重啟或重讀時,firewalld才會把永久的規則寫到runtime來用。

所以,永久的設定一定重啟或重讀才會生效。

查看永久的設定
# firewall-cmd --zone=public --list-all --permanent

查看runtime的設定(少了--permanent)
# firewall-cmd --zone=public --list-all

新增在public zone上53埠的udp服務 53/udp
# firewall-cmd --zone=public --add-port=53/udp --permanent

要觀察永遠設定的rule時,切記加上 --permanent

參考:https://n.sfs.tw/content/index/10384

[Centos7] 新的防火牆firewalld

安裝

#yum install phpmyadmin

 

設定

設定 phpMyAdmin 連結到 Nginx 設置的網站根目錄下

# ln -s /usr/share/phpMyAdmin/ /usr/share/nginx/html/

修改 phpMyAdmin 認證方式為 http(預設為 cookie),提高安全性

/etc/phpMyAdmin/config.inc.php

$cfg['Servers'][$i]['auth_type']     = 'http';

服務設置

重啟 Nginx、MariaDB 與 PHP-FPM 服務

# systemctl restart nginx

# systemctl restart mariadb

# systemctl restart php-fpm

測試

打開瀏覽器輸入網址 http://localhost/phpMyAdmin,沒有問題就會看到 phpMyAdmin 登入頁面。

參考:https://smalljacky.com/linux/centos/centos7-nginx-mariadb-php-phpmyadmin/

CentOS 7 安裝與設定 Nginx + MariaDB + PHP + phpMyAdmin(LEMP)

安裝

安裝相關軟體

# yum install mariadb mariadb-server

初始化設定

須先啟用服務,才可進行初始化

# systemctl start mariadb

進行初始化設定

# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):  # 輸入目前 MariaDB 的 root 密碼(第一次設定應該是空的,所以直接「ENTER」即可)
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
 
Set root password? [Y/n]    # 直接「ENTER」
New password:               # 設定新的密碼
Re-enter new password:      # 再次確認密碼
Password updated successfully!
Reloading privilege tables..
 ... Success!
 
 
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
 
Remove anonymous users? [Y/n# 是否要移除 anonymous user 的資料,直接「ENTER」
 ... Success!
 
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
 
Disallow root login remotely? [Y/n# 是否只允許讓 root 從 localhost 登入,無法從其他的網路登入,直接「ENTER」
 ... Success!
 
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
 
Remove test database and access to it? [Y/n# 是否移除 test 的資料庫,直接「ENTER」
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
 
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
 
Reload privilege tables now? [Y/n# 是否要重新載入權限的 table 資訊,直接「ENTER」
 ... Success!
 
Cleaning up...
 
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
 
Thanks for using MariaDB!

服務設置

開機自動啟用服務

# systemctl enable mariadb

參考:https://smalljacky.com/linux/centos/centos7-nginx-mariadb-php-phpmyadmin/

CentOS 7 安裝與設定 Nginx + MariaDB + PHP + phpMyAdmin(LEMP)

安裝

安裝相關軟體:

  • php:PHP 程式語言
  • php-fpm:也就是 FastCGI,透過它來讓 Nginx 與 PHP 之間交互連動

# yum install php php-fpm

PHP-FPM

設定

修改 php-fpm 的配置

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock
 
;user = apache
user = nginx
 
;group = apache
group = nginx
 
; 預設帳戶、群組,為正在運作的帳戶
;listen.owner = nobody
;listen.group = nobody
listen.owner = nginx
listen.group = nginx
 
; 權限(預設為 0666)
;listen.mode = 0666
 
; session 的路徑
php_value[session.save_path] = /var/lib/php/session
修改 session 路徑的擁有者、群組為 nginx
# chown nginx:nginx /var/lib/php/session/

Nginx 與 PHP 連動設定

Nginx 針對 PHP 的設定,這樣才可透過 php-fpm 讓 Nginx 與 PHP 之間交互連動

  1. server{
  2. listen 80;
  3. server_name yunkus.com; # 網站網址
  4. root /home/www/nginx.yunkus.com; # 網站的根目錄位置
  5. index index.php index.html; # 網站讀取的預設文件,按照順序
  6. location / {
  7. # This is cool because no php is touched for static content.
  8. # include the "?$args" part so non-default permalinks doesn't break when using query string
  9. try_files $uri $uri/ /index.php?$args; # Enable joomla SEF URL's inside Nginx
  10. }
  11. location = /favicon.ico {
  12. log_not_found off;
  13. access_log off;
  14. }
  15. location = /robots.txt {
  16. allow all;
  17. log_not_found off;
  18. access_log off;
  19. }
  20. location ~ \.php$ { # 讀 php 檔,以下4行都要加進去
  21. fastcgi_pass 127.0.0.1:9000;
  22. fastcgi_index index.php;
  23. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  24. include fastcgi_params;
  25. }
  26. }
修改網站根目錄的擁有者、群組為 nginx
# chown -R nginx:nginx /home/web/html/
重啟 Nginx 服務
# systemctl restart nginx
啟用 PHP-FPM 服務並開機自動啟用
# systemctl start php-fpm
# systemctl enable php-fpm

在網頁根目錄新增一個顯示 php 資訊的檔案

/home/web/html/index.php

程式碼:

<?php
phpinfo();
?>

打開瀏覽器輸入網址 http://Server IP/index.php,沒有問題就會看到 php 資訊

參考:https://smalljacky.com/linux/centos/centos7-nginx-mariadb-php-phpmyadmin/

CentOS 7 安裝與設定 Nginx + MariaDB + PHP + phpMyAdmin(LEMP)

安裝 Nginx

# yum install nginx
 

設定

Nginx 相關檔案位置:

所有設定檔:/etc/nginx/

主要設定檔:/etc/nginx/nginx.conf

預設設定檔:/etc/nginx/conf.d/default.conf

程序設定檔:/usr/sbin/nginx

log 檔:/var/log/nginx/

主要設定檔

Nginx 服務的主要設定檔

# 啟用 Nginx 的 Linux 帳戶
user  nginx;
# 啟用的執行緒數量(建議搭配 CPU 核心數 * 2)
worker_processes  1;
 
# log 檔位置
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
 
events {
    # 允許同一時間連線的數量
    worker_connections  1024;
}
 
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    # 預設 log 記錄的格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    # access log 檔位置
    access_log  /var/log/nginx/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
 
    # 是否啟用 gaip 壓縮(預設為註解,不啟用)
    #gzip  on;
 
    # 載入該路徑的所有設定檔,通常就是每個虛擬主機的配置
    include /etc/nginx/conf.d/*.conf;
 
    # 設定可上傳最大檔案容量(依需求設定)
    client_max_body_size 5m;
}

虛擬主機設定檔

Nginx 預設的主機設定檔

server {
    # 這個主機的 Port
    listen       80;
    # 這個主機的名稱
    server_name  localhost;
 
    # 設定預設編碼,但通常都是由網頁 <meta> 來定義,因此預設註解
    #charset koi8-r;
    # 針對這個主機的 log 檔位置
    #access_log  /var/log/nginx/log/host.access.log  main;
 
    # html 檔
    location / {
        # 網站的根目錄位置
        root   /usr/share/nginx/html;
        # 使用「瀏覽器」瀏覽根目錄時,未指定檔名時預設使用的檔案
        index  index.html index.htm;
    }
 
    # 發生 404 指定導向哪個網頁
    #error_page  404              /404.html;
 
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
 
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}
 
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    # php 檔
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    #    include        fastcgi_params;
    #} 
 
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

服務設置

啟用服務並開機自動啟用

# systemctl start nginx

# systemctl enable nginx

防火牆

設定 firewall 允許 http(80 Port)、https(443 Port)封包通行

# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --reload

檢查 firewall 的設定

# firewall-cmd --zone=public --list-all
public (default, active)
  interfaces: eth0 eth1
  sources:
  services: dhcpv6-client http https ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:
 

使用遞迴來讓所有的目錄加入 SELinux 的 httpd_sys_content_t 文件類型。

chcon -R -t httpd_sys_rw_content_t /home/web/html

參考來源:https://smalljacky.com/linux/centos/centos7-nginx-mariadb-php-phpmyadmin/

CentOS 7 安裝與設定 Nginx + MariaDB + PHP + phpMyAdmin(LEMP)

第 2 頁,共 2 頁