Linux ubuntu 16.04 LTS
,下載地址Nginx nginx-1.12.0
,下載地址PHP php-7.1.4
,下載地址MySQL mysql-5.7.18
,下載地址php
在運行全部命令以前,請執行 apt-get update
html
因爲採用源碼包編譯安裝,因此須要一個 c
編譯器,若是提示爲找到 c
編譯器,那麼請執行 sudo apt-get install gcc
命令安裝 c compiler
。可是你可能會碰到仍然找不到 c compiler cc
的狀況,請執行:apt-get install build-essential
mysql
編譯安裝所須要的軟件包,須要 make
依賴:linux
sudo apt-get install make
nginx
依賴的環境包:Pcre pcre-8.40
,下載地址(有可能出現安裝了也仍然提示未找到,apt-get install libpcre3-dev
,詳情請看)Pcre2 pcre2-10.23
,下載地址zLib zlib-1.2.11
,下載地址nginx
php
依賴的環境包:libssl-dev
,安裝方法:apt-get install libssl-dev
libxml2-dev
,安裝方法:apt-get install libxml2-dev
libcurl4-gnutls-dev
,安裝方法:sudo apt-get install libcurl4-gnutls-dev
libzip-dev
安裝方法:apt install libzip-dev
web
php gd
庫須要的依賴:redis
libpng-dev
(apt-get install libpng-dev
)libjpeg-dev
(apt-get install libjpeg-dev
)libxpm-dev
(apt-get install libxpm-dev
)apt-get install libfreetype6-dev
另外,若是缺乏什麼 .h
這類的頭文件,請根據錯誤提示,例如 apt-get install libfreetype*
或 *freetype*
這樣安裝解決!sql
系統升級到 ubuntu 17.07 php 升級到 php-7.1.8 這個時候會報錯:libcurl 問題 find /usr -iname '*curl*' // 建立一個軟鏈接(系統升級致使 curl 默認路徑改了,php 找不到了.....) ln -s /usr/include/x86-linux-...../curl /usr/include/curl
php 編譯安裝擴展 phpize 命令
依賴的依賴包m4
,安裝方法:apt-get install m4
autoconf
,安裝方法:apt-get install autoconf
thinkphp
mysql
依賴的包:libaio1
,安裝方法:apt-get install libaio1
ubuntu
若是出現 libpcre.so.1
找不到的錯誤,請手動連接:sudo ln -s /usr/local/lib/libpcre.so.1 /lib/libpcre.so.1
sudo tar -zxvf nginx-1.12.0.tar.gz cd nginx-1.12.0 sudo ./configure # 這個目錄要本身事先建立好 --prefix=/usr/local/WebEnvironment/Nginx/Web-1.12.0/Nginx-1.12.0 # 支持 tcp/udp 負載均衡 --with-stream sudo make sudo make install
// 修改運行用戶 user root; // 修改日誌文件路徑 error_log logs/error.log; http { // 加大上傳文件大小限制 client_max_body_size 2048M; // 加大 nginx 等待 php cgi響應的時間 fastcgi_read_timeout 3600s; // 新增自定義配置文件路徑(省得在默認配置文件中新增數據) include 'vhost/*.conf'; }
而後在 vhost
目錄下,建立 www.conf
配置文件:
server { server_name test.com; listen 80; index index.html; root /myself/web/test; location / { autoindex on; } }
cd /usr/local/WebEnvironment/Nginx/Web-1.12.0/Nginx-1.12.0/conf sudo gedit nginx.conf # 修改配置文件,添加 域名(具體看 windows 下 nginx.conf 配置文件) sudo gedit /etc/hosts # 修改 hosts 文件,添加相應域名 cd ../sbin sudo ./nginx # 便可!不要 sudo start ./nginx ,他會提示報錯的。
瀏覽器打開域名查看結果。
tar -zxvf php-7.1.4.tar.gz cd php-7.1.4 sudo ./configure // php 主體文件所在目錄 --prefix=/usr/local/WebEnv/php-7.1.4 // 默認配置文件在 ./lib 目錄下 // 注意這裏是目錄!! // 請不要使用這個編譯選項,php 安裝完成後,請使用 php --ini // 查看配置文件路徑,而後修改。即推薦使用默認路徑 // --with-config-file-path=/usr/local/webEnv/php-7.1.4 --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-tsrm-pthreads --with-curl --with-gd --with=swoole // 注意如下四個選項,須要提早安裝相關依賴! // 最後 freetype 這個選項,請使用 find / -iname 'freetype*' 來查找具體位置 // 如下注釋掉的 php 編譯選項再也不須要,php 會自動查找 // --with-png-dir=/usr/lib // --with-jpeg-dir=/usr/lib // --with-xmp-dir=/usr/lib // --with-freetype-dir=/usr/local/include/freetype2 --enable-mbstring --enable-ftp --enable-pcntl --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-zip --enable-sockets --enable-mysqlnd --enable-bcmath --enable-maintainer-zts --enable-fpm sudo make sudo make install 簡化版命令(可直接運行): ./configure --prefix=/usr/local/WebEnv/php-7.1.4 --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-tsrm-pthreads --with-curl --with-gd --with=swoole --enable-mbstring --enable-ftp --enable-pcntl --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-zip --enable-sockets --enable-mysqlnd --enable-bcmath --enable-maintainer-zts --enable-fpm && make && make install
須要複製 php
壓縮包解壓後的 php.ini-production
到 /usr/local/WebEnvironment/PHP-7.2.0/lib/php.ini
// 增長上傳文件大小 post_max_size = 2048M // 單個上傳文件的最大大小 upload_max_filesize = 10M // 單次最大上傳文件數量 max_file_uploads = 200 // 設置擴展路徑 extension_dir = "/usr/local/WebEnvironment/PHP-7.2.0/extensions" // 添加自定義擴展 extension = redis.so // php 事件擴展 extension = ev.so extension = gd.so // 設置時區 date.timezone = PRC // 設置 php 最大佔用內存 memory_limit = 512M // 打開錯誤提示 display_errors = On
基本 ok。
如下方式非源碼編譯安裝,沒法指定安裝目錄!若是須要指定安裝目錄,請查看 mysql-8.x 源碼編譯安裝
tar -zxvf mysql-5.7.18.tar.gz mv mysql-5.7.18 /usr/local/mysql cd /usr/local // 它自己沒有 data 目錄,須要自行建立(更高版本已經有 data 目錄,無需重複建立) sudo mkdir -m 755 data cd bin // 初始化 Data 目錄內容 sudo ./mysqld --initialize-insecure // 啓動,必須以 root 身份啓動 sudo ./mysqld --user=root ----------- 另行啓動一個 terminal --------------------------------- // 設置密碼 sudo ./mysqladmin -u root password 123456 // 登陸測試 mysql -u root -p // 配置文件(本身建立 my.cnf,默認文件名,配置文件路徑:etc 目錄下,能夠是 /etc,也能夠是 /usr/local/mysql/etc) sudo mkdir - m 755 /usr/local/mysql/etc // 編輯配置文件 sudo gedit /usr/local/mysql/etc/my.cnf // 配置文件內容(設置編碼) [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8
nginx.conf
中設置的 include vhost/*
路徑
cd conf/vhost sudo vim vhost.conf // 添加以下內容,保存 server { server_name test.com; root /var/Website/Test; index index.php index.html; charset utf-8; location / { // 這邊配置成單一入口訪問(例如你用的PHP框架是 Laravel 就要求要單一路口) // 這邊的含義是: // $uri 若是是一個文件,直接返回 // $uri/ 若是是一個目錄,直接返回 // 最後一個參數表示重定向! // 不然返回 /index.php?$query_string; try_files $uri $uri/ /index.php?$query_string; } location ~ \.php(.*) { // php 處理程序監聽的 tcp 端口 fastcgi_pass 127.0.0.1:9000; // 肯定腳本名稱 # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; // 傳遞請求參數 # fastcgi_param QUERY_STRING $query_string; // 必需要包含 fastcgi_params 預約義參數 include fastcgi_params; } } server { server_name pma.com; root /var/Website/TestOther; index index.html; charset utf-8; location / { } # 靜態資源處理 # 例如:http://test.com/test.jpg # 他會從 /data 目錄下獲取,而不是從 /var/Website/TestOther 目錄下獲取 # 注意匹配順序,正則優先,而後 前綴 location ~ \.(gif|jpg|png)$ { root /data; } }
參考文章
cgi、fastcgi、php-cgi、php-fpm 之間的聯繫和區別
配置文件路徑:
// php-fpm 配置文件 etc/php-fpm.conf.default // 進程池配置文件路徑 etc/php-fpm.d/www.conf.default // php.ini 配置文件(要從解壓出來的壓縮包根目錄下拷貝重命名) etc/php.ini
注意了,php-fpm.conf
配置文件是 php-fpm
程序的配置文件,www.conf
是 php-fpm.conf
配置文件的一部分(擴展),只是 php
將其獨立出來了。他們是一個總體,這邊修改的是 www.conf
:
user = root # 這邊能夠新建立用戶,也能夠直接使用 root 用戶(省事,我就 root 用戶了) group = root # 同上 listen = 127.0.0.1:9000 # 只能有一個 listen(我被坑的最慘的部分!覺得能夠 listen 多個!實際上不能!)
sudo ln -s /path/to/php/sbin/php-fpm /bin/php-fpm sudo ln -s /path/to/nginx/sbin/nginx /bin/nginx sudo ln -s /path/to/mysql/bin/mysqld /bin/mysqld
Nginx
// windows 下啓動 start nginx // linux 下啓動 sudo nginx # 啓動 sudo nginx -s reload # 從新啓動(重載配置文件) sudo nginx -s stop # 快速中止 sudo nignx -s quite # 優雅中止 sudo nginx -s reopen # 從新打開日誌文件(要在 nginx 啓動的狀態下執行纔有效)
PHP
:
// 指定配置文件啓動 // -c 指定 php 運行時配置文件 // -y 指定 php-fpm 運行時配置文件 // -R 可選,運行 root 身份運行 php-fpm sudo php-fpm -c php.ini -y php-fpm.conf -R // 一般的啓動方式應該以下: sudo php-fpm -R
mysql
sudo mysqld --user=root