2014年5月6日 星期二

AWS Setup

Setup Instance On AWS Console

https://www.youtube.com/watch?v=JPFoDnjR8e8


Login In Terminal issue

Problem:
Permissions 0644 for 'amazonec2.pem' are too open.
Solution:
chmod 400 mykey.pem

Install Apache(httpd) PHP MySQL



安裝和啟動LAMP Web 服務器
  1. 為確保您的所有軟件包都處於最新狀態,請對您的實例執行快速軟件更新。此過程可能需要幾分鐘的時間,但必​​須確保您擁有最新的安全更新和缺陷修復。
    Note
    選擇-y選項可在不要求確認的情況下安裝更新。如果您希望在安裝前檢查更新,則可以忽略此選項。
    [ec2-user ~]$ sudo yum update -y
  2. 您的實例處於最新狀態後,便可以安裝Apache Web服務器、MySQL和PHP軟件包。使用yum groupinstall命令可同時安裝多個軟件包和所有相關依賴項。
    [ec2-user ~]$ sudo yum groupinstall -y "Web Server" "MySQL Database" "PHP Support"
    Note
    非Amazon Linux實例的組名稱可能存在細微差異。如果以上命令由於組名稱無效而失敗,請使用yum grouplist命令並在輸出中查找類似的組(如“ MySQL Database server ”而不是“MySQL Database", ”),並將合適的組名稱用於分配。
  3. 安裝php-mysql軟件包。
    [ec2-user ~]$ sudo yum install -y php-mysql
  4. 啟動Apache Web 服務器。
    [ec2-user ~]$ sudo service httpd start 
    Starting httpd: [ OK ]
  5. 使用chkconfig命令配置Apache Web服務器,使其在每次系統啟動時啟動。
    [ec2-user ~]$ sudo chkconfig httpd on
    Tip
    當您成功啟用服務時,chkconfig命令不會提供任何確認消息。您可以通過運行以下命令驗證httpd是否已啟用。
    [ec2-user ~]$ chkconfig --list httpd 
    httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
    在運行級別2、3、4和5下,httpdon(即您希望看到的狀態)。
  6. 測試您的Web服務器。在Web瀏覽器中,輸入您實例的公有DNS地址(或公有IP地址),您應該可以看到Apache測試頁面。您可以使用Amazon EC2控制台獲取實例的公有DNS(勾選Public DNS (公有DNS)列;如果此列處於隱藏狀態,請單擊Show/Hide (顯示/隱藏)圖標並選擇Public DNS (公有DNS))。
    Tip
    如果您未能看到Apache測試頁面,請檢查您使用的安全組是否包含允許HTTP(端口80)流量的規則。有關將HTTP規則添加到您安全組的信息,請參閱向安全組添加規則
    Important
    如果您使用的不是Amazon Linux,則還可能需要在實例上配置防火牆才能允許這些連接。有關如何配置防火牆的更多信息,請參閱適用於特定分配的文檔。
    Note
    此測試頁面僅在/var/www/html中無內容時才顯示。將內容添加到文檔根目錄後,您的內容將顯示在您實例的公有DNS地址中,而不顯示在本測試頁面。
Apache httpd提供的文件保存在名為Apache文檔根目錄的目錄中。Amazon Linux Apache文檔根目錄為/var/www/html,默認情況下歸root所有。
[ec2-user ~]$ ls -l /var/www
total 16
drwxr-xr-x 2 root root 4096 Jul 12 01:00 cgi-bin
drwxr-xr-x 3 root root 4096 Aug 7 00:02 error
drwxr-xr-x 2 root root 4096 Jan 6 2012 html
drwxr-xr-x 3 root root 4096 Aug 7 00:02 icons
要允許ec2-user操作此目錄中的文件,您需修改其所有權和權限。有多種方法可以完成此任務;在本教程中,您可以將www組添加到您的實例,然後賦予該組/var/www目錄的所有權並為該組添加寫入權限。隨後,該組的所有成員都將能夠為Web服務器添加、刪除和修改文件。

設置文件權限
  1. www組添加到您的實例。
    [ec2-user ~]$ sudo groupadd www
  2. 將您的用戶(這裡指ec2-user)添加到www
    [ec2-user ~]$ sudo usermod -a -G www ec2-user
    Important
    您必須先退出,再重新登錄,然後才能接受新組。您可以使用exit命令,也可以關閉終端窗口。
  3. 先退出,再重新登錄,然後驗證您是否為www組的成員。
    1. 退出。
      [ec2-user ~]$ exit
    2. 重新連接到實例,然後運行以下命令,以驗證您是否為www組的成員。
      [ec2-user ~]$ groups 
      ec2-user wheel www
  4. /var/www及其內容的組所有權更改到www組。
    [ec2-user ~]$ sudo chown -R root:www /var/www
  5. 更改/var/www及其子目錄的目錄權限,以添加組寫入權限及設置未來子目錄上的組ID。
    [ec2-user ~]$ sudo chmod 2775 /var/www 
    [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} +
  6. 遞歸地更改/var/www及其子目錄的文件權限,以添加組寫入權限。
    [ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} +
現在,ec2_user(以及www組的任何未來成員)可以在Apache根目錄中添加、刪除和編輯文件。現在您已準備好添加內容,例如靜態網站或PHP應用程序。

測試您的LAMP Web 服務器
如果您的服務器已安裝且當前處於運行狀態,且您的文件權限設置正確,則您的ec2-user賬戶應該能夠在/var/www/html目錄(可從Internet訪問)中創建一個簡單的PHP文件。
  1. 在Apache 文檔根目錄中創建一個簡單的PHP 文件。
    [ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
    Tip
    嘗試運行此命令時,如果出現“ Permission denied ”錯誤,請嘗試先退出,再重新登錄,以接受您在設置文件權限中配置的適當組權限。
  2. 在Web 瀏覽器中,輸入您剛剛創建的文件的URL。此URL 是實例的公用DNS 地址,後接正斜杠和文件名。例如:
    http:// my.public.dns.amazonaws.com /phpinfo.php
    您應該可以看到PHP 信息頁面。
  3. 刪除phpinfo.php文件。儘管此信息可能對您很有用,但出於安全考慮,不應將其傳播到Internet。
    [ec2-user ~]$ rm /var/www/html/phpinfo.php

保障MySQL 服務器的安全
MySQL服務器的默認安裝提供有多種功能,這些功能對於測試和開發都很有幫助,但對於產品服務器,應禁用或刪除這些功能。mysql_secure_installation命令可引導您設置根密碼並刪除安裝中的不安全功能。即使您不打算使用MySQL服務器,執行此步驟也是一個不錯的建議。
  1. 啟動MySQL服務器,以便可以運行mysql_secure_installation
    [ec2-user ~]$ sudo service mysqld start
    Initializing MySQL database: Installing MySQL system tables...
    OK
    Filling help tables...
    OK
    
    To start mysqld at boot time you have to copy
    support-files/mysql.server to the right place for your system
    
    PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
    ...
    
    Starting mysqld: [ OK ]
    
  2. 運行mysql_secure_installation
    [ec2-user ~]$ sudo mysql_secure_installation
    1. 在系統提示時,輸入root賬戶的密碼。
      1. 輸入當前root密碼。默認情況下,root賬戶沒有設置密碼,因此請按Enter .
      2. 鍵入Y設置密碼,然後輸入安全密碼兩次。有關創建安全密碼的更多信息,請轉至http://www.pctools.com/guides/password/。確保將此密碼存儲在安全位置。
    2. 鍵入Y刪除匿名用戶賬戶。
    3. 鍵入Y禁用遠程root登錄。
    4. 鍵入Y刪除測試數據庫。
    5. 鍵入Y重新加載權限表並保存您的更改。
  3. (可選)如果不打算立即使用MySQL 服務器,請停止。您可以在需要時再次重新啟動該服務器。
    [ec2-user ~]$ sudo service mysqld stop 
    Stopping mysqld: [ OK ]
  4. (可選)如果您希望每次啟動時MySQL 服務器都啟動,請輸入以下命令。
    [ec2-user ~]$ sudo chkconfig mysqld on
現在,您應該有了一個功能完善的LAMP Web服務器。如果您將內容添加到Apache文檔根目錄(位於/var/www/html),您應該能夠在您實例的公有DNS地址中看到該內容。


Install phpMyAdmin

Do the following:
  1. Navigate to the apache folder
    cd /var/www/html
    
  2. Ensure ownership of the folder (assuming signed in with ec2-user)
    sudo chown ec2-user .
    
  3. Download phpMyAdmin
    wget http://www.sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.0.3/phpMyAdmin-4.0.3-all-languages.tar.bz2
    
  4. Unzip
    tar -jxf phpMyAdmin-4.0.3-all-languages.tar.bz2 -C /var/www/html
    
  5. Rename the folder
    mv phpMyAdmin-4.0.3-all-languages phpmyadmin
    
  6. Remove the zip file
    rm -rf phpMyAdmin-4.0.3-all-languages.tar.bz2
    
That's the basics. You can find more info in the link provided above.

Set config.ini.php

 $cfg['Servers'][$i]['AllowNoPassword'] = true;

Error I Met

browse mydomainname/phpmyadmin but all i saw was white page. In /var/log/httpd/error_log
it said 
PHP Fatal error:  Call to undefined function mb_detect_encoding() in 
/usr/share/php/gettext/gettext.inc on line 177

This article helped me.  After installing mbstring library, it works. The commands are here.

sudo yum install php-mbstring
service restart httpd