2016年3月30日 星期三

CentOS7 儲存 Firewall 的設定


在 CentOS7 底下設定好 Firewall 之後
重啟 CentOS7 就會不見
後來發現 firewall-cmd 只會暫時性的存放
並不會常駐
而 firewall 也沒有儲存(save)的功能
查了一下才知道
要加上 --premanent(常駐)
這樣系統重啟之後
firewall-cmd 有加上 --permanent 的設定就會自動被載入
舉個例子...

設定開啟 port 80(重開機後此設定無效)
firewall-cmd --zone=public --add-port=80/tcp
設定常駐開啟 port 80(重開機後此設定依舊保留)
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload


Oracle VM VirtualBox Bridge(橋接介面卡) 模式下 CentOS7 Static IP 設定

開啟 VM
點選[設定]->[網路]->[介面卡1]
選擇您要橋接的網卡


進入 CentOS7
編輯 /etc/sysconfig/network-scripts/ifcfg-enp0s3(依照你的網卡名稱)
調整設定如下
BOOTPROTO="static"
IPADDR="172.20.10.3"
NETMASK="255.255.255.240"
GATEWAY="172.20.10.1"
以上的值請依據您的環境自行修改
因為我是透過手機
所以GW跟NM都是參考手機的設定

再來設定  DNS
編輯 /etc/resolv.conf\
輸入以下兩組 nameserver
nameserver 168.95.1.1
nameserver 8.8.8.8


重啟 network, ping 看看 yahoo 是否正常
systemctl restart network
ping tw.yahoo.com



2016年3月27日 星期日

CentOS 7 下安裝 Mariadb + phpMyAdmin 搭配 Nginx + php-fpm




















# 安裝 Mariadb
yum install mariadb mariadb-server -y

# 開啟 Mariadb
systemctl start mariadb

# 設定為服務
systemctl enable mariadb

# mysql 安裝
mysql_secure_installation

# 安裝畫面


# 登入
mysql -u root -p



# 查看 db
show databases;

# 離開 mariadb
exit

# 安裝 phpmyadmin
yum install epel-release
yum install phpmyadmin


# 安裝 php
yum install php php-mysql php-fpm

# 設定 phpmyadmin 到 nginx 的目錄下
ln -s /usr/share/phpMyAdmin /usr/share/nginx/html

# 修改 cgi.fix_pathinfo = 0, 1表示找尋相似(相近)的檔案讀取, 關閉此功能讓系統安全一點
參考: cgi.fix_pathinfo 漏洞

vim /etc/php.ini

# 找到 cgi.fix_pathinfo, 設定為 0
cgi.fix_pathinfo=0

# 修改 php-fpm 的設定檔 www.conf
vim /etc/php-fpm.d/www.conf

# 找到 listen, 修改如下列所示(檔案尚未產生, 等重新執行 php-fpm 後就會有了)
listen = /var/run/php-fpm/php-fpm.sock

# 接下來找 listen.owner 跟 listen.group, 取消註解
listen.owner = nobody
listen.group = nobody

# 最後找 user 跟 group, 將他們的值從 apache 改成 nginx
user = nginx
group = nginx

# 重新執行 nginx
systemctl restart nginx
# 設定成服務
systemctl enable nginx
再來設定 Nginx, 讓他可以執行 php-fpm(未設定好, php 的檔案會變成下載的方式讀取)

# 修改 Nginx server block level(Nginx服務區塊, 類似 apache 的 virtual host)
vim /etc/nginx/conf.d/default.conf
# 修改內容如下
server {
    listen       80;
    server_name  localhost;

    # note that these lines are originally from the "location /" block
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

# 重啟 Nginx
systemctl restart nginx

開啟 phpmyadmin 之後發現 session 寫入有問題
因為 nginx 沒有寫入 php/session 的權限


# 修改 php/session 的權限
chown nginx:nginx /var/lib/php/session

# 重新開啟 phpmyadmin, 正常了

登入 phpMyAdmin 後出現 blowfish_secret 錯誤
# 修改 /usr/share/phpMyAdmin/libraries/config.default.php
vim /usr/share/phpMyAdmin/libraries/config.default.php

# 填入隨便一組加密碼
$cfg['blowfish_secret'] = 'oxoxox12345';

# 重新登入 phpMyAdmin 後就正常了


之前由於 php-fpm 沒設定
導致透過 nginx 開啟 php 網頁都變成下載 php 的檔案
連到 localhost/phpMyAdmin 則會出現 403 forbidden

用 google 查了 nginx phpmyadmin 403 forbidden
大部分都是檔案缺少或是權限問題
可是我實際處理之後發現我的問題似乎不在此

後來就回頭去研究 nginx + php-fpm 的設定
參考了 How To Install LEMP(Linux Nginx Mysql PHP) 之後
所有的問題就都解決了

2016年3月3日 星期四

centos 7 手動加入 nginx 的 repo 設定

# 建立 repo
vi /etc/yum.repos.d/nginx.repo

#讓yum找的到nginx
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enable=1


#執行安裝
yum install nginx

#安裝結果

# 關閉 apache(如果有開啟的話)
service httpd stop

# 啟動 nginx
service nginx start

# 初始畫面


參考連結
http://yenpai.idis.com.tw/