LAMP(Linux- Apache-MySQL-PHP)網站架構是目前國際流行的Web框架。
Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源碼的網頁服務器,是世界使用排名第一的Web服務器軟件。它能夠運行在幾乎全部普遍使用的計算機平臺上,因爲其跨平臺和安全性被普遍使用,是最流行的Web服務器端軟件之一。
MySQL是一個關係型數據庫,由瑞典AB公司開發,目前屬於 Oracle 旗下產品,中小型數據庫,表過大會出現IO性能瓶頸。
PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸取了C語言、Java和Perl的特色,利於學習,使用普遍,主要適用於Web開發領域。php
yum install -y pcre-devel libxml2 expat-devel zlib zlib-develhtml
wget https://www.apache.org/dist/apr/apr-1.7.0.tar.bz2
tar fx apr-1.7.0.tar.bz2
cd apr-1.7.0
./configure --prefix=/usr/local/apr
make && make installpython
wget https://www.apache.org/dist/apr/apr-util-1.6.1.tar.bz2
tar fx apr-util-1.6.1.tar.bz2
cd apr-util-1.6.1/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
make && make installmysql
wget https://www.apache.org/dist/apr/apr-iconv-1.2.2.tar.bz2
tar fx apr-iconv-1.2.2.tar.bz2
cd apr-iconv-1.2.2/
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make && make installc++
wget https://downloads.apache.org/httpd/httpd-2.4.46.tar.gz
tar fx httpd-2.4.46.tar.gz
cd httpd-2.4.46/
./configure --prefix=/usr/local/apache --enable-mpms-shared=all --with-mpm=event --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-remoteip --enable-proxy --enable-proxy-fcgi --enable-proxy-uwsgi --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache --enable-static-support --enable-static-ab --enable-ssl --disable-userdir --enable-nonportable-atomics --disable-ipv6 --with-sendfile
make && make install
參數說明:git
--prefix:指定安裝路徑 --enable-mpms-shared:啓用MPM全部支持的模式 --with-mpm:默認使用enevt模式 --with-apr:指定apr的安裝路徑 --with-apr-util:指定apr-util的安裝路徑 --enable-so:容許運行時加載DSO模塊 --enable-remoteip:支持基於客戶端IP作訪問控制 --enable-proxy:開啓代理模塊 --enable-proxy-fcgi:支持PHP網站 --enable-proxy-uwsgi:支持python網站 --enable-deflate:開啓壓縮 --enable-expires:開啓客戶端緩存 --enable-rewrite:開啓URL重寫 --enable-cache:開啓服務器緩存 --enable-static-support:支持靜態鏈接 --enable-static-ab:使用靜態鏈接編譯ab --disable-userdir:禁用用戶主目錄提供頁面訪問 --enable-nonportable-atomics:對新式CPU支持 --disable-ipv6:禁用IPV6 --with-sendfile:開啓sendfile 0複製機制 --enable-ssl:開啓ssl
/usr/local/apache/bin/httpdgithub
http://localhost正則表達式
yum -y install ncurses-devel gcc- bzip2- bisonsql
useradd -s /sbin/nologin -r mysql數據庫
wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
tar fx boost_1_59_0.tar.gz
mv boost_1_59_0 /usr/local/boost
wget https://github.com/Kitware/CMake/releases/download/v3.6.0/cmake-3.6.0-Linux-x86_64.tar.gz
tar fx cmake-3.6.0-Linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/cmake-3.6.0-Linux-x86_64/ /usr/local/cmake
vim /etc/profile
CMAKE_HOME=/usr/local/cmake
PATH=$CMAKE_HOME/bin:$PATH
source /etc/profile
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.33.tar.gz
mkdir -p /data/mysql/data
tar fx mysql-boost-5.7.33.tar.gz
cd mysql-5.7.33/
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data/ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=mysql -DWITH_DEBUG=0 -DWITH_EMBEDDED_SERVER=1 -DDOWNLOAD_BOOST=1 -DENABLE_DOWNLOADS=1 -DWITH_BOOST=/usr/local/boost
make && make install
參數說明:
-DCMAKE_INSTALL_PREFIX:指定安裝路徑 -DMYSQL_DATADIR:指定數據目錄 -DMYSQL_UNIX_ADDR:指定sock文件路徑 -DWITH_INNOBASE_STORAGE_ENGINE:安裝Innodb存儲引擎 -DWITH_MYISAM_STORAGE_ENGINE:安裝myisam存儲引擎 -DENABLED_LOCAL_INFILE:容許使用Load data命令從本地導入數據 -DEXTRA_CHARSETS:安裝全部字符集 -DDEFAULT_CHARSET:默認字符集utf-8 -DDEFAULT_COLLATION:校驗字符 -DMYSQL_USER:mysql用戶名 -DWITH_DEBUG:關閉debu -DWITH_EMBEDDED_SERVER:生成一個libmysqld.a(.so)的庫 -DDOWNLOAD_BOOST:容許boost -DENABLE_DOWNLOADS:容許下載boost庫文件 -DWITH_BOOST:指定boost路徑
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
chown mysql.mysql /usr/local/mysql/ -R
chown mysq.mysql /data/mysql
ln -sf /usr/local/mysql/bin/* /usr/bin/
ln -sf /usr/local/mysql/lib/* /usr/lib/
ln -sf /usr/local/mysql/libexec/* /usr/local/libexec
ln -sf /usr/local/mysql/share/man/man1/* /usr/share/man/man1
ln -sf /usr/local/mysql/share/man/man8/* /usr/share/man/man8
vim /etc/my.cnf
[mysqld] datadir=/data/mysql/data socket=/usr/local/mysql/mysql.sock symbolic-links=0 [mysqld_safe] log-error=/var/log/mysql.log pid-file=/var/run/mysql.pid !includedir /etc/my.cnf.d
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/data/
/etc/init.d/mysql start
yum install gcc-c++ libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel gd net-snmp-*
wget https://libzip.org/download/libzip-1.5.2.tar.gz
tar fx libzip-1.5.2.tar.gz
cd libzip-1.5.2/
mkdir build
cd build
cmake ..
make && make install
wget https://www.php.net/distributions/php-7.3.4.tar.bz2
tar fx php-7.3.4.tar.bz2
cd php-7.3.4/
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli=mysqlnd --enable-pdo --with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local/ --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-pcre-regex --with-zlib --with-bz2 --enable-calendar --disable-phar --with-curl --enable-dba --with-libxml-dir --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-jis-conv --with-mhash --enable-mbstring --enable-opcache=yes --enable-pcntl --enable-xml --disable-rpath --enable-shmop --enable-sockets --enable-zip --enable-bcmath --with-snmp --disable-ipv6 --with-gettext --disable-rpath --disable-debug --enable-embedded-mysqli --with-mysql-sock=/usr/local/mysql/ --with-apxs2=/usr/local/apache/bin/apxs
make && make install
參數說明:
---prefix:安裝路徑 --with-config-file-path:配置文件路徑 --with-mysqli:mysql支持及客戶端設置 --enable-pdo:開啓pdo --with-iconv-dir:指定轉碼工具,各類字符集間的轉換 --enable-fpm:支持php-fpm,容許以服務的方式啓動PHP --with-pcre-regex:支持pcre正則表達式 --with-zlib:支持壓縮 --enable-calendar:支持日曆 --disable-phar:關閉PHAR --with-curl:支持curl --enable-dba:開啓dba函數支持 --with-libxml-dir:支持xml文件庫 對xml讀取和查詢 --enable-ftp:支持ftp --with-jpeg-dir:支持圖片 --with-freetype-dir:支持字庫 --enable-gd-jis-conv:支持gd庫 --with-mhash:支持加密 --enable-opcache:開啓opcache --enable-pcntl:開啓PHP進程控制支持 默認是關閉的 --enable-xml:容許xml文件 --disable-rpath:關閉額外的運行庫文件 --enable-shmop:開啓Shmop --enable-sockets:打開 sockets 支持 --enable-bcmath:增長bcmath擴展的支持 --with-snmp:支持snmp --disable-ipv6:關閉IPV6支持 --with-gettext:打開gnu 的gettext 支持,編碼庫用到 --disable-debug:關閉debug --with-apxs2:做爲apache模塊運行
#做爲模塊
cp php.ini-production /usr/local/php/etc/php.ini
vim /usr/local/php/etc/php.ini
[opcache] ;加載模塊 zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20180731/opcache.so ;啓用操做碼緩存 opcache.enable=1 ;共享內存大小,單位MB opcache.memory_consumption=128 ;存儲臨時字符串的內存大小,單位MB opcache.interned_strings_buffer=8 ;哈希表中可存儲的腳本文件數量上限 opcache.max_accelerated_files=4000 ;每隔revalidate_freq 設定的秒數 檢查腳本是否更新 opcache.validate_timestamps=1 ;設置緩存的過時時間 opcache.revalidate_freq=60 ;一次釋放所有請求變量的內存 opcache.fast_shutdown=1 ;若是啓用,則在調用函數file_exists(), is_file() 以及 is_readable() 的時候, 都會檢查操做碼緩存 opcache.enable_file_override=0 ;若是緩存處於非激活狀態,等待多少秒以後計劃重啓 opcache.force_restart_timeout=180
#做爲服務
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
vim /usr/local/php/etc/php-fpm.conf
[global] pid = run/php-fpm.pid error_log = log/php-fpm.log daemonize = yes include=/usr/local/php/etc/php-fpm.d/*.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
vim /usr/local/php/etc/php-fpm.d/www.conf
[www] #開啓php-fpm的執行用戶 user = www #開啓php-fpm的所屬組 group = www #監聽方式,能夠寫成listen = /tmp/php-fcgi.sock listen = 127.0.0.1:9000 #監聽socket listen的用戶 listen.owner = www #監聽socket listen的組 listen.group = www #監聽socket listen權限 listen.mode = 0660 #啓用進程方式 pm = dynamic #最大開啓子進程數 pm.max_children = 5 #開始啓動多少子進程 pm.start_servers = 2 #最小空閒子進程 pm.min_spare_servers = 1 #最多空閒子進程 pm.max_spare_servers = 3 #進程處理多少個請求以後銷燬重建 pm.max_requests = 500 #限定打開最大的文件數 rlimit_files = 1024
/usr/local/php/sbin/php-fpm
vim /usr/local/apache/conf/httpd.conf
LoadModule php7_module modules/libphp7.so AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps <IfModule dir_module> DirectoryIndex index.php index.html </IfModule>
vim /usr/local/apache/htdocs/index.php
<?php phpinfo() ?>
/usr/local/apache/bin/apachectl restart
http:localhost
#tcp sock模式
vim /usr/local/apache/conf/httpd.conf
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so <IfModule dir_module> DirectoryIndex index.php index.html </IfModule> <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch>
#unix sock模式
vim /usr/local/php/etc/php-fpm.d/www.conf
listen = /usr/local/php/etc/php-fpm.socket listen.backlog = 511 listen.owner = www listen.group = www listen.mode = 0660
vim /usr/local/apache/conf/httpd.conf
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so <FilesMatch "\.php$"> SetHandler "proxy:unix:/usr/local/php/etc/php-fpm.socket|fcgi://localhost/" </FilesMatch>