企業級LNMP(Nginx+PHP(FastCGI)+MySQL)主流架構配置php
Apache web服務器,發佈web靜態頁面,Nginx web服務器,發佈靜態頁面; 靜態頁面:與數據庫沒有交互代碼,不更新,html、css、js、xml、png、jpg、 jpeg、txt; 動態頁面:與數據庫有交互,隨着數據庫變化而更新,php、jsp、do、cgi、 asp、aspx; PHP,一門語言,解釋型語言,PHP模塊直接解析.php結尾的文件; MySQL數據庫,關係型數據庫,由各類表格組成,每張表由不一樣的列,不一樣的行組 成;(Redis內存數據庫,nosql,高鍵值對Key-Values); LNMP用於企業發佈PHP動態網站+靜態網站,而且鏈接數據庫服務器,必要的數據 (員工姓名、密碼、工資條、訂單)存入數據庫; 公共網關接口」(Common Gateway Interface,CGI),是HTTP服務器與本機或者 其它機器上的程序進行通訊的一種工具,其程序須運行在網絡服務器上。 CGI能夠用任何一種語言編寫,只要這種語言具備標準輸入、輸出和環境變量,如 php、perl、tcl等。 FAST-CGI:WEB服務器與處理程序之間通訊的一種協議(App server 和Web server 之間的通訊協議),是CGI的改進方案。CGI程序反覆加載是CGI性能低下的主要原 因,若是CGI程序保持在內存中並接受FastCGI進程管理器調度,則能夠提供良好的 性能、伸縮性、Fail-Over特性等。FastCGI是常駐型的CGI,它能夠一直運行,在請 求到達時,不會花費時間去fork一個進程來處理。 FastCGI是語言無關的、可伸縮架構的CGI開放擴展,將CGI解釋器進程保持在內存 中,以此得到較高的性能。FastCGI是一個協議,php-fpm實現了這個協議,php-fpm 的FastCGI協議須要有進程池,php-fpm實現的FastCGI進程叫php-cgi,因此php-fpm 實際上是他自身的FastCGI或php-cgi進程管理器,php-cgi是CGI協議的實現,由於以前 沒有更新Fastcgi,而是使用原有的通用網關接口,而衍生出的進程。 CGI 就是一個接口,它定義好了本身的輸入和輸出, php-cgi 則是對這個接口的一種 實現, Fastcgi 則是對 cgi 實現的一個性能優化版本。 PHP-CGI是PHP自帶的CGI管理器。 如圖14-5所示: 對於CGI來講,每個Web請求PHP都必須從新解析php.ini、從新載入所有擴展, 並重初始化所有數據結構。而使用FastCGI,全部這些都只在進程啓動時發生一 次。一個額外的好處是,持續數據庫鏈接(Persistent database connection)能夠工做。 因爲FastCGI是多進程,因此比CGI多線程消耗更多的服務器內存,php-cgi解釋器每 進程消耗7至25兆內存,將這個數字乘以50或100就是很大的內存數。
一、Nginx安裝配置css
安裝PCRE庫和基礎庫支持: yum install pcre-devel pcre gcc-c++ openssl openssl-devel -y cd /usr/src 下載Nginx源碼包: http://nginx.org/download/nginx-1.19.2.tar.gz tar -xzf nginx-1.19.2.tar.gz cd nginx-1.19.2 預編譯Nginx: useradd www ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module 編譯成功後,執行make命令進行編譯 make make 執行成功後,執行make install正式安裝 make install 檢查nginx配置文件是否正確,返回OK即正確。 /usr/local/nginx/sbin/nginx -t 回車便可。查看進程是否已啓動: 而後啓動nginx,/usr/local/nginx/sbin/nginx
MySQL安裝(搭着玩就用MySQL5了、有須要能夠下載新版本)
其餘版本下載地址:https://downloads.mysql.com/archives/community/html
yum install cmake ncurses-devel ncurses libaio bison git -y cd /usr/src wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.5.20.tar.gz tar -xzf mysql-5.5.20.tar.gz cd mysql-5-5.20 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DMYSQL_DATADIR=/data/mysql \ -DSYSCONFDIR=/etc \ -DMYSQL_USER=mysql \ -DMYSQL_TCP_PORT=3306 \ -DWITH_XTRADB_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_EXTRA_CHARSETS=1 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=all \ -DWITH_BIG_TABLES=1 \ -DWITH_DEBUG=0 make && make install cd /usr/local/mysql/ \cp -f support-files/my-large.cnf /etc/my.cnf \cp -f support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld chkconfig --level 35 mysqld on mkdir -p /data/mysql useradd mysql /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql/ ln -s /usr/local/mysql/bin/* /usr/bin/ service mysqld restart
(3) PHP安裝配置mysql
wget http://museum.php.net/php5/php-5.6.9.tar.gz yum -y install gd curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel tar -xzf php-5.6.9.tar.gz cd php-5.6.9 ./configure --prefix=/usr/local/php5 --enable-fpm --enable-debug --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --with-curl --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config --disable-fileinfo make make install cp php.ini-development /usr/local/php5/lib/php.ini cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf cp /usr/src/php-5.6.9/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod 755 /etc/init.d/php-fpm chkconfig --add php-fpm chkconfig php-fpm on php-fpm.conf是php服務程序重要的配置文件之一,咱們須要啓用該配置文件中第 25行左右的pid文件保存目錄,而後分別將第148和149行的user與group參數分別 修改成www帳戶和用戶組名稱: # vim /usr/local/php5/etc/php-fpm.conf 1 ;;;;;;;;;;;;;;;;;;;;; 2 ; FPM Configuration ; 3 ;;;;;;;;;;;;;;;;;;;;; 23 ; Note: the default prefix is /usr/local/php/var 24 ; Default Value: none 25 pid = run/php-fpm.pid ………………省略部分輸出信息……………… 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 ………………省略部分輸出信息………………
(4) Nginx配置文件配置nginx
cat >/usr/local/nginx/conf/nginx.conf events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server { listen 80; server_name localhost; location / { root /usr/local/nginx/html; index index.html index.php; } location ~ \.php$ { root html; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000;# 指定了fastcgi進程偵聽的端口,nginx就是經過這裏與php交互的 fastcgi_index index.php;#腳本請求的前綴名 fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; #腳本文件請求的路徑 include fastcgi_params; } } } cat >/usr/local/nginx/html/index.php<<EOF <?php phpinfo(); ?> EOF 重啓php服務 service php-fpm restart 檢測Nginx服務參數 /usr/local/nginx/sbin/nginx –t 啓動nginx服務參數 /usr/local/nginx/sbin/nginx
測試LNMP架構測試,建立index.php測試頁面,如圖c++
(1)Discuz PHP論壇安裝
LAMP源碼整合完畢以後,Dicuz官網下載Discuz開源PHP軟件包,將軟件包解壓併發布在Nginx Htdocs發佈目錄,代碼以下:git
cd /usr/src ; wget http://download.comsenz.com/DiscuzX/3.1/Discuz_X3.1_SC_UTF8.zip unzip Discuz_X3.1_SC_UTF8.zip -d /usr/local/nginx/html cd /usr/local/nginx/html mv upload/* /usr/local/nginx/html chmod 757 -R data/ uc_server/ config/ uc_client/ 從新啓動nginx MYSQL數據庫命令行中建立PHP鏈接MYSQL的用戶及密碼,命令以下: create database discuz charset=utf8; grant all on discuz.* to root@'localhost' identified by "123456"; flush privileges; 訪問IP地址 進行論壇的訪問,配置discuz論壇設置數據庫。 數據庫服務器地址填寫本機的地址 數據庫名字填寫在主數據庫建立的discuz 用戶名填寫數據庫用戶名root 數據庫密碼123456
配置成功後能夠看到以下web
PHP安裝模塊
如下爲php擴展openssl模塊案例sql
一、個人源碼在 /home/topsec/Documents/php-7.0.11 安裝位置在 /usr/local/php7 php.ini 在/ usr/local/php7/lib 下。若是沒有php.ini須要把源碼中的配置文件 php.ini-development 或php.ini-production更名成php.ini並放在lib下。 二、進入openssl的擴展目錄 :/home/topsec/Documents/php-7.0.11/ext/openssl 三、運行phpize /usr/local/php7/bin/phpize 使用phpize生產configure文件 四、執行安裝 ./configure --with-openssl --with-php-config=/usr/local/php7/bin/php-config make&&make install 五、過程當中可能出現libssl找不到,執行下面的命令再從新執行四、執行安裝 yum install openssl yum install openssl-devel 六、執行安裝後,會提示在某個目錄生成.so文件,我生成的位置在 /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/ 下 七、打開php.ini vim /usr/local/php7/lib/php.ini extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/" extension=openssl.so 八、重啓php