前提:假設閱讀本文的讀者已經擁有基本的linux使用技巧,能夠解決系統安裝問題,以及軟件安裝的技巧。
注意: 本文所涉及的主要安裝包(需要下載使用的)安裝包,在本文最后會給出百度雲盤鏈接,需要使用的,可以自由下載。
建議: 建議先通篇閱讀本文,了解Nginx 各組件之間的關系后再進行安裝,做到胸有大局,然后進行進一步的操作。
安裝所在的機器配置:
- linux 內核版本:2.6.32
- linux 發行版本:CentOS 6.4 64位
- 系統內存: 1G。
- 虛擬機的話建議使用2G。編譯會快點。
百度雲盤:鏈接: http://pan.baidu.com/s/1o8SyQ2e 密碼: i6hk
0、 添加軟件運行所需的用戶
groupadd nginx
useradd -g nginx nginx
groupadd mysql
useradd -g mysql mysql
1、安裝gcc 和c++ 編譯器。
yum -y install gcc gcc-c++
2、了解依賴關系
nginx 需要第三方庫的支持:
gzip 用來壓縮網頁。gzip 需要 zlib庫。
rewrite 用來實現網頁重定向的功能。 rewrite 需要 pcre(Perl Compatible Regular Expression)庫。
ssl 是一個加密庫。如https.ssl 功能需要 openssl庫
3、解決nginx依賴關系
yum -y install \
zlib \
zlib-devel \
openssl \
openssl-devel \
pcre pcre-devel
那么既然已經安裝了 zlib openssl pcere 包為什么還要安裝 zlib-devel 等包呢?
devel 包主要是供開發使用的,包里面至少包括以下2個東西。
1、頭文件
2、鏈接庫
以zlib 和 zlib-devel 為例.
如果你安裝的是基於zlib 開發的程序,只需要安裝zlib就行。
如果你要你變使用了glib的源代碼,則需要使用glib-devel。
本文中我們要先安裝zlib,由於不確定我們機器里面有沒有這個庫,所以就一並將zlib-devel安裝上了。
由於yum會自動解決依賴,所以即使沒有安裝-devel,應該也會自己安裝。作為了解原理,建議大家還是手動安裝。
4、安裝nginx
mkdir -p /usr/local/webserver/source
cd /usr/local/webserver/source
從文后的百度雲盤中下載nginx-1.8.0.tar.gz 文件。
tar -xf nginx-1.8.0.tar.gz //解壓文件
cd nginx-1.8.0
./configure --help //查看編譯
選項
4.1 配置nginx
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module
4.2 安裝nginx
make && make install
/usr/local/webserver/nginx/sbin/nginx -V //查看nginx的版本信息
/usr/local/webserver/nginx/sbin/nginx -h //查看nginx的幫助信息
/usr/local/webserver/nginx/sbin/nginx //啟動nginx
打開瀏覽器,輸入linux的ip。可以看到歡迎的信息。
/usr/local/webserver/nginx/sbin/nginx -s stop //關閉nginx
/usr/local/webserver/nginx/sbin/nginx //重新啟動,以便后續操作。
5、安裝mysql
5.1、 解決mysql的安裝依賴
cmake 用來編譯mysql,所以要先下載cmake。
ncurses 和 ncurses-devel 是mysql的字符終端處理庫。
yum -y install cmake ncurses ncurses-devel
5.2 、 安裝mysql
下載文后網盤中的mysql-5.6.24.tar.gz 文件至 /usr/local/webserver/source
tar -xf mysql-5.6.24.tar.gz // 解壓mysql
cd /usr/local/webserver/source/mysql-5.6.24
查看編譯選項:http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html。
5.3、編譯配置mysql:
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql \
-DMYSQL_DATADIR=/usr/local/webserver/mysql/data \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
以下為編譯選項解釋
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql \ //mysql的安裝路徑
-DMYSQL_DATADIR=/usr/local/webserver/mysql/data \ //mysql的表數據存儲路徑
-DWITH_MYISAM_STORAGE_ENGINE=1 \ //裝載MYISAM存儲引擎。注:mysql的存儲引擎是插件化的。需要按需加載。
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ //裝載INNODB存儲引擎。
-DWITH_MEMORY_STORAGE_ENGINE=1 \ // 裝載 memory引擎,該引擎並不常用。
-DWITH_READLINE=1 \ // 不知道這是什么意思。
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \ //mysql 的sock文件路徑。
-DMYSQL_TCP_PORT=3306 \ //mysql的監聽端口,默認3306.
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \ //默認的字符集為utf8
-DDEFAULT_COLLATION=utf8_general_ci
執行編譯: make && make install
我這里用單核的服務器使用了整整20分鍾,虛擬機可能要30分鍾以上。耐心等待,不要執行其他操作,此時cpu處於99%的滿載狀態。
5、4 創建mysql自帶的數據庫
/usr/local/webserver/mysql/scripts
./scripts/mysql_install_db \
--basedir=/usr/local/webserver/mysql \
--datadir=/usr/local/webserver/mysql/data \
--user=mysql
5、5 啟動mysql
設置開機啟動:
/usr/local/webserver/mysql/support-files
cp ./mysql.server /etc/init.d/mysql //復制到系統自啟動目錄。
chkconfig mysql on //設置開機啟動
service mysql start //啟動MySQL
PATH=/usr/local/webserver/mysql/bin/:$PATH //將mysql命令設置到全局命令路徑中
export PATH //將PATH設置為全局變量
source /etc/profile //重新載入系統配置
5.6 測試mysql
mysql -u root
set password = password('密碼') //設置密碼
exit //退出
//之后的測試就不講了。
6、安裝php
6.1、解決環境依賴
yum -y install libxml2 libxml2-devel
yum -y install libcurl libcurl-devel
6.2、 安裝php
下載文后所示網盤中的 php-5.6.24.tar.gz 文件至/usr/local/webserver/source
cd /usr/local/webserver/source
tar -xf php-5.6.24.tar.gz
cd /usr/local/webserver/source/php-5.6.24
./configure --help //查看下配置項
配置項如下:
./configure \
--prefix=/usr/local/webserver/php \
--enable-fpm \
--with-config-file-path=/usr/local/webserver/php/conf \
--with-zlib \
--with-curl \
--enable-mysqlnd \
--enable-pdo \
--enable-mbstring \
--with-mysql=/usr/local/webserver/mysql \
--with-pdo-mysql=mysqlnd \
--with-openssl-dir \
--disable-fileinfo
make && make install
6.3、配置php
cd /usr/local/webserver/php
mkdir conf
/usr/local/webserver/source/php-5.6.24/php.ini-development ./conf/php.ini //復制配置
cd /usr/local/webserver/php/etc
mv php-fpm.conf.default php-fpm.conf
ls /usr/local/webserver/source/php-5.6.24/sapi/fpm/php-fpm /usr/local/bin/
php-fpm -h //查看php的配置信息
php-fpm -m //查看加載了那些模塊
7、關聯php 與nginx
修改nginx配置,使其支持php后綴的文件。
//約52行 65行。
location / {
root html;
index index.php index.html index.htm;
}
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
修改php的配置,修改時間選項。
//約925行
date.timezone = Asia/Shanghai //你不在上海也填上海。這個指的是時區。
8、將執行命令放置進/usr/local/bin 下。變成快捷命令
ln -s /usr/local/webserver/nginx/sbin/nginx /usr/local/bin/
ln -s /usr/local/webserver/php/sbin/php-fpm /usr/local/bin/
cd /
執行 nginx
執行 php-fpm
cd /usr/local/webserver/nginx/html/
mv index.html index.php
寫一個phpinfo(); 的函數。去瀏覽器看下效果。
9、備注:
以上,已經將nginx 、php 、mysql 三者結合在了一起。如果你已經按照上面的提示安裝成功,那么恭喜你,你運氣真好。實踐的過程中,可能會遇到各種各樣的報錯,一定要詳細的看報錯的信息,根據報錯的信息去安裝相應的組件。每個人的機器不同,可能報錯的類別也不一樣,遇到報錯的歡迎大家到評論區提問,共同研討,共同提高。
這篇文章的目的在於讓大家了解到nginx 、php 、mysql三者之間的組合關系。本文中沒有安裝GD庫,Reids 和 Memcache 等庫。這留在后續的文章中逐步的去講。如何讓php通過打補丁(phpize)的方式將未加的組件編譯進來。