Amazon EC2之Linux架站LAMP環境佈署.

Ubuntu 12.04LTS
LAMP (Linux, Apache2, Mysql, PHP)
Wordpress 3.8

1.Update

$ sudo -s #切換到root,才不用一直sudo
$ apt-get update #更新更新~
$ apt-get upgrade

2.Install Package(Optional)

有一些常用的package,可以視情況安裝

$ apt-get -y install gcc #GNU Compiler Collection
$ apt-get -y install build-essential #Compiler
$ apt-get -y install git git-core
$ apt-get -y install bison openssl libreadline6 libreadline6-dev 
$ apt-get -y install curl zlib1g zlib1g-dev libssl-dev libyaml-dev

3.Set time zone(Optional)

$ dpkg-reconfigure tzdate

4.Install LAMP

除非機器上已經有部分元件,否則建議直接安裝LAMP包就好

#Lamp server package (mysql, apache, php)
$ apt-get -y install lamp-server^

or install package separately.

#MySql
$ apt-get -y install mysql-server mysql-client libmysqlclient15-dev

#Apeache2
$ apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

#PHP5
$ apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-mcrypt php5-mysql php5-ps php5-pspell php5-recode php5-xsl

phpmyadmin(Optional)

If you’re not familiar with mysql, try phpmyadmin. It’s a GUI tool to handle with mysql.
如果不是很熟悉mysql的話,phpmyadmin是個不錯的mysql圖形化介面

$ apt-get install phpmyadmin
$ vi /etc/apache2/apache2.conf
# add “ Include /etc/phpmyadmin/apache.conf ” into conf

#建立phpmyadmin捷徑到網站根目錄
$ sudo ln -s /usr/share/phpmyadmin /var/www/html

5.Set DB user

由於安全性的顧慮,我們要新增一個專門使用在wordpress的DB使用者及資料庫
在瀏覽器的網址列中,輸入http://你的網址/phpmyadmin/就能登入phpmyadmin的DB後台
privileges->add user->enter user name and password. use localhost as host.
select “ create database with same name and grant all privileges”

另外調整/etc/php5/apache2/php.ini 可控制檔案上傳大小與時間
upload_max_filesize = 2M ; //上傳單一檔案的大小限制
post_max_size = 8M ; //PHP 允許一次上傳檔案的大小限制
memory_limit = 128M ; //執行每個scripts時使用的memory大小限制,太小會影響模組功能。狀態報告可以觀看伺服器的設定
max_execution_time = 30 ; //每個 script 執行時間上限, 單位是秒
max_input_time = 60 ; //每個 script 處理輸入資料可用時間上限, 單位是秒
memory_limit > post_max_size > upload_max_size
最後別忘了重起apache2

$ sudo /etc/init.d/apache2 restart

 

6.Install FTP(Optional)

如果要從WP的後台新增外掛、佈景主題的話,就必須要安裝FTP

#FTP有很多種,我使用的是vsftpd
$ apt-get install vsftpd

#set configuration file
$ vi /etc/vsftpd.conf

#大致的設定如下即可
listen=YES #14  
anonymous_enable=NO #23  
local_enable=YES #26  
write_enable=YES #29  
ascii_upload_enable=YES #97  
ascii_download_enable=YES #98  
chroot_local_user=YES #120 
chroot_list_enable=YES #121 
chroot_list_file=/etc/vsftpd.chroot_list #123 
pam_service_name=ftp #143 原本是vsftpd

#set chroot list
$ vi /etc/vsftpd.chroot_list
#將使用者帳號加入這個清單

#restart vsftpd after any change
$ service vsftpd restart

#CHMOD!記得把themes, plugins的權限打開
$ chmod 777 themes
$ chmod 777 plugins

7.Install WordPress

安裝Wordpress反而是最簡單的步驟,設定一下config檔就完成了!

#Linxu can't unzip without "unzip".
$ apt-get install unzip 
$ cd /var/www/html 

#Global version
$ wget http://wordpress.org/latest.zip 
$ unzip latest.zip

#zh-tw version
$ wget http://tw.wordpress.org/wordpress-3.8.1-zh_TW.zip
$ unzip wordpress-3.8.1-zh_TW.zip

8.AWS Security group

記得到AWS的Security Group中,把相關的port打開,例如80(http)21(FTP)等等

最後用putty修改資訊:

1.puttygen 將pem密鑰轉成ppk
2.用putty  連到EC2主機,這邊SSH密鑰選剛剛產生的ppk檔
3.首次登入 帳號amazon linux -> ec2-user , ubuntu linux -> ubuntu
4.# sudo -s(進入root權限,預設為ubuntu)
5.# vi /etc/ssh/sshd_config 讓root也可登入 PermitRootLogin YES #28 開啟密碼驗證 (鍵盤Insert修改)PasswordAuthentication YES (鍵盤Insert修改)(改完後鍵盤esc然後shift+Q進入:模式,並鍵入”W”儲存,然後鍵入”exit”跳出文件)
6.vi /root/.ssh/authorized_keys 刪除下面字段(改完後鍵盤esc然後shift+Q進入:模式,並鍵入”W”儲存,然後鍵入”exit”跳出文件)

command=”echo ‘Please login as the ec2-user user rather than root user.’;echo;sleep 10″

 

完成便可以用SSH免金鑰登入EC2 了 也可用root連SFTP,之後就可以在filezilla操作了。

9.我的ubuntu根目錄放在/var/www/html,並且禁止瀏覽目錄

我們知道如果目錄沒有任何index類別的檔案,就會造成目錄全部呈現,被瀏覽者一覽無遺的話,那就不太好了,所以這邊我們還要改一下apache2.conf這隻檔案,路徑在/etc/apache2裡面,如下:
將引號<Directory /var/www/>裡面這段

	Options Indexes FollowSymLinks
	AllowOverride None
	Require all granted

改成

	Options FollowSymLinks 
	AllowOverride None
	Require all granted

並且增加一段在於下方,讓wp能夠用文章名稱/%postname%/來固定網址:

<Directory /var/www/html>
AllowOverride All
</Directory>

最後別忘了在網站根目錄加上.htaccess這隻檔案(就是wp-admin資料夾同層)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

上傳到根目錄後,記得要把檔案權限改成777,並且到wp後台,設定>固定網址>然後改成 文章名稱 ,並儲存即可完成。

9.修改目錄權限設定

如果要改目錄設定有兩種,在root底下,其一為更改單一目錄夾方式,例如:

sudo chmod -R 777 /var/www/html/uploads/

另外一種則是連同子目錄一起全部更改:

chmod -R 777 /var/www/html/uploads/