web 服务器有那些:
Apache nginx Tenginx Lighttpd
Tomact IBMWebsphere jobss
LNMP
-L liunx平台
-N nginx 网站服务器
-M mysql mariadb 数据库
-P 网站开放语言 (PHP python perl)
任何网站F12 开发者工具
nginx可以5万的并发访问 apacha 可以2万并发访问
启动nginx 要检查httpd是否开启,80端口,端口只能做被一个软件占有
nginx -v 可以看到版本号
LNMP (liunx+ nginx+ mysql mariadb+PHP python)
mariadb 做客户端软件 ##直接使用mysql命令
php (这是php的解释器)PHP 也是模块化的软件
php-mysql php连接到mysql数据库里
实验步骤:
环境准备:
1.使用yum安装相关依赖包
yum -y install gcc openssl-devel pcre-devel zlib-devel yum -y install mariadb mariadb-server mariadb-devel tar -xf lnmp_soft.tar.gz
cd lnmp_soft/ yum -y install php php-mysql yum -y install php-fpm-5.4.16-42.el7.x86_64.rpm
++++++++++++++++++++++++++++++++++++++++++++++++
php-fpm-5.4.16-42.el7.x86_64.rpm
这个软件可以到www.centos.cn 下载 。可以到标准光盘里去找也可以到Everything ISO 里下载
启动nginx
[root@proxy lnmp_soft]# ss -ntulp | grep nginx [root@proxy lnmp_soft]# nginx [root@proxy lnmp_soft]# ss -ntulp | grep nginx tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=2232,fd=6),("nginx",pid=2231,fd=6))
启动mysql服务
[root@proxy ~]# systemctl start mariadb
[root@proxy ~]# systemctl enable mariadb
[root@proxy ~]# systemctl status mariadb
[root@proxy ~]# ss -ntulp | grep :3306
tcp LISTEN 0 50 *:3306 *:* users:(("mysqld",pid=2490,fd=14))
启动php-fpm服务
[root@proxy ~]# systemctl start php-fpm; systemctl enable php-fpm
[root@proxy ~]# systemctl status php-fpm
[root@proxy ~]# ss -ntulp | grep php-fpm
tcp LISTEN 0 128 127.0.0.1:9000
4)设置防火墙与SELinux
- [root@proxy ~]# firewall-cmd --set-default-zone=trusted
- [root@proxy ~]# setenforce 0
搭建LNMP平台:
)查看php-fpm配置文件(实验中不需要修改该文件)
- [root@proxy etc]# vim /etc/php-fpm.d/www.conf
- [www]
- listen = 127.0.0.1:9000 //PHP端口号
- pm.max_children = 32 //最大进程数量 (起得越多,处理速度越快,但是内存要跟上)
- pm.start_servers = 15 //最小进程数量
- pm.min_spare_servers = 5 //最少需要几个空闲着的进程 (等候处理数据处理的进程)
- pm.max_spare_servers = 32 //最多允许几个进程处于空闲状态
这个文件就这几行有用,其他都是注释
修改Nginx配置文件并启动服务
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
45 location / {
46 root html;
47 index index.php index.html index.htm;
- #设置默认首页为index.php,当用户在浏览器地址栏中只写域名或IP,不说访问什么页面时,服务器会把默认首页index.php返回给用户
48 }
..................
67 location ~ \.php$ {
68 root html; //(原理就是先找到脚本,再转发9000处理)
69 fastcgi_pass 127.0.0.1:9000; #将请求转发给本机9000端口,PHP解释器
70 fastcgi_index index.php;
71 #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
72 include fastcgi.conf;
73 }
:wq
重起nginx服务:
[root@proxy ~]# nginx -s reload
创建PHP页面,测试LNMP架构能否解析PHP页面
[root@proxy ~]# vim /usr/local/nginx/html/test1.php
[root@proxy ~]# firefox http://192.168.4.5/test1.php
[root@proxy ~]# cp lnmp_soft/php_scripts/mysql.php /usr/local/nginx/html/test2.php
[root@proxy ~]# vim /usr/local/nginx/html/test2.php
[root@proxy ~]# firefox http://192.168.4.5/test2.php
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
nginx 是接受客户请求 80端口
php 执行代码 9000端口
mysql 是永久存储数据 3306端口
一个server是一个虚拟主机
location 是匹配用户的地址栏,同一个location可以写很多地址,(一个网站可以写入多个网页)
nginx的配置文件都是备份的,
[root@proxy ~]# ls /usr/local/nginx/conf/
cert.key koi-utf scgi_params
cert.pem koi-win scgi_params.default
fastcgi.conf mime.types uwsgi_params
fastcgi.conf.default mime.types.default uwsgi_params.default
fastcgi_params nginx.conf win-utf
fastcgi_params.default nginx.conf.default
4)LNMP常见问题
Nginx的默认访问日志文件为/usr/local/nginx/logs/access.log
Nginx的默认错误日志文件为/usr/local/nginx/logs/error.log
PHP默认错误日志文件为/var/log/php-fpm/www-error.log
如果动态网站访问失败,可用参考错误日志,查找错误信息。
模拟错误:
[root@proxy ~]# systemctl stop php-fpm
[root@proxy ~]# firefox http://192.168.4.5/test1.php
##什么报错,都没有看出来。
[root@proxy ~]# tailf /usr/local/nginx/logs/error.log
Connection refused) while connecting to upstream,
upstream: "fastcgi://127.0.0.1:9000"
[root@proxy ~]# nginx -s stop
[root@proxy ~]# firefox http://192.168.4.5/test1.php
连报错信息都没有:因为压根就没有进去。看日志也没有报错