4.27/28/29 php編譯安裝
4.30 編譯安裝nginx
4.31 yum安裝nginx
4.32/33 nginx虛擬主機php
vi編輯器中的一些操做方法:html
vi 裏面在通常模式下,按dd能夠刪除行(剪切),5dd(剪切5行),光標挪到要粘貼的位置,按p。 操做錯誤以後,想要撤銷,能夠按u,反着撤銷按 ctrl r; 通常模式下按gg能夠把光標定位到首行,按G能夠定位到末行; 按yy複製,5yy複製5行; 顯示行號,在通常模式裏輸入:set nu; 定位到指定的行:通常模式下直接按數字G,如10G
1、php編譯安裝mysql
下載PHP:linux
cd /usr/local/src 進入該目錄下載 wget https://www.php.net/distributions/php-7.3.10.tar.bz2
解壓:nginx
tar jxvf php-7.3.10.tar.bz2
編譯安裝php:git
cd php-7.3.10 解壓後進入該目錄,能夠 訪問INSTALL中的幫助文件的連接
建立php-fpm用戶sql
useradd php-fpm
編譯參數:vim
./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl 相關名稱釋義: --prefix=指定安裝位置 --with-config-file-path=指定配置文件目錄 --enable-fpm=啓動fpm服務,必需要加 --with-fpm-user=指定用戶 --with-fpm-group=指定用戶組 --with-mysql=指定mysql的路徑(兼容老版本使用此方法) --with-mysqli=指定Mysql路徑(新版本) --with-pdo-mysql 加上此項才能夠和php通訊 --with-libxml-dir及以後的都是php的模塊 make make install
編譯安裝一個軟件包的步驟:windows
一、 ./configure ***和後面的參數 二、 make 三、 make install
錯誤1:centos
解決: yum install -y gcc
錯誤2:
error: libxml2 not found 解決:yum install -y libxml2-devel
缺乏軟件包能夠yum list |grep 包名 grep -i 忽略大小寫
錯誤3:
error: Cannot find OpenSSL's 解決:yum install -y openssl-devel
yum list |grep -i OpenSSL
錯誤4:
error: cURL version 7.15.5 or later is required 解決:yum install -y libcurl-devel
yum list |grep curl
錯誤5:
configure: error: jpeglib.h not found 解決:yum install -y libjpeg-turbo-devel
yum list |grep jpeg
錯誤6:
configure: error: png.h not found 解決:yum install -y libpng-devel
yum list |grep png
錯誤7:
configure: error: freetype-config not found. 解決: yum install -y freetype-devel
錯誤8:
configure: error: wrong mysql library version or lib not found 解決:下載一個低版本的MySQL/Mariadb
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.45-linux-glibc2.12-x86_64.tar.gz tar zxvf mysql-5.6.45-linux-glibc2.12-x86_64.tar.gz mv mysql-5.6.45-linux-glibc2.12-x86_64 /usr/local/mysql5.6
改完後的編譯參數:
./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql5.6 --with-mysqli=/usr/local/mysql5.6/bin/mysql_config --with-pdo-mysql=/usr/local/mysql5.6 --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl
錯誤9(啓動php-fpm時若是沒有php-fpm用戶報該錯誤):
ERROR: [pool www] cannot get uid for user 'php-fpm' 解決:useradd php-fpm
編譯完成後,出現WARNING, 這幾個選項在新版本的php中不識別了,編譯參數去掉便可,帶上這些參數也不會報錯--with-mysql, --with-mcrypt, --enable-gd-native-ttf
接着make和make install便可,make是把源碼包變成二進制包,進行編譯
配置文件:
cd /usr/local/php-fpm/
編譯完成後,拷貝php-fpm.conf.default爲php-fpm.conf,不然php-fpm沒法啓動
cp php-fpm.conf.default php-fpm.conf
另外一個配置文件:
cd /usr/local/src/php-7.3.10
php.ini-development 用做於測試環境 php.ini-production 用做於生產環境 cp php.ini-development /usr/local/php-fpm/etc/php.ini
diff 查看兩個文件的差別的,如 diff php.ini-development php.ini-production ,; 表明註釋的行
啓動腳本:
cd /usr/local/src/php-7.3.10/sapi/fpm
並把該目錄下的init.d.php-fpm拷貝到/etc/init.d/,做爲啓動腳本
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chkconfig --add php-fpm 加入到服務列表 chkconfig php-fpm on 開機啓動 chmod 755 /etc/init.d/php-fpm 並給執行權限 /etc/init.d/php-fpm start 啓動報錯 vim /usr/local/php-fpm/etc/php-fpm.conf 根據報錯查看該配置文件的第143行
vim /usr/local/php-fpm/etc/php-fpm.conf
/usr/local/php-fpm/etc/php-fpm.d目錄下沒有.conf文件
cp www.conf.default www.conf
/etc/init.d/php-fpm start 此時啓動成功
2、編譯安裝nginx
官網:http://nginx.org/
下載:
wget http://nginx.org/download/nginx-1.16.1.tar.gz
解壓:
tar zxvf nginx-1.16.1.tar.gz cd nginx-1.16.1
官方文檔:http://nginx.org/en/docs/install.html (選擇此選項即源碼安裝:Building nginx from Sources,文檔最下面有編譯參數示例)
編譯參數可參考官方文檔,prefix安裝路徑要有:
./configure --prefix=/usr/local/nginx --with-http_ssl_module make && make install
編譯完成:
建立nginx啓動命令腳本:
vi /etc/init.d/nginx
插入如下內容, 注意修改PATH和NAME字段, 匹配本身的安裝路徑
或者https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx
#! /bin/bash # chkconfig: - 85 15 PATH=/usr/local/nginx DESC="nginx daemon" NAME=nginx DAEMON=$PATH/sbin/$NAME CONFIGFILE=$PATH/conf/$NAME.conf PIDFILE=$PATH/logs/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME set -e [ -x "$DAEMON" ] || exit 0 do_start() { $DAEMON -c $CONFIGFILE || echo -n "nginx already running" } do_stop() { $DAEMON -s stop || echo -n "nginx not running" } do_reload() { $DAEMON -s reload || echo -n "nginx can't reload" } case "$1" in start) echo -n "Starting $DESC: $NAME" do_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" do_stop echo "." ;; reload|graceful) echo -n "Reloading $DESC configuration..." do_reload echo "." ;; restart) echo -n "Restarting $DESC: $NAME" do_stop do_start echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2 exit 3 ;; esac exit 0
設置執行權限
chmod a+x /etc/init.d/nginx
啓動:
無啓動腳本:/usr/local/nginx/sbin/nginx, 用此方法啓動後,使用 pkill nginx 關閉
建立啓動腳本後:/etc/init.d/nginx start chkconfig --add nginx 加入到服務列表 chkconfig nginx on 設置開機啓動
配置文件所在位置:
vim /usr/local/nginx/conf/nginx.conf
3、yum安裝nginx
文檔:
http://nginx.org/en/linux_packages.html
編輯yum倉庫:
vi /etc/yum.repos.d/nginx.repo
粘貼:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ yum時會到此路徑查找rpm包 gpgcheck=0 enabled=1
yum list |grep nginx 能夠看到獲取到的nginx的包,爲最新的穩定版
安裝:
yum install -y nginx
配置文件路徑:
/etc/nginx nginx -v 查看版本 nginx -V 查看編譯參數 更改配置文件後查看配置文件有沒有語法錯誤: nginx -t
啓動:
systemctl start nginx
4、nginx虛擬主機
虛擬主機:
HTTP相關概念中(1.1版本開始支持虛擬主機) 即爲--> host (域名) 一個WEB服務能夠有多個站點,一個站點就是一個虛擬主機
定義虛擬主機配置文件,以域名爲命名。
啓動nginx服務
vim /etc/nginx/nginx.conf yum安裝的nginx配置文件所在位置 /etc/nginx/conf.d/ 虛擬主機配置文件所在路徑
該路徑下的文件中,每個server就是一個虛擬主機,能夠在瀏覽器中訪問server_name後面的域名
更改server_name後的域名爲www.aaa.com
nginx -t //查看配置文件是否有錯誤
nginx -s reload //重載配置文件
Linux中綁定hosts:
vim /etc/hosts
windows中綁定hosts:
C:\Windows\System32\drivers\etc中的hosts文件 更改完成後可使用www.aaa.com在瀏覽器中訪問
默認虛擬主機:
默認虛擬主機的做用:泛解析(任何一個域名只要解析到ip上,這個站點均可以訪問到)
默認虛擬主機就是Nginx的第一個虛擬主機。誰排在第一位誰就是第一個
或者在虛擬主機中80端口後添加: default_server 就成爲了默認的虛擬主機,只能添加一個
在 default.conf 中添加default_server,就成了默認虛擬主機
2.conf 作以下更改,並在/tmp/html/目錄下定義一個index.html
echo 123 > /tmp/html/index.html
訪問ccc.com爲定義的內容爲123的index.html
bbb.com仍是會請求到默認的虛擬主機,由於添加了default_server
禁掉默認虛擬主機,加一行 deny all; 此時虛擬主機403
CentOS7 firewalld
可參考:https://blog.csdn.net/z13615480737/article/details/79178458/
iptables -nvL 查看防火牆規則
自帶firewalld服務,開啓狀態。
查看防火牆的狀態:systemctl status firewalld (不推薦)關閉firewalld服務: systemctl stop firewalld
添加80端口到白名單:
firewall-cmd --zone=public --list-ports #查看已開放的端口 firewall-cmd --add-port=80/tcp --permanent #永久添加80端口 firewall-cmd --reload #從新載入配置,好比添加規則以後,須要執行此命令
命令含義:
--zone #做用域 --add-port=80/tcp #添加端口,格式爲:端口/通信協議 --permanent #永久生效,沒有此參數重啓後失效