網頁

2015年10月28日 星期三

PHP Composer 相關資料

安裝環境:

主機環境 Windows 10 Apache2.4.33 PHP 7.2.X

安裝過程:

可以利用 Composer-Setup.exe 自動安裝的方式進行,但我這偏好手動安裝的方式。

手動安裝的方式:下載最新版本的 composer.phar ,再將它放到專案的目錄內即可。

在安裝 PHP Composert 時出現 Internal Error [ERR_STATIS],exit code255(如圖)的錯誤訊息

原來是 php.ini 內的設定需要做一些調整,不是很確定是要將 disable_function 內的那一項刪除,我猜應該是它是需要使用到 shell_exec function ,不過因為是在測試用機器,所以將 disable_function 的部份全部開放。若往後專案有使用到,再來確定就可以了。反正目前是在學習中。


php.ini 需配合調整
extension=php_openssl.dll //啟用
allow_url_fopen = On //改成 On
open_base="C:\ProgramData\ComposerSetup\bin"; //也許也要調整
;disable_function = shell_exec //將它暫時關閉
新北市樹林國小 Laravel 工作坊內的課程各單元投影片內的 COMPOSER套件管理 PPT內P16頁,它有提到它其實是可以有隨身版的,這是因為 composer 是 PHP Archive files。只要將 composer.phar 放到專案的根目錄底下就可以直接使用。輸入的指令要修改成 php composer.phar {command}。



















Composer command

  • php composer.phar self-update //定期更新
  • composer validate //檢查 composer.json 內容
  • composer show --installed //列出目前專案所有的相依套件
  • composer install  //讀取目前目錄的 composer.json 檔案、解析依賴套件、並安裝他們到 vendor 中
  • composer update //為了取得依賴套件的最新版本,並且更新 composer.lock 檔案
  • 該使用 install or update :
  • composer 目錄架構
    • vendor/*  (下載相關套件)
    • vendor/autoload.php (自動以載入套件中所有對外公開的類別)
    • composer.lock ()

範例,以 phpmailer 為例

參考 phpmailer website 內的作法
  1. 在composer.json 檔案內直接指定使用版本 "phpmailer/phpmailer": "~5.2" 或使用 php composer.phar require phpmailer/phpmailer,它會自動的產生 composer.json 檔案。
  2. 在 php 程式內直接 require 'vendor/autoload.php' 後(參考 github 上範例),就可以做發信的動作;實際測試時,php.ini 內有將 openssl 啟動會造成 phpmailer  SMTP Error: Could not connect to SMTP host.

相關資料:
  1. 首頁 - Composer | 正體中文文件
  2. 新北市樹林國小 Laravel 工作坊
  3. 逐步提昇PHP技術能力 - 開發工具 : 用Composer管理相依性
  4. 5 features to know about Composer PHP   
  5. Download Composer
  6. Composer設計原理與基本用法 
  7. A Dependency Manager for PHP

2015年10月21日 星期三

Apache 2.4.17 HTTP/2

Apache 2.4.17 此版本新增了 HTTP/2 支援 (HTTP/2 support)。於是就試著升級 Apache 版本並試看看此功能。

使用的方式很簡單,只要在Apache 的 httpd.conf 加入以下腳本即可。

LoadModule http2_module modules/mod_http2.so
#ProtocolsHonorOrder On
Protocols h2 h2c http/1.1

但 Apache Daemon 重開後,使用 FirefoxHTTP/2 and SPDY indicator 工具來觀察。但由工具來看一直沒有看到有支援,有支援的話會在網址列看到閃電符號。調整後,一直沒看到閃電符號。查了一下,由資料看來,主機需要同時部署 SSL(TLS) 功能後才能支援。

相關資料:
  1. mod_http2 :: HowTo & Info & Tips
  2. HTTP/2 资料汇总
  3. HTTP/2 時代將來臨 : Let’s Encrypt 即將開放正式 SSL 憑證 
  4. How to h2 in apache 
  5. [译]使用HTTP/2提升性能的7个建议

2015年10月14日 星期三

Ubuntu Linux 14.04.3 整理

sudo apt-get update
sudo apt-get upgrade
清除下載過的套件
ls /var/cache/apt/archives
du -sh /var/cache/apt/archives (查佔的容量 )
sudo apt-get clean (刪除這些已更新過的套件)

  • 修改網路IP
sudo nano /etc/netword/interfaces
#iface etho inet dhcp
iface eth0 inet static
address 140.114.73.73
netmask 255.255.255.0
gateway 140.114.73.254
dns-nameservers 8.8.8.8 140.114.63.1

使新設定的值生效
sudo /etc/init.d/networking restart

  • Firewall (UFW)
sudo ufw enable
sudo ufw allow 80 or ufw allow 80/tcp
ufw delete allow 80 //刪除規則
ufw status verbose //查狀態
sudo ufw allow 22 140.114.73.0/24
ufw allow from 140.114.73.73 to any port 22 //add rule
ufw delete allow from IP to any port 22 // remove rule
sudo ufw allow from 140.114.73.0/24 to any port 22 //限制範圍 IP

sudo apt-get install apache2
apache 主程式 @ /etc/apache2
apache 設定檔 @ /etc/apache2/apache2.conf
重新啟動 Apache
sudo /etc/init.d/apache2 restart (stop or start) OR
sudo service apache2 restart

調整目錄 permissions ; 這部份有點搞不清楚,先註記起來
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R g+rw /var/www/html

sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www


P.S.
www-data:www-data mean ⇒ user:group
g+rw (文字方式來指定檔案權限的做法):此表示將同群組使用者加入read and write權限
groups useraccount (查詢使用者的群組設定狀態)

  • 網頁上傳的方式
  1. FTP or SFTP:透過 FTP
  2. SSH :透過 ssh daemon
  3. ln  (例子:sudo ln -s /home/user/html /var/www): 利用軟連結的做法; ln 後的權限狀態
note. ln -s 的權限會是 rwxrwxrwx ,代表真正的權限要以所指的檔案為準,符號連結本身不做任何限制;刪除soft link ,直接使用 rm 指令。e.g. rm /var/www/html

sudo apt-get install php5 libapache2-mod-php5
sudo apt-get install php5-gd php5-curl //加入要使用的模組
sudo apt-get install php5-mysql //加入要使用的模組 (include mysqli)
apt-cache search php5 //找其它要使用的模組

調整 php.ini (sudo nano /etc/php5/apache2/php.ini )
要使用的 extension 加入到檔案內

sudo apt-get install mysql-server

  • 加強安全性
firewall 調整
fail2ban install

  • 排程工作(crontab)
  1. 新增範例:crontab -e (選擇要使用的文字編輯器), 加入以下文字
10 8 * * * /usr/sbin/ntpdate time.nist.gov(表示每天08:10自動校時)
查詢範例:crontab -l
  1. 利用apt指令讓Ubuntu定期自動更新:寫一支腳本,再定期執行這支腳本即可。

  1. 新增其它登入帳號:useradd
  2. 將帳號加入到 www-data群組(同以下做法)
  3. 新增其它的 sudo 使用者:
    1. sudo nano /etc/group
    2. 找出 sudo:x:27:Useraccount
    3. 新增 Useraccount2的使用者,將文字改成sudo:x:27:Useraccount,Useraccount2
  4. 找尋某程式放的位址:e.g. whereis ntpdate
  • 相關設定檔調整

  • 相關資料