用過了apache就想着用用nginx,網上教程其實不少,可是受服務器版本等限制,每一個人遇到的問題也不同,先記錄下個人php
一.安裝依賴html
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel //一鍵安裝四個依賴
二.下載nginx的tar包mysql
//建立一個文件夾 cd /usr/local mkdir nginx cd nginx //下載tar包 沒有wget命令,能夠yum -y install wget進行安裝 wget http://nginx.org/download/nginx-1.13.7.tar.gz //解壓 tar -xvf nginx-1.13.7.tar.gz
三.安裝nginxlinux
//進入nginx目錄 cd /usr/local/nginx/nginx-1.13.7 //執行命令 ./configure //執行make命令,,執行後會告訴你配置文件(根目錄/conf/nginx.conf)和日誌文件位置(根目錄/logs/error.log) make //執行make install命令 make install
四.啓動nginx前nginx
防火牆開通8090端口,用於nginx;且服務器控制檯安全組也要開通好:firewall-cmd --zone=public --add-port=8090/tcp --permanentc++
sudo vim /usr/local/nginx/conf/nginx.confgit
由於可能apeache佔用80端口,apeache端口儘可能不要修改,咱們選擇修改nginx端口。linux 修改路徑/usr/local/nginx/conf/nginx.conf,Windows 下 安裝目錄\conf\nginx.conf。修改端口爲8090,localhost修改成你服務器ip地址。github
檢查配置是否正確:sbin目錄下:./nginx -tweb
五.啓動nginxredis
啓動代碼格式:nginx安裝目錄地址 -c nginx配置文件地址;如:[root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
六.驗證,若沒法打開關閉防火牆看看是否爲防火牆問題
Nginx虛擬域名配置及測試驗證
//編輯nginx.conf sudo vim /usr/local/nginx/conf/nginx.conf //增長行,,,在http{}的最下面 include vhost/*.conf //保存退出 //在/usr/local/nginx/conf目錄新建vhost文件夾 mkdir vhost //建立每一個域名的配置 sudo vim jimisun.com.conf //節點中增長入響應的配置 端口轉發 或者訪問文件系統
附一下vhost.conf的內容
server { listen 8090; server_name ip地址; location / { index index.html index.htm index.php; if (!-e $request_filename){ rewrite ^/(.*) /index.php last; } #autoindex on; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
再附一下我本地使用phpstudy的域名站點配置(已經配置好了php7)
server { listen 80; server_name www.local-cps.cn local-cps.cn; root "項目的起始包含index.php文件的文件夾全路徑"; location / { index index.html index.htm index.php; #autoindex on; } location ~ \.php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } }
Nginx重啓:
方法一:進入nginx可執行目錄sbin下,輸入命令./nginx -s reload 便可。(./nginx -t檢查配置是否有誤)
方法二:查找當前nginx進程號,而後輸入命令:kill -HUP 進程號 實現重啓nginx服務
查看Nginx運行情況:有結果爲正在運行,反之沒有運行。
ps -a | grep nginx
Nginx啓動:
進入nginx可執行目錄sbin下,輸入命令./nginx 便可。
chkconfig:檢查系統的各類服務。
設置Nginx開機自啓動:
vi /etc/rc.local
添加/usr/local/nginx/sbin/nginx便可。
注意設置執行權限哦。chmod 755 rc.local
PHP7(7.2.12):
一.下載依賴
目錄/usr/local下新建php文件夾,並下載php軟件包 wget http://am1.php.net/get/php-7.2.12.tar.bz2/from/this/mirror //注意,當心下載下來的是頁面,不然無法解壓縮,file 文件名 命令查看 安裝tar及bzip2 yum install -y tar yum -y install bzip2 解壓php壓縮包:ps:若wget後的是mirror文件,則tar xjvf mirror便可
tar xjvf php-7.2.12.tar.bz2 安裝php須要的擴展: yum install libxml2 libxml2-devel openssl openssl-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel -y
二.開始安裝
//進入php-7.2.12目錄 cd /usr/local/php/php-7.2.12 //執行命令,prefix安裝到指定位置,,注意,若安裝php5.6須要在後面加上--with-mysql ./configure --prefix=/usr/local/php720 --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-simplexml --enable-xml --disable-rpath --enable-bcmath --enable-soap --enable-zip --with-curl --enable-fpm --with-fpm-user=nobody --with-fpm-group=nobody --enable-mbstring --enable-sockets --with-gd --with-openssl --with-mhash --enable-opcache --disable-fileinfo //編譯安裝: make make install
配置nginx.conf支持php:
打開nginx配置文件(/usr/local/nginx/conf/nginx.conf),找到localtion模塊,在index後面添加index.php,使nginx識別php文件;
啓動php-fpm:
將php-fpm.conf.default複製爲php-fpm.conf
cd /usr/local/php720/etc
cp php-fpm.conf.default php-fpm.conf
而後啓動php-fpm
/usr/local/php720/sbin/php-fpm
若是啓動報錯(以下圖):
解決方法:進入到 /usr/local/php720/etc/php-fmp.d下的www.conf.default 複製爲www.conf,而後啓動php-fpm;
進入文件夾(若是進不去,就一步步的cd進去; 若是沒有這個文件就本身建立個php-fpm.d文件夾,再進到網址下載www.conf文件:https://pan.baidu.com/s/1o8mRYkU)
cd /usr/local/php720/etc/php-fpm.d
cp www.conf.default www.conf
解決後,先把php-fpm進程清除
pkill php-fpm
再啓動php-fpm
/usr/local/php720/sbin/php-fpm
最後在/usr/local/nginx/html下新建文件index.php,輸出phpinfo();
vi index.php
運行ip,以下
配置php-fpm自啓動:
vi /etc/rc.local
添加/usr/local/php7012/sbin/php-fpm便可。
注意設置執行權限哦。chmod 755 rc.local
安裝後若發現php -v 和phpinfo()下的版本不一致,則是由於系統和nginx全部的php.ini目錄不一致,具體解決:
https://blog.csdn.net/feiwutudou/article/details/80049567
centos6.6下安裝mysql(5.7):
//下載 mysql的repo # wget https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm //安裝mysql源安裝包 # rpm -ivh mysql57-community-release-el6-11.noarch.rpm //安裝Mysql yum -y install mysql-community-server //若報錯:Error downloading packages.....No more mirrors to try。緣由是下載包失敗,清理緩存yum clean all,再yum list,再執行yum -y install mysql-community-server,多試幾回,若仍是不行,error後再從新執行yum -y install mysql-community-server(我最後就這樣搞好的)。ps:由於鏡像下載確實慢 //啓動Mysql服務 service mysqld start //設置開機啓動 [root@localhost ~]# service enable mysqld [root@localhost ~]# service daemon-reload [root@localhost ~]# chkconfig --list
以後和centos7步驟同樣了。之因此採用el6而不是el7,是由於centos的版本不一樣,gcc太低,因此致使報錯:Requires: libstdc++.so.6(GLIBCXX_3.4.15)
centos7下安裝mysql(5.7):
https://blog.csdn.net/chenjiayi_yun/article/details/16920967
一.下載依賴
//CentOS7的yum源中默認是沒有mysql的。因此要先下載mysql的repo源。 //下載 mysql的repo # wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm //安裝mysql源安裝包 # rpm -ivh mysql57-community-release-el7-11.noarch.rpm //安裝這個包後,會得到兩個mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。
//安裝Mysql yum -y install mysql-community-server //啓動Mysql服務 systemctl start mysqld //設置開機啓動 [root@localhost ~]# systemctl enable mysqld [root@localhost ~]# systemctl daemon-reload [root@localhost ~]# chkconfig --list
修改mysql root本地登陸密碼
mysql安裝完成以後,在/var/log/mysqld.log文件中給root生成了一個臨時的默認密碼。[root@localhost ~]# more /var/log/mysqld.log,也可以使用cat查看
臨時密碼:in1N=ERmABRb
登錄mysql並修改密碼:mysql -u root -pin1N=ERmABRb,報錯的話可使用mysql -u root -p即不適用明文登入
//登入 $ mysql -u root -pin1N=ERmABRb //修改密碼爲Aaa2019.cn mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'Aaa2019.cn'; Query OK, 0 rows affected (0.00 sec) //注意, mysql5.7默認密碼策略要求密碼必須是大小寫字母數字特殊字母的組合,至少8位
設置容許遠程登陸
//Mysql默認不容許遠程登陸,咱們須要設置下,而且防火牆開放3306端口; mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Aaa2019.cn' WITH GRANT OPTION; //返回 Query OK, 0 rows affected, 1 warning (0.01 sec) //退出 mysql> exit; //設置端口 [root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent //返回 success //重啓防火牆 [root@localhost ~]# firewall-cmd --reload
若是是阿里雲服務器:須設置安全組配置,開放3306端口,容許遠程鏈接
賦予文件權限chmod -R 777 *
查看配置
# cat /etc/my.cnf
在這裏錯誤日誌的位置都有。
附mysql7.3.23的安裝:
一.下載依賴
下載mysql:https://dev.mysql.com/downloads/cluster/7.3.html
wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.23-linux-glibc2.12-x86_64.tar.gz //解壓: tar -xvzf mysql-cluster-gpl-7.3.23-linux-glibc2.12-x86_64.tar.gz //重命名: mv mysql-cluster-gpl-7.3.23-linux-glibc2.12-x86_64 mysql-7.3.23 //複製命名後的目錄 cp -r mysql-7.3.23 /usr/local/mysql7323 //添加用戶組和用戶: cd /usr/local/mysql7323 #添加用戶組 groupadd mysql //#添加用戶mysql 到用戶組mysql useradd -g mysql mysql //建立mysql數據目錄,新目錄不存在則建立: mkdir ./data/mysql 或 mkdir /usr/local/mysql7323/data/mysql //mysql安裝根目錄下修改目錄權限: chown -R mysql:mysql ./
初始化數據庫:(注意路徑)
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql7323 --datadir=/usr/local/mysql7323/data
問題報錯:提示沒有安裝perl,緣由:缺乏perl模塊中的Data::Dumper
yum -y install autoconf //安裝autoconf庫(此包安裝時會安裝Data:Dumper模塊)
再次執行初始化報錯:緣由:缺乏libaio庫文件
解決方法:yum install libaio* -y
再次執行初始化ok
//修改權限爲root權限: chown -R root:root . chown -R mysql:mysql data //添加啓動服務: cp support-files/mysql.server /etc/init.d/mysql #修改啓動腳本 vi /etc/init.d/mysqld #修改項: basedir=/usr/local/mysql/ datadir=/usr/local/mysql/data/mysql
啓動mysql服務:
service mysqld start
報錯,提示無權限
解決方法:chmod a+wrx /etc/init.d/mysqld
centos7下安裝mysql5.6:
https://blog.csdn.net/pengjunlee/article/details/81212250
redis擴展:
//先下載phpredis-develop cd /tmp wget https://codeload.github.com/phpredis/phpredis/zip/develop //安裝unzip、zip解壓工具 yum -y install unzip zip //解壓 unzip develop //解壓後會多了個phpredis-develop的目錄。進入目錄 cd phpredis-develop //安裝phpize模塊 yum -y install php-devel //執行phpize sudo phpize //查找php-config路徑 find / -name php-config //例如:個人是:/usr/local/php720/bin/php-config //配置環境 ./configure --with-php-config=/usr/local/php720/bin/php-config //編譯安裝 sudo make && make install //成功後會告訴你生成的redis.so擴展文件在哪一個目錄 //Installing shared extensions: /usr/local/php720/lib/php/extensions/no-debug-non-zts-20170718/
配置php的redis:
vim /usr/local/php720/lib/php.ini extension= /usr/local/php720/lib/php/extensions/no-debug-non-zts-20170718/redis.so //ok //解決後,先把php-fpm進程清除 pkill php-fpm //再啓動php-fpm /usr/local/php720/sbin/php-fpm //防火牆端口: firewall-cmd --zone=public --add-port=6379/tcp --permanent
注意,linux下php7中若找不到php配置文件php.ini
解決方法:首先須要說明的是,若是你的php是編譯安裝的,那麼默認是沒有php.ini的,你必須自行去源碼包裏邊拷貝。運行phpinfo()命令能夠看到php指定的配置文件路徑,把配置文件放到這個路徑中便可。
安裝redis服務:
坑1.
另附一下之前使用tp3.2框架時的坑
解決方法:
if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; }
坑2.
若報‘403 Forbidden’,則是由於nginx.conf沒有找到指定文件,文件以下圖
若要開啓nginx目錄瀏覽功能,只需將autoindex on前面的#去掉便可
整體來講,nginx確實是首選服務器,抗併發要強於apache(apache是阻塞的,nginx是異步非阻塞);apache模塊比較多,穩定,可是配置複雜。相對nginx就簡潔,bug比較多了;支持負載均衡;併發量在50000左右;固然還有其餘優點和劣勢,先這樣吧,之後再繼續研究
fileInfo擴展:
find / -name phpize//找到php安裝目錄下的phpize的路徑 //在/usr/local/php/php-7.2.12/ext/fileinfo源文件下執行如下操做: /usr/local/php-install/bin/phpize ./configure --with-php-config=/usr/local/php-install/bin/php-config//爲php安裝路徑 make && make install vim /usr/local/php-install/lib/php.ini 修改extension=fileInfo前面的分號去掉,保存後重啓php-fpm便可
nginx安裝realip模塊:
[root@localhost nginx]#cd nginx-1.13.7 [root@localhost nginx]#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_realip_module [root@localhost nginx]#make [root@localhost nginx]# ./sbin/nginx -t 依然報錯: nginx: [emerg] unknown directive "real_ip_header" in /usr/local/nginx/conf/nginx.conf:50 nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed [root@localhost nginx]# ./sbin/nginx -V nginx version: nginx/1.13.7 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) configure arguments: [root@localhost nginx]# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak [root@localhost nginx-1.13.7]# cp objs/nginx /usr/local/nginx/sbin/ cp:是否覆蓋"/usr/local/nginx/sbin/nginx"? y cp: 沒法建立普通文件"/usr/local/nginx/sbin/nginx": 文本文件忙 [root@localhost nginx-1.13.7]# pkill nginx [root@localhost nginx-1.13.7]# cp objs/nginx /usr/local/nginx/sbin/ cp:是否覆蓋"/usr/local/nginx/sbin/nginx"? y [root@localhost nginx-1.13.7]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.13.7 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_realip_module [root@localhost nginx-1.13.7]# cd .. [root@localhost nginx]# ./sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: [emerg] getpwnam("nginx") failed nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed [root@localhost nginx]# cd nginx-1.13.7 [root@localhost nginx-1.13.7]# netstat -tlunp | grep nginx [root@localhost nginx-1.13.7]# id nginx id: nginx: no such user [root@localhost nginx-1.13.7]# useradd -s /sbin/nologin -M nginx [root@localhost nginx-1.13.7]# id nginx uid=1003(nginx) gid=1003(nginx) 組=1003(nginx) [root@localhost nginx-1.13.7]# netstat -tlunp | grep nginx [root@localhost nginx-1.13.7]# cd .. [root@localhost nginx]# ./sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost nginx]# ./sbin/nginx -s reload
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
[root@localhost nginx]# ./sbin/nginx -s reload
nginx實現負載均衡,簡易配置:能夠打印phpinfo();不停刷新頁面,查看客戶端ip和服務器ip
#虛擬集羣負載均衡配置 upstream web_server{ server 192.168.0.24; server 192.168.0.25; keepalive 32; #與後端服務器保持長鏈接數 } server { listen 80; server_name www.xxxxxxx.cn; root localhost; location / { proxy_pass http://web_server; proxy_http_version 1.1; #後端服務器使用HTTP 1.1 proxy_set_header Connection ""; #清空客戶端Connection消息頭 proxy_set_header Host $host; #傳遞請求中的Host消息頭 proxy_set_header X-Real-IP $remote_addr; #傳遞真實客戶端ip } }
xdebug擴展安裝:
php5.6.27,linux centos7:
cd php安裝目錄下 mkdir xxdebug cd xxdebug wget https://xdebug.org/files/xdebug-2.5.0.tgz tar -zxf xdebug-2.5.0.tgz cd xdebug-2.5.0 php安裝路徑/bin/phpize 有可能會報錯沒有config.m4 cp config.m4 /usr/local/php/php56/bin/ 即php安裝路徑下/bin php安裝路徑/bin/phpize ./configure --with-php-config=/usr/local/php/php56/bin/php-config make && make install 這裏安裝完後會提示安裝到的路徑,要記下來,後面配置用,我是這個/usr/local/php/php56/lib/php/extensions/no-debug-non-zts-20131226/ vim /usr/local/php/php56/lib/php.ini 此目錄下沒有ini文件的,本身到源碼包找到ini.de..結尾的,更名複製到這個文件夾就能夠了 添加這行zend_extension=/usr/local/php/php56/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so pkill php-fpm /usr/local/php/php56/sbin/php-fpm echo phpinfo();就出現xdebug模塊就ok