平常在用的 HTTP Server 是 nginx ,過去都架設在 Ubuntu 上,靠著 Digital Ocean 網站的詳細教學到也摸出一點心得。想必裝在 Linux Mint 上大致上也差不多,所以也來個依樣畫葫蘆,由於是筆記,所以多少會寫得很顛三倒四。加上本人對 Linux 不夠熟悉,內容若有謬誤還請多多指教。 我使用的 Linux Mint 為 Linux Mint 17 「Qiana」。 Linux Mint 的代號是依照英文字母開頭的順序去取,每一個代號都是女性名稱,並且以a結尾。這一版17版叫做Qiana,上一個版本16版為Petra。預計今年11月推出的17.1版為Rebecca。所以17.1的下一版一定是S開頭a結尾的女性名字。Linux Mint 17 基於 Ubuntu 14.04 LTS (Trusty Tahr),於今年5月31日發表。由於基於Ubuntu的長期支援版本,這一版Linux Mint 17也是長期支援版本,原廠會提供技術支援與更新至2019年4月。如果不是那麼愛變更版本的人,Linux Mint 17一套可以撐5年,加上可免費取得,實在很划算。
Linux Mint 的安裝過程就不說了。而 Linux Mint 也和 Ubuntu 一樣,有多種桌面系統的分支。甚至對應媒體採訪需求,還具備了 no-codecs 的分支。我選擇的是 Cinnamon no-codecs (32-bit) 版,坦白說有無 codecs 只是 100MB 的差別。桌面系統儘管不同,核心是一樣的。安裝過程也不會有太大變化。
至於為什麼選擇nginx + php-fpm + MariaDB,而不是一般的Apache + php + MySQL,這也只是個人的喜好,MariaDB為MySQL的同源表親,是最近很紅的資料庫系統,據說與MySQL的相容性很高,這點讓我很想玩玩看。
再次說明,內容純屬筆記,我只是留個記錄,方便有需要的時候擷取。
首先是安裝 nginx
sudo apt-get update
sudo apt-get install nginx
sudo apt-get install mariadb-server
安裝過程中需要設定 root 密碼(不可空白),另一個問題按Yes就可以了
確認一下 MariaDB 運作情況,順便看看版本。
sudo service mysql status
然後進行安全安裝程式
sudo mysql_secure_installation
首先要輸入 MariaDB 的root 密碼。
接下來會問是否更改 root 密碼,不用改密碼就輸入「N」然後ENTER,接下來分別會問:
- 是否刪除 anonymous(匿名) 使用者帳戶。
- 是否不允許遠端超級用戶登錄
- 是否刪除測試資料庫並接駁它
- 立刻重新載入權限表格
這幾個問題通通Yes過去或ENTER過去就行。
接著安裝PHP
sudo apt-get install php5-fpm php5-mysql
為了更好的安全性,我們需要一個小設定
sudo nano /etc/php5/fpm/php.ini
接著用Ctrl + w 進入搜尋功能,尋找「cgi.fix_pathinfo」
預設為 cgi.fix_pathinfo=0
需改為 cgi.fix_pathinfo=1
打完存檔(Ctrl+o)離開(Ctrl+x)。
php設定結束,將服務重新啟動。
sudo service php5-fpm restart
接著修改 nginx 設定以對應 php-fpm
sudo nano /etc/nginx/sites-available/default
(進入修改前記得備份default這個檔案)
將 index index.html index.htm; 這一行
改成 index index.php index.html index.htm;
將 server_name localhost; 裡的 localhost 改成自己的 IP 或申請的網址(隨便打點什麼也OK)
接著將這部分加入(將原檔中該行前面的 #號 刪除也行)
error_page 404 /404.html;然後在「location ~ \.php$ {」與關門的「}」之間加入下列幾行
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
打完存檔,重新啟動 nginx
sudo service nginx restart
剛剛的default檔當中提到,nginx的網頁目錄為/usr/share/nginx/html/
所以我們要在這麼目錄裡丟下一個含有phpinfo函數的php檔。
sudo nano /usr/share/nginx/html/info.php
在空白檔案中貼上
<?php
phpinfo();
?>
存檔退出
打開瀏覽器,在網址列輸入「http://(你的IP或網址)/info.php)」
如果可以看到php的各種除錯訊息與Server資訊,就表示php可正常運作。
當然,為了安全起見,這個檔案確認可運作後一定要迅速移除,以免有心人掌握你的伺服器情報。
sudo rm /usr/share/nginx/html/info.php
至此, nginx + php-fpm + MariaDB 架設完畢
"Another Note"
sudo apt-get install php5 php5-memcache memcached build-essential
sudo pecl install memcache
sudo apt-get install phpmyadmin
sudo ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html/
sudo service nginx restart
架設Wordpress最新中文版
cd ~
wget http://tw.wordpress.org/latest-zh_TW.tar.gz
tar xzvf latest.tar.gz
mysql -u root -p
CREATE DATABASE (資料庫名);
CREATE USER (使用者帳號)@localhost IDENTIFIED BY '(使用者密碼)';
GRANT ALL PRIVILEGES ON (資料庫名).* TO (帳號)@localhost;
FLUSH PRIVILEGES;
exit
sudo apt-get update
sudo apt-get install php5-gd libssh2-php
cd ~/wordpress
cp wp-config-sample.php wp-config.php
nano wp-config.php
. . .
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpressuser');
/** MySQL database password */
define('DB_PASSWORD', 'password');
. . .
sudo mkdir -p /var/www/html
sudo rsync -avP ~/wordpress/ /var/www/html/
cd /var/www/html/
sudo chown -R (Linux帳號):www-data /var/www/html/*
mkdir wp-content/uploads
sudo chown -R :www-data /var/www/html/wp-content/uploads
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/wordpress
sudo nano /etc/nginx/sites-available/wordpress
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/html;
index index.php index.html index.htm;
server_name your_domain.com;
location / {
# try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
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_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo service nginx restart
sudo service php5-fpm restart
沒有留言:
張貼留言