W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
PHP(Hypertxt Preprocessor,超文本預(yù)處理器)是一種通用的開源腳本語言,發(fā)明于1995年,它吸取了C語言、Java語言及Perl語言的很多優(yōu)點(diǎn),具有開源、免費(fèi)、快捷、跨平臺性強(qiáng)、效率高等優(yōu)良特性,是目前Web開發(fā)領(lǐng)域最常用的語言之一。本書的配套站點(diǎn)就是基于PHP語言編寫的。
使用源碼包的方式編譯安裝PHP語言環(huán)境其實并不復(fù)雜,難點(diǎn)在于解決PHP的程序包和其他軟件的依賴關(guān)系。為此需要先安裝部署將近十個用于搭建網(wǎng)站頁面的軟件程序包,然后才能正式安裝PHP程序。
yasm源碼包是一款常見的開源匯編器,其解壓、編譯、安裝過程中生成的輸出信息均已省略:
[root@linuxprobe nginx-1.6.0]# cd ..
[root@linuxprobe src]# tar zxvf yasm-1.2.0.tar.gz
[root@linuxprobe src]# cd yasm-1.2.0
[root@linuxprobe yasm-1.2.0]# ./configure
[root@linuxprobe yasm-1.2.0]# make
[root@linuxprobe yasm-1.2.0]# make install
libmcrypt源碼包是用于加密算法的擴(kuò)展庫程序,其解壓、編譯、安裝過程中生成的輸出信息均已省略:
[root@linuxprobe yasm-1.2.0]# cd ..
[root@linuxprobe src]# tar zxvf libmcrypt-2.5.8.tar.gz
[root@linuxprobe src]# cd libmcrypt-2.5.8
[root@linuxprobe libmcrypt-2.5.8]# ./configure
[root@linuxprobe libmcrypt-2.5.8]# make
[root@linuxprobe libmcrypt-2.5.8]# make install
libvpx源碼包是用于提供視頻編碼器的服務(wù)程序,其解壓、編譯、安裝過程中生成的輸出信息均已省略。相信會有很多粗心的讀者順手使用了tar命令的xzvf參數(shù),但如果仔細(xì)觀察就會發(fā)現(xiàn)libvpx源碼包的后綴是.tar.bz2,即表示使用bzip2格式進(jìn)行的壓縮,因此正確的解壓參數(shù)應(yīng)該是xjvf:
[root@linuxprobe libmcrypt-2.5.8]# cd ..
[root@linuxprobe src]# tar xjvf libvpx-v1.3.0.tar.bz2
[root@linuxprobe src]# cd libvpx-v1.3.0
[root@linuxprobe libvpx-v1.3.0]# ./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9
[root@linuxprobe libvpx-v1.3.0]# make
[root@linuxprobe libvpx-v1.3.0]# make install
tiff源碼包是用于提供標(biāo)簽圖像文件格式的服務(wù)程序,其解壓、編譯、安裝過程中生成的輸出信息均已省略:
[root@linuxprobe libvpx-v1.3.0]# cd ..
[root@linuxprobe src]# tar zxvf tiff-4.0.3.tar.gz
[root@linuxprobe src]# cd tiff-4.0.3
[root@linuxprobe tiff-4.0.3]# ./configure --prefix=/usr/local/tiff --enable-shared
[root@linuxprobe tiff-4.0.3]# make
[root@linuxprobe tiff-4.0.3]# make install
libpng源碼包是用于提供png圖片格式支持函數(shù)庫的服務(wù)程序,其解壓、編譯、安裝過程中生成的輸出信息均已省略:
[root@linuxprobe tiff-4.0.3]# cd ..
[root@linuxprobe src]# tar zxvf libpng-1.6.12.tar.gz
[root@linuxprobe src]# cd libpng-1.6.12
[root@linuxprobe libpng-1.6.12]# ./configure --prefix=/usr/local/libpng --enable-shared
[root@linuxprobe libpng-1.6.12]# make
[root@linuxprobe libpng-1.6.12]# make install
freetype源碼包是用于提供字體支持引擎的服務(wù)程序,其解壓、編譯、安裝過程中生成的輸出信息均已省略:
[root@linuxprobe libpng-1.6.12]# cd ..
[root@linuxprobe src]# tar zxvf freetype-2.5.3.tar.gz
[root@linuxprobe src]# cd freetype-2.5.3
[root@linuxprobe freetype-2.5.3]# ./configure --prefix=/usr/local/freetype --enable-shared
[root@linuxprobe freetype-2.5.3]# make
[root@linuxprobe freetype-2.5.3]# make install
jpeg源碼包是用于提供jpeg圖片格式支持函數(shù)庫的服務(wù)程序,其解壓、編譯、安裝過程中生成的輸出信息均已省略:
[root@linuxprobe freetype-2.5.3]# cd ..
[root@linuxprobe src]# tar zxvf jpegsrc.v9a.tar.gz
[root@linuxprobe src]# cd jpeg-9a
[root@linuxprobe jpeg-9a]# ./configure --prefix=/usr/local/jpeg --enable-shared
[root@linuxprobe jpeg-9a]# make
[root@linuxprobe jpeg-9a]# make install
libgd源碼包是用于提供圖形處理的服務(wù)程序,其解壓、編譯、安裝過程中生成的輸出信息均已省略。在編譯libgd源碼包時,請記得寫入的是jpeg、libpng、freetype、tiff、libvpx等服務(wù)程序在系統(tǒng)中的安裝路徑,即在上面安裝過程中使用--prefix參數(shù)指定的目錄路徑:
[root@linuxprobe jpeg-9a]# cd ..
[root@linuxprobe src]# tar zxvf libgd-2.1.0.tar.gz
[root@linuxprobe src]# cd libgd-2.1.0
[root@linuxprobe libgd-2.1.0]# ./configure --prefix=/usr/local/libgd --enable-shared --with-jpeg=/usr/local/jpeg --with-png=/usr/local/libpng --with-freetype=/usr/local/freetype --with-fontconfig=/usr/local/freetype --with-xpm=/usr/ --with-tiff=/usr/local/tiff --with-vpx=/usr/local/libvpx
[root@linuxprobe libgd-2.1.0]# make
[root@linuxprobe libgd-2.1.0]# make install
t1lib源碼包是用于提供圖片生成函數(shù)庫的服務(wù)程序,其解壓、編譯、安裝過程中生成的輸出信息均已省略。安裝后把/usr/lib64目錄中的函數(shù)文件鏈接到/usr/lib目錄中,以便系統(tǒng)能夠順利調(diào)取到函數(shù)文件:
[root@linuxprobe cd libgd-2.1.0]# cd ..
[root@linuxprobe src]# tar zxvf t1lib-5.1.2.tar.gz
[root@linuxprobe src]# cd t1lib-5.1.2
[root@linuxprobe t1lib-5.1.2]# ./configure --prefix=/usr/local/t1lib --enable-shared
[root@linuxprobe t1lib-5.1.2]# make
[root@linuxprobe t1lib-5.1.2]# make install
[root@linuxprobe t1lib-5.1.2]# ln -s /usr/lib64/libltdl.so /usr/lib/libltdl.so
[root@linuxprobe t1lib-5.1.2]# cp -frp /usr/lib64/libXpm.so* /usr/lib/
此時終于把編譯php服務(wù)源碼包的相關(guān)軟件包都已經(jīng)安裝部署妥當(dāng)了。在開始編譯php源碼包之前,先定義一個名為LD_LIBRARY_PATH的全局環(huán)境變量,該環(huán)境變量的作用是幫助系統(tǒng)找到指定的動態(tài)鏈接庫文件,這些文件是編譯php服務(wù)源碼包的必須元素之一。編譯php服務(wù)源碼包時,除了定義要安裝到的目錄以外,還需要依次定義配置php服務(wù)程序配置文件的保存目錄、MySQL數(shù)據(jù)庫服務(wù)程序所在目錄、MySQL數(shù)據(jù)庫服務(wù)程序配置文件所在目錄,以及l(fā)ibpng、jpeg、freetype、libvpx、zlib、t1lib等服務(wù)程序的安裝目錄路徑,并通過參數(shù)啟動php服務(wù)程序的諸多默認(rèn)功能:
[root@linuxprobe t1lib-5.1.2]# cd ..
[root@linuxprobe src]# tar -zvxf php-5.5.14.tar.gz
[root@linuxprobe src]# cd php-5.5.14
[root@linuxprobe php-5.5.14]# export LD_LIBRARY_PATH=/usr/local/libgd/lib
[root@linuxprobe php-5.5.14]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/ --with-vpx-dir=/usr/local/libvpx/ --with-zlib-dir=/usr/local/zlib --with-t1lib=/usr/local/t1lib --with-iconv --enable-libxml --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-opcache --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --enable-ctype
[root@linuxprobe php-5.5.14]# make
[root@linuxprobe php-5.5.14]# make install
在php源碼包程序安裝完成后,需要刪除當(dāng)前默認(rèn)的配置文件,然后將php服務(wù)程序目錄中相應(yīng)的配置文件復(fù)制過來:
[root@linuxprobe php-5.5.14]# rm -rf /etc/php.ini
[root@linuxprobe php-5.5.14]# ln -s /usr/local/php/etc/php.ini /etc/php.ini
[root@linuxprobe php-5.5.14]# cp php.ini-production /usr/local/php/etc/php.ini
[root@linuxprobe php-5.5.14]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@linuxprobe php-5.5.14]# ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf
php-fpm.conf是php服務(wù)程序重要的配置文件之一,我們需要啟用該配置文件中第25行左右的pid文件保存目錄,然后分別將第148和149行的user與group參數(shù)分別修改為www賬戶和用戶組名稱:
[root@linuxprobe php-5.5.14]# vim /usr/local/php/etc/php-fpm.conf
1 ;;;;;;;;;;;;;;;;;;;;;
2 ; FPM Configuration ;
3 ;;;;;;;;;;;;;;;;;;;;;
4
5 ; All relative paths in this configuration file are relative to PHP's instal l
6 ; prefix (/usr/local/php). This prefix can be dynamically changed by using t he
7 ; '-p' argument from the command line.
8
9 ; Include one or more files. If glob(3) exists, it is used to include a bunc h of
10 ; files from a glob(3) pattern. This directive can be used everywhere in the
11 ; file.
12 ; Relative path can also be used. They will be prefixed by:
13 ; - the global prefix if it's been set (-p argument)
14 ; - /usr/local/php otherwise
15 ;include=etc/fpm.d/*.conf
16
17 ;;;;;;;;;;;;;;;;;;
18 ; Global Options ;
19 ;;;;;;;;;;;;;;;;;;
20
21 [global]
22 ; Pid file
23 ; Note: the default prefix is /usr/local/php/var
24 ; Default Value: none
25 pid = run/php-fpm.pid
26
………………省略部分輸出信息………………
145 ; Unix user/group of processes
146 ; Note: The user is mandatory. If the group is not set, the default user's g roup
147 ; will be used.
148 user = www
149 group = www
150
………………省略部分輸出信息………………
配置妥當(dāng)后便可把用于管理php服務(wù)的腳本文件復(fù)制到/etc/rc.d/init.d中了。為了能夠執(zhí)行腳本,請記得為腳本賦予755權(quán)限。最后把php-fpm服務(wù)程序加入到開機(jī)啟動項中:
[root@linuxprobe php-5.5.14]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@linuxprobe php-5.5.14]# chmod 755 /etc/rc.d/init.d/php-fpm
[root@linuxprobe php-5.5.14]# chkconfig php-fpm on
由于php服務(wù)程序的配置參數(shù)直接會影響到Web服務(wù)服務(wù)的運(yùn)行環(huán)境,因此,如果默認(rèn)開啟了一些不必要且高危的功能(如允許用戶在網(wǎng)頁中執(zhí)行Linux命令),則會降低網(wǎng)站被入侵的難度,入侵人員甚至可以拿到整臺Web服務(wù)器的管理權(quán)限。因此我們需要編輯php.ini配置文件,在305行的disable_functions參數(shù)后面追加上要禁止的功能。下面的禁用功能名單是劉遄老師依據(jù)網(wǎng)站運(yùn)行的經(jīng)驗而定制的,不見得適合每個生產(chǎn)環(huán)境,建議大家在此基礎(chǔ)上根據(jù)自身工作需求酌情刪減:
[root@linuxprobe php-5.5.14]# vim /usr/local/php/etc/php.ini
………………省略部分輸出信息………………
300
301 ; This directive allows you to disable certain functions for security reasons.
302 ; It receives a comma-delimited list of function names. This directive is
303 ; *NOT* affected by whether Safe Mode is turned On or Off.
304 ; http://php.net/disable-functions
305 disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restor e,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,g etservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,po six_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_ getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_ setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
306
………………省略部分輸出信息………………
這樣就把php服務(wù)程序配置妥當(dāng)了。最后,還需要編輯Nginx服務(wù)程序的主配置文件,把第2行的井號(#)刪除,然后在后面寫上負(fù)責(zé)運(yùn)行Nginx服務(wù)程序的賬戶名稱和用戶組名稱;在第45行的index參數(shù)后面寫上網(wǎng)站的首頁名稱。最后是將第65~71行參數(shù)前的井號(#)刪除來啟用參數(shù),主要是修改第69行的腳本名稱路徑參數(shù),其中$document_root變量即為網(wǎng)站信息存儲的根目錄路徑,若沒有設(shè)置該變量,則Nginx服務(wù)程序無法找到網(wǎng)站信息,因此會提示“404頁面未找到”的報錯信息。在確認(rèn)參數(shù)信息填寫正確后便可重啟Nginx服務(wù)與php-fpm服務(wù)。
[root@linuxprobe php-5.5.14]# vim /usr/local/nginx/conf/nginx.conf
1
2 user www www;
3 worker_processes 1;
4
5 #error_log logs/error.log;
6 #error_log logs/error.log notice;
7 #error_log logs/error.log info;
8
9 #pid logs/nginx.pid;
10
11
………………省略部分輸出信息………………
40
41 #access_log logs/host.access.log main;
42
43 location / {
44 root html;
45 index index.html index.htm index.php;
46 }
47
………………省略部分輸出信息………………
62
63 #pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
64
65 location ~ \.php$ {
66 root html;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
70 include fastcgi_params;
71 }
72
………………省略部分輸出信息………………
[root@linuxprobe php-5.5.14]# systemctl restart nginx
[root@linuxprobe php-5.5.14]# systemctl restart php-fpm
至此,LNMP動態(tài)網(wǎng)站環(huán)境架構(gòu)的配置實驗全部結(jié)束。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: