nginx-php-mysql
碎碎念
127.0.0.1
location里面有特殊的定义变量的方式,可以在location里面直接调用,而在命令行或者脚本里面则无法调用 作用:使location具有通用性 [root@web02 ~]# cat /etc/nginx/fastcgi_params#代理PHP的代码 [root@web01 /code]# ll /etc/nginx/uwsgi_params #代理Python nginx中无论是静态请求还是动态请求,都不能直接请求数据库,要经PHP代码的解析 php是一种代码解析器中间商 PHPPHP代码 TomcatJava代码 resinJava代码 pythonPython代码 rpm -Uvh 安装本地的rpm包 = yum locainstall -y 依赖包可能会冲突,如果冲突的话,先yum remove -y 就好 php-fpm是PHP的进程管理命令 /etc/php-fpm.conf管理PHP进程的配置文件 /etc/php-fpm.d /etc/php-fpm.d/www.conf /etc/php.ini SUN公司javamysql oracle(甲骨文公司) 9000php 3306mysql 111rpcbind 80nginx默认 22ssh 53DNS fastcgi和http和https一样,都是一种协议,只不过http是浏览器使用的协议,fastcgi是web服务器和数据库之间使用的协议 所谓的协议也就是调制解调中使用的规则 nginx里配置的是主机地址,而不是域名服务器 如需测试域名,请修改host文件 如需让别人能访问你的域名,需要购买域名 跟配置nginx无关系 回送地址:127.0.0.1。一般用于测试使用。例如:ping 127.0.0.1 来测试本机TCP/IP是否正常。 作用: :一是测试本机的网络配置,能PING通127.0.0.1说明本机的网卡和IP协议安装都没有问题 :某些SERVER/CLIENT的应用程序在运行时需调用服务器上的资源,一般要指定SERVER的IP地址,但当该程序要在同一台机器上运行而没有别的SERVER时就可以把SERVER的资源装在本机,SERVER的IP地址设为127.0.0.1也同样可以运行 localhost的来说,实质上就是指向127.0.0.1这个本地IP地址。在操作系统中有个配置文件(windows中路径为C:\WINDOWS\system32\drivers\etc\hosts,Unix/Linux路径为/etc/hosts)将localhost与127.0.0.1绑定在了一起 “ping 127.1”和“ping 127.0.0.1”这两条命令是一样的,都是在进行回路测试 location的指向和精确,特殊符号指定站点目录,浏览器URI指定文件 nginx上可以使用PHP的语法,打印出和他连接的PHP的详细信息(要他的简历),但是不能解析.php代码(做他做的事) location之间可以自动跳转的(比如WordPress访问.php文件的时候),原理是对于某些条件的判断,可以在文件中指定某些跳转,可以说nginx,计算机都是有一层一层的判断组成的 /code/wordpress/wordpress_dir/index.php,wp软件包里面以.php结尾的文件,都是配置用户登录信息的文件,可以通过浏览器直接访问location(别的后缀不能访问) #127.0.0.1和IP之间的关系 [root@web01 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 图形化的作用仅仅是为了人民更好的理解而已,本质上还是对系统文件的修改 502nginx服务器找不到后端主机(PHP) 不同的服务有不同的报错默认页面,这些报错的反馈页面的可以修改的 nginx通过开发写的代码连接缓存,数据库 nginx使用fastcgi代理,通过开发写的代码,连接PHP,通过开发写的代码,连接缓存,数据库 syntax #语法错误 错误反馈可以用状态码表示,也可以使用语句,图片,不同的服务报错不同 创建多个目录作为站点目录 GET 请求 post 上传 client_max_body_size 500M;#修改nginx默认上传文件的大小 .php文件直接放在站点目录下,这样在浏览器直接访问域名的话可以直接跳转到相关的php文件 有的时候nginx配置文件有问题,状态码是200 index控制默认访问文件,URI控制访问哪个文件
LNMP环境准备
相关网站
使用浏览器百度,可以自己找指定版本的源
find /var/cache/yum/x86_64/7/ -name ''*.rpm"
1.配置nginx官方源 vim /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true 2.创建nginx的默认启动用户 groupadd www -g 666 useradd www -u 666 -g 666 -s /sbin/nologin -M 3.下载官方nginx yum install -y nginx 4.修改nginx配置文件 sed -i '/^user/c user www;' /etc/nginx/nginx.conf [root@web01 ~]# vim /etc/nginx/nginx.conf (二选一) user www; 5.启动,加入开机自启动 systemctl start nginx systemctl enable nginx 6.使用第三方扩展源安装php7.1 #先卸载系统自带的php5.4 [root@nginx ~]# yum remove -y php-mysql-5.4 php php-fpm php-common #配置第三方源,下载指定版本的php(7.1) [root@nginx ~]# vim /etc/yum.repos.d/php.repo [php-webtatic] name = PHP Repository baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/ gpgcheck = 0 [root@nginx ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb 考虑的网速的原因,可以选择本地上传 [root@web01 ~/nginx_php]# rpm -Uvh ./* 查看PHP版本 [root@web02 php]# rpm -q php71w-mysqlnd php71w-mysqlnd-7.1.33-1.w7.x86_64 7.配置php-fpm用户与Nginx的运行用户保持一致,不修改的话,nginx连不上PHP sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf 8.启动php-fpm加入开机自启 systemctl start php-fpm systemctl enable php-fpm 9.安装Mariadb数据库(#安装mariadb客户端,server服务端,使用依赖的方式安装服务端) yum install mariadb-server -y 10.启动Mariadb加入开机自动 systemctl start mariadb systemctl enable mariadb 11.给Mariadb配置登陆密码 mysql#使用web连接数据库(刚下载好的可以直接连接,给root用户密码之后就不能连接了) mysqladmin -uroot password syy123给mysql root用户密码(不能重复给密码)(选做) mysql -uroot -psyy123#使用web连接数据库(使用root身份) create database xx;#创建数据库 show databases;#查看数据库 grant all on wp.* to wp_user@'localhost' identified by '1';(%,10.0.0.%,localhost,10.0.0.7) 这一步,是创建 库wp的用户,指定使用密码 select user,host from mysql.user; #查看 数据库用户身份创建成功 show tables;查看表前缀 12.检查进程和端口 ps -ef|grep -E 'nginx|php|mysql' netstat -lntup|grep -E '80|9000|3306' mysql语句通常以;结尾,安装好的数据库,会有4个系统库 13.检查nginx和PHP,PHP和mysql数据库能不能连接
[root@web01 ~]# which php-fpm #php服务管理工具,可以直接调用PHP解析器,解析代码,连接数据库,返回数据给web,返回数据给用户 /usr/sbin/php-fpm [root@web01 ~]# which php /usr/bin/php [root@web01 ~]# yum provides php-fpm [root@web01 ~]# ps -ef|grep php root 868 1 0 21:36 ? 00:00:00 php-fpm: master process (/etc/php-fpm.conf) apache 1181 868 0 21:36 ? 00:00:00 php-fpm: pool www #nginx内置PHP变量 [root@web01 ~]# vim /etc/nginx/scgi_params #scgi代理配置文件,代理PHP scgi_param REQUEST_METHOD $request_method; #请求的动作(GET,POST) scgi_param REQUEST_URI $request_uri; #请求的地址不带参数 scgi_param QUERY_STRING $query_string;#请求的参数;如? scgi_param CONTENT_TYPE $content_type;#请求头中的Content-Type字段 scgi_param DOCUMENT_URI $document_uri;#与$uri相同 scgi_param DOCUMENT_ROOT $document_root;##网站的根目录,在server配置中root指令中指定的值(站点目录) [root@web01 ~]# vim /etc/nginx/fastcgi_params fastcgi_param QUERY_STRING $query_string;#请求的参数;如? fastcgi_param REQUEST_METHOD $request_method;#请求的动作 fastcgi_param CONTENT_TYPE $content_type;#请求头中的Content-Type字段 fastcgi_param CONTENT_LENGTH $content_length; #请求头中的Content-length字段。 fastcgi_param SCRIPT_NAME $fastcgi_script_name;##脚本名称 [root@web02 php]# ll /etc/php-fpm.conf #PHP的启动进程文件 -rw-r--r-- 1 root root 4207 Oct 26 2019 /etc/php-fpm.conf [root@web02 php]# ll /etc/php-fpm.d# -rw-r--r-- 1 root root 17962 May 20 23:15 www.conf#PHP服务的配置文件 [root@web02 php]# ll /etc/php.ini #跟PHP代码程序相关的文件 -rw-r--r-- 1 root root 62641 Oct 26 2019 /etc/php.ini [root@web01 ~]# vim /etc/nginx/conf.d/default.conf #该文件记录着PHP默认的location配置,可以使用这个location让nginx与PHP建立连接,PHP可以直接解析代码,也可以作为中介,建立起nginx和mysql数据库之间的连接,(为了让用户在浏览器上可以直接看到内容 ) #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} [root@web02 ~]# rpm -q mariadb mariadb-5.5.65-1.el7.x86_64 [root@web02 ~]# rpm -ql mariadb /etc/my.cnf.d/client.cnf#mysql数据库的配置文件 /usr/bin/aria_chk /usr/bin/aria_dump_log /usr/bin/aria_ftdump /usr/bin/aria_pack /usr/bin/aria_read_log /usr/bin/msql2mysql /usr/bin/my_print_defaults /usr/bin/mysql#可以TAB和使用相对路径执行 /usr/bin/mysql_find_rows /usr/bin/mysql_waitpid /usr/bin/mysqlaccess /usr/bin/mysqladmin /usr/bin/mysqlbinlog /usr/bin/mysqlcheck /usr/bin/mysqldump /usr/bin/mysqlimport /usr/bin/mysqlshow /usr/bin/mysqlslap [root@web02 php]# ll /etc/nginx/uwsgi_params #代理Python -rw-r--r-- 1 root root 664 Apr 21 23:07 /etc/nginx/uwsgi_params [root@web02 ~]# ll /var/lib/mysql/mysql.sock#与数据库的本地连接有关 srwxrwxrwx 1 mysql mysql 0 May 21 00:38 /var/lib/mysql/mysql.sock fastcgi_pass 127.0.0.1:9000;#这一行的作用就是告诉web PHP服务器在哪,只有在这里指定了IP,nginx才能找到PHP服务器,解析.php代码,直接反馈给用户看, 关于php的location站点目录下的info.php文件,可以用来判断nginx服务端有没有连接到php,同时打印出PHP的详细信息
LNMP架构环境配置 ngx_http_fastcgi_module模块
作用:nginx服务可以使用ngx_http_fastcgi_module模块将请求发送到支持ngx_http_fastcgi_module模块服务器
127.0.0.0.1=localhost=本机i
测试web能不能连接PHP
访问cs.php.com---找到/php/index.php(优先级低)----跳转到location ~ .php$(代理php)---解析/php/index.php---调用数据库---反馈给用户
index.php该文件是用户注册使用的文件(可以跳转)
wp-settings.php配置软件的文件
ginx搭载的网站中,运行的软件绝大多数都是以.php结尾的文件,要想使用这些软件,就需要fastcgi代理到PHP,不然nginx自身无法直接使用.php文件(在/etc/nginx/mime.types中指定了),接会下载
fastcgi_pass 127.0.0.1:9000;php搭载在哪,就用谁的IP
1. vim /etc/nginx/conf.d/php.conf server { listen 80; server_name cs.php.com; root /php; index index.php; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; #fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } } index后面的文件的后缀无所谓,重要的是文件中的内容,因为内容中可以指定解码方式 浏览器默认使用HTML语法解码文件,如果想要浏览器解码.php的文件,编辑的文件中一定要告诉浏览器,不然浏览器就用HTML语法解析 nginx总是尽量的去显示网站中文件的内容,不能显示就下载 index后面只是一个页面而已,用不用无所谓 打印出的PHP信息表,Variables里面记录了指定的server语句中的变量的调用信息 如果使用浏览器能打开PHP的信息表,那么说明nginx和PHP建立了连接 使用变量的好处就是,简单的写法调用的站点目录下的所有的文件(调用变量,定位URI) index index.php;该文件主要起一个跳转的作用(如果直接输入域名访问的话是403) 在这里指定fastcgi_index 其实是没有用的,因为前面的location ~* \.php$已经把“/结束”这种情况排除了 SCRIPT_FILENAME=SCRIPT_NAME #fastcgi_index index.php;这个文件尽量写上 2.重载nginx配置文件 nginx -sreload 3.创建站点目录 mkdir /php 4.使用PHP语法打印出PHP的详细信息 ###PHP语法很严格,不能随便加空格和TAB键(该文件通用) vim /php/index.php #改文件名随意,放在index后面哪个位置都行(是默认不默认的关系,index.php优先,不考虑第一位的话) <font color="red">syy</font> <?php phpinfo(); ?> 5.域名解析 10.0.0.7 cs.php.com 6.浏览器访问cs.php.com和cs.php.com/info.php#小心报错File not found. 7.删除PHP信息打印(危险的文件) rm -rf /php/index.php
部署WordPre
WordPress官网
1.nginx具体配置信息 vim /etc/nginx/conf.d/wp.conf server { listen 80; server_name cs.wp.com; root /wp; index info.php index.php; 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; } } 2.重载nginx服务 nginx -sreload 3.获取wordpress产品,解压并部署wordpress [root@nginx ~]# mkdir /wp [root@nginx ~]# cd /wp #三选一 [root@nginx ~]# http://test.driverzeng.com/Nginx_Code/wordpress-5.0.3-zh_CN.tar.gz [root@nginx wordpress]# wget https://cn.wordpress.org/wordpress-5.0.3-zh_CN.tar.gz [root@nginx code]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz [root@nginx ~]# tar xf wordpress-5.0.3-zh_CN.tar.gz [root@nginx ~]# chown -R www.www /wp 4.由于wordpress产品需要依赖数据库,所以需要手动建立数据库(#) mysql -uroot -psyy123 create database wp;#创建数据库(类似于目录) show databases;#查看数据库(类似于查看文件) exi或者\q或者quit或者Ctrl+c或者Ctrl+d grant all on wp.* to wp_user@'localhost' identified by '1'; 5.域名解析 10.0.0.7 cs.wp.com 6.通过浏览器访问wordpress,并部署该产品 cs.wp.com
判断PHP和数据库是否 连接
查看nginx能不能连接PHP和数据库
hp本身不能和数据库连接,是通过开发写的文件中的代码实现和数据库的连接
wp-config.php这个文件就是把用户的注册设置记录到数据库的(连接)
localhost代表本机,如果数据库在别的服务器,那么就写对应的IP
1.PHP所在的服务器 在/wp目录下创建mysqli.php文件,填入对应的数据库IP、用户名、密码 vim /wp/mysqli.php <?php $servername = "localhost"; $username = "wp_user"; $password = "1"; // 创建连接 $conn = mysqli_connect($servername, $username, $password); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "小哥哥,php可以连接MySQL..."; ?> <img style='width:100%;height:100%;' src=https://blog.driverzeng.com/zenglaoshi/php_mysql.png> 2. 浏览器访问www.wp.com/mysql.php 3.为了数据库的安全 rm -rf /code/php/php_dir/mysqli.php
部署知乎产品Wecenter
1.nginx具体配置信息 vim /etc/nginx/conf.d/we.conf server { listen 80; server_name cs.we.com; root /zh; index index.php index.html; 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; } } 2.重启nginx服务 [root@http-server ~]# nginx -sreload 3.创建站点目录 mkdir /zh 4.下载Wecenter产品,部署Wecenter并授权 [root@web02 ~]# wget http://test.driverzeng.com/Nginx_Code/WeCenter_3-2-1.zip [root@web02 ~]# unzip WeCenter_3-2-1.zip [root@web02 ~]# mv WeCenter_3-2-1/ /zh [root@web02 ~]# chown -R www.www /zh 5..由于wecenter产品需要依赖数据库, 所以需要手动建立数据库 #1.登陆数据库 [root@http-server ~]# mysql -uroot -psyy123 #2.创建wordpress数据库 MariaDB [(none)]> create database zh; MariaDB [(none)]> exit 6.域名解析 10.0.0.7 cs.zh.com 7.通过浏览器访问网站 cs.zh.com