2016年12月20日

Amazon EC2 - Amazon Linux Instance + Lamp + phpMyAdmin

因為工作需要在Amazon上實作建立EC2 Instance及建立LAMP環境,這篇文章主要紀錄一下過程,在建立雲端環境前已在本機做一個完整的PHP網站+MySQL資料庫



建立好Linux Instance後要先透過Putty連上,在建立instance時會輸入一組key號碼並讓你下載(XXX.pem),這檔案先保存好等等會用到

1. 到Putty官網下載 putty.exeputtygen.exe

因為連上Amazon Linux時候會需要憑證,但xxx.pem並不是Putty接受的憑證格式,因此請打開puttygen.exe,按下Load將xxx.pem載入後再點save private key,如此等等再登入時就可以用到

2. 打開putty,在host地方打上

ec2-user@Public DNS <--每個instance下面的Descripton會有該資訊

然後找到category裡的SSH -> Auth,在Private key file for authentication地方選擇剛剛產生出來的XXX.ppk檔,按下Open就能連上Linux了

---------------------------------------------------------------------

連上Linux後就是一連串的安裝和設定

1. 安裝LAMP

指令: sudo yum install httpd mysql mysql-server php php-mysql

安裝包含:
httpd (提供 Apache 主程式)
mysql (MySQL 客戶端程式)
mysql-server (MySQL 伺服器程式)
php (PHP 主程式含給 apache 使用的模組)
php-devel (PHP 的發展工具,這個與 PHP 外掛的加速軟體有關)
php-mysql (提供給 PHP 程式讀取 MySQL 資料庫的模組)

安裝完後在var資料夾中就會有www的資料夾
裡面的html資料夾就是主要放網站的地方


2. 設定一下httpd.conf
/etc/httpd/conf/httpd.conf (主要設定檔)
httpd 最主要的設定檔,其實整個 Apache 也不過就是這個設定檔啦!裡面真是包山包海啊!不過很多其他的 distribution 都將這個檔案拆成數個小檔案分別管理不同的參數。但是主要設定檔還是以這個檔名為主的! 你只要找到這個檔名就知道如何設定啦!

裡面我設定了
KeepAlive Off -> ON
MaxKeepAliveRequest 100 -> 500
ServerAdmin 改成自己的email
ServerName 改成自己的DNS名稱

另外因為我網站內容是英文,所以沒有改編碼問題,但如果要可以將
# AddDefaultCharset UTF-8 註解掉

DocumentRoot "/var/www/html" 這是放置首頁的目錄,就是上面說的位置

3. 設定Php.ini

主要是資安方面的設定
register_globals = Off
# 這個項目請確定為 Off (預設就是 Off),因為如果設定為 On 時,
# 雖然程式執行比較不容易出狀況,但是很容易不小心就被攻擊。

log_errors = On
ignore_repeated_errors = On  <==這個設定值調整一下 (因預設為 Off)
ignore_repeated_source = On  <==這個設定值調整一下
# 這三個設定項目可以決定是否要將 PHP 程式的錯誤記錄起來,
# 建議將重複的錯誤資料忽略掉,否則在很忙碌的系統上,
# 這些錯誤資料將可能造成你的登錄檔暴增,導致效能不佳 (或當機)

display_errors = Off
display_startup_errors = Off
# 當你的程式發生問題時,是否要在瀏覽器上頭顯示相關的錯誤訊息 (包括部分程式碼)
# 強烈的建議設定為 Off 。不過如果是尚未開放的 WWW 伺服器,為了你的 debug
# 容易,可以暫時的將他設定為 On ,如此一來你的程式問題會在瀏覽器上面
# 直接顯示出來,你不需要進入 /var/log/httpd/error_log 登錄當中查閱。
# 但程式完成後,記得將此設定值改為 Off 喔!重要重要!

PHP 上傳檔案限制

post_max_size = 20M       <==大約在 729 行左右
file_uploads = On         <==一定要是 On 才行 (預設值)
upload_max_filesize = 16M <==大約在 878 行左右
memory_limit = 128M       <==PHP 可用記憶體容量也能修訂!

4. 啟動服務及模組

啟動WWW service
[root@www ~]# /etc/init.d/httpd start       <==立刻啟動啦!
[root@www ~]# /etc/init.d/httpd configtest  <==測試設定檔語法
[root@www ~]# chkconfig httpd on            <==開機啟動 WWW 啦!
啟動Apach
[root@www ~]# /usr/sbin/apachectl start  <==啟動啦!
[root@www ~]# /usr/sbin/apachectl stop   <==關閉 WWW 啦!

網站上傳後發現的問題

1. Linux全部都設定好,但還是連不上,

解決方式:
請檢查instance的security group設定,須開放以下幾個port
在Inbound中
HTTP 80
SSH 22 (預設就有)
MYSQL/Aurora 3306

2. Linux系統很嚴謹的拼字檢查,程式中大小寫並沒那麼注意到大小寫,導致網頁失聯及圖片失聯:

解決方式:
使用vim 進入/etc/httpd/conf/httpd.conf後
在LoadModule speling_module modules/mod_speling.so後面加入
CheckSpelling on


5. 啟動MySQL

[root@www ~]# /etc/init.d/mysqld start
[root@www ~]# chkconfig mysqld on
# 如果是初次啟動,螢幕會顯示一些訊息且 /var/lib/mysql 會建立資料庫。

啟動後root並沒有密碼,因此需先設定密碼

[root@www ~]# mysqladmin -u root password 'your.password'
# 從此以後 MySQL 的 root 帳號就需要密碼了!如下所示:

[root@www ~]# mysql -u root -p
Enter password:  <==你必須要在這裡輸入剛剛建立的密碼!

mysql> exit

 6. 手動安裝phpMyAdmin

需先下載WinSCP並連上主機,連的過程中也需要憑證
接著到phpMyAdmin官網下載tar檔案
如果使用PHP 5.2 and MySQL 5 則是下載phpMyAdmin 4.0.10.18
如果使用PHP 5.5 to 7.0 and MySQL 5.5 則是下載phpMyAdmin 4.6.5.2

下載後透過Winscp 上傳到/var/www/html 底下
1. 解壓縮
指令: tar -zxvf phpMyAdmin-4.6.5.2-all-languages.tar.gz

2. 變更資料夾名稱
指令: mv phpMyAdmin-3.3.10-all-languages phpMyAdmin

3. 將 config.sample.inc.php 複製並改名為 config.inc.php。
指令:  cp -p config.sample.inc.php config.inc.php

4. 使用文字編輯器變更 config.inc.php 資料並儲存。
指令: vim config.inc.php
將以下內容:
$cfg['Servers'][$i]['auth_type'] = 'config';
變更成:
$cfg['Servers'][$i]['auth_type'] = 'http';

5.儲存離開 :wq

6.開啟瀏覽器 : http://自有網域名稱 or localhost / phpmyadmin


以上為Linux網頁伺服器基本設定




文字內容及資料參考:
1. 鳥哥的 Linux 私房菜 - 第二十章、WWW 伺服器
2. 小灰狼php筆記 - 讓linux上的apache不區分大小寫
3. Ardur的筆記 - Linux系統下安裝phpMyAdmin

若有錯誤請不吝指教
謝謝

沒有留言:

張貼留言

<Javascript> How to uncompressed GZIP at front-end using Javascript

It's been a while I haven't share my coding work. In this article I would like to share how to receive a Gzip file via stream, unzip...