目录
1. LAMP/LNMP是什么,为什么要使用?
2. Linux系统安装与虚拟机配置
3. 配置虚拟机网络属性及静态IP
4. 在linux中搭建LAMP/LNMP环境
5. PHP-fpm 相关知识
6. nginx配合php工作的相关配置以及自身的一些配置解析
本篇博客详细讲解了LAMP/LNMP的环境搭建,附带了一些自身搭建时产生的报错,并且有虚拟机静态ip的相关配置,重点讲解了nginx和php相关的工作原理和相关配置。
是指Linux(操作系统)+ Apache / Nginx(HTTP 服务器)+ MySQL(数据库)和 PHP(网络编程语言),一般用来建立 web 应用平台。
接下来我们按照顺序依次讲解一下它们的具体内容
1. Linux:它是开源的类unix操作系统,支持免费试用和传播,他有很多发行版本:CentOS,RedHat(红帽),Ubuntu以及国内的红旗。那么既然是操作系统,他与我们使用的windows又有那些区别呢?首先,两者的用户假设不同,也就是面向的群体不同,通俗一点来讲,就是说linux的用户呢,在做操作时时会有目的有思路去做的,而windows用户的目的性和思路不是很强。然后在软件哲学方面也有一定的不同,感兴趣的可以深入了解,这里不过多介绍。并且使用windows系统的用户都知道,windows的系统是需要购买的,而且windows系统使用起来需要注意关机问题,如果持续性使用时间太长,就会出现卡顿等现象。但linux则不同,linux完全免费而且稳定高效,它可以做到连续24小时不间断运行,并且数年不需要重启。
2. Mysql:是一款开源免费的高性能关系型数据库。
3. Apache:是一款web服务器软件,用来监听端口,接受请求,解析HTTP协议,然后将内容转发给php。
4. Nginx:与Apache一样,是一款web服务器软件,但相比之下,nginx的前景更好,配置更轻松,性能更加优秀
5. PHP:是世界上最优秀的语言,如果你不知道这门语言,可以先收藏本片博客,然后去翻阅资料了解一下php后再来浏览。
这里我们提到了两款web服务器软件:Apache和Nginx,这两者究竟有怎样的区别呢,接下来跟大家简单介绍一下:
这里带大家系统的安装一下这个linux以及虚拟机的一些配置等,使用购买的服务器的可以跳过。
首先我们需要下载一个虚拟机软件,这种软件有很多,vmware,virtualBox等,这里大家可以根据自己的喜好自行下载,我这里用vmware来举例说明。
下载好虚拟机后,我们打开,来到主页,来配置我们第一个虚拟机
点击新建虚拟机开始虚拟机的配置
选择自定义(高级),点击下一步
一直下一步到这个页面,给自己的虚拟机起一个名字,选择虚拟机的安装位置,推荐D盘
点击下一步来到虚拟机配置页面
点击下一步选择虚拟机内存,一般默认即可
再次一直下一步到选择磁盘页面,默认8GB,我这里设置了20GB,剩下的全部默认下一步就好,最后点击完成
然后我们会返回到首页,看到我们所创建的虚拟机,然后我们还要给虚拟机做一些配置
在这里我们需要一个镜像的包,这个包大概9G左右,我们打开centos的官网:CentOS官网,点击download,点击×86_64,优先原则选择第一个,然后找到everything-2009,点击下载
然后我们回到虚拟机,将我们下载好的centos镜像配置给我们的虚拟机,点击确定然后开启我们的虚拟机
出现这个页面时,我们选择第一个,然后回车
加载完成后会出现选择语言的页面,这里我们下拉找到中文,然后右边选择简体中文即可
接下来会出现这个页面,这就相当于我们买新电脑回来时的设置一样,这里注意时区要选择亚洲 上海,然后我们点击这个带黄色三角的,点击自动分区,点击完成
下拉找到网络与主机名,点击进入将我们的网络打开 ,然后点击完成即可
然后我们点击开始安装,会出现这个页面,这里是让我们设置登录管理员用户的密码的,我们点击root密码来设置,点击完成
可以选择创建用户,在创建用户时也可以选择是否给该用户管理员权限,当我们给了管理员权限后,该用户就可以做一些管理员可以做的事情
然后我们等待安装,完成后会提示我们重启,重启即可
重启完成后会提示我们登录,这里我们账号输入root,密码输入我们刚刚设置过的,出现这样的页面就是登录成功了。
我们安装好虚拟机后第一件事当然就是试一试网络是否通畅,在linux中我们可以通过ping的方式来测试网络是否通畅
ping www.baidu.com
如果出现ping不通的情况那么我们需要到设置中更改一下配置
cd /etc/sysconfig/network-scripts/
#切换到配置文件目录
ls
#查看文件,一般来说是第一个文件
vi ifcfg-ens33
#打开网络配置
找到ONBOOT这一行,如果为no,改为yes后:wq保存退出
重启网络服务
systemctl restart network.service
然后重新尝试ping网络,这样时就是网络通畅了
然后我们开始为我们的虚拟机设置一个静态的IP,这样我们就可以在任意一台机子上访问我们的虚拟机了,首先我们需要在vmware页面中找到相关的IP配置信息,我们打开vmware首页,点击编辑,点击虚拟网络编辑器
点击选择NAT模式,然后点击NAT设置
这里我们可以看到这些配置,然后我们回到虚拟机,重新打开网络配置文件
找到BOOTPROTO这一行,将等号右边改为static,然后换行输入以下内容,保存退出,重启网络设置
IPADDR = 192.168.226.201
NETMASK = 255.255.255.0
GATEWAY = 192.168.226.2
DNS1 = 8.8.8.8
然后我们输入下面这个命令来查看是否修改成功,这里出现这个就是设置成功,IPADDR也就是虚拟机的静态IP,这里有两点需要注意:
ip addr
接下来我们还需要设置一下防火墙,因为我们在别的机器上访问虚拟机属于外部访问,需要本机防火墙开放22端口,然后重启防火墙
#开放22端口
firewall-cmd --zone=public --add-port=22/tcp --permanent
#重启防火墙
systemctl restart firewalld.service
然后我们来打开cmd小黑盒尝试连接,连接成功,账户名@IP地址,使用ssh连接即可
ssh [email protected]
首先我们来安装一些比较重要的使用软件vim和wget,安装完成后会提示我们完毕
yum install vim
yum install wget
然后我们在命令行中开始下载我们的php
#下载压缩包
wget https://www.php.net/distributions/php-7.4.30.tar.gz
#查看文件夹内文件,看压缩包的文件名是什么
ll
#由于是压缩包,我们使用前需要解析成文件
tar -zxvf php-7.4.30.tar.gz
#再次查看,发现已经有了解压后的文件
ll
接下来我们来下载一个fpm支持,php与nginx交互时要用到php-fpm,至于fpm是什么有什么作用,文章下一节会重点讲解
yum install gcc gcc++ libxml2-devel
然后我们切换到php文件下,开始编译安装php
#切换目录
cd php-7.4.30
#执行php的安装
./configure --prefix=/usr/local/php7-rong --enable-fpm
#编译
make
#编译安装
make install
完成后我们后退到根目录下,使用命令创建一个php文件,文件里编写php代码
vim demo.php
#代码
然后我们保存退出,执行命令来运行php文件,测试我们的php是否安装成功
/usr/local/php7/bin/php demo.php
这里下载并解压好后,我们也需要下载一些mysql所需要的插件
yum install cmake gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel
接下来我们切换进入mysql文件夹,执行编译安装,这里与php有一点不同
#cmake是一款跨平台的安装工具
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1\
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
#编译安装
make
make install
然后我们使用mysqld命令启动mysql然后输入mysql打开即可
然后cd到解压后的文件内执行编译安装
./configure --prefix=/usr/local/apache2
这里会报错说一个APR没有找到,所以我们要安装一下,首先我们切回到上级目录,安装两个apr相关的插件
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
//解压
tar -zxvf + 安装包
这里我们解压出来的apr是携带版本号的,我们需要重命名去掉版本号并且将文件放到apache目录下的srclib目录
最后我们还要安装一个依赖,是一个正则,pcre,下载完成后,他会命名成一个download的包,
//下载包
wget https://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.gz/download --no-check-certificate
//重命名
mv download pcre.tar.bz2
//解压
tar -zxvf pcre.tar.bz2
这些完成后我们切换到pcre文件夹下,执行编译安装
./configure --prefix=/usr/local/pcre-8.37
make
make install
pcre安装完成后,我们回到apache安装目录下,继续执行我们的apache的安装
./configure --prefix=/usr/local/apache -with-pcre=/usr/local/pcre-8.37/bin/pcre-config -with-included-apr
make
make install
这些我们执行完后,我们切换到apache的运行目录/usr/local/apache2/bin,到这里我们来运行apache来尝试一下
这里可能会出现一些报错,一般来说是未开放80端口,参考文章上面讲到的开放22端口,在这里开放一下80端口,然后重启防火墙,再次尝试,会出现下面这个结果,这时我们浏览器访问我们的ip地址,出现it works!表示apache安装并运行成功
回到小黑盒的根目录下,下载并解压,这里我们顺便提一嘴,我们可以查看一下nginx的文件大小,我们会发现,nginx很小,这就说明nginx足够轻量
ls -alh | grep nginx
接下来我们切换到nginx安装目录下,执行编译安装
./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.37/
make
make install
当我们./configure时出现下面这个报错时,可以yum安装一个插件
yum install -y zlib-devel
安装完后,我们切换到nginx的运行目录下,来运行nginx尝试一下,但这里我们要注意,我们要查看是否有apache的进程在运行,如果有我们需要杀死进程,否则我们nginx无法正常运行
ps aux | grep httpd
kill -9 + 端口号
//启动nginx
cd /usr/local/nginx/sbin
./ nginx
浏览器访问出现welcome to nginx!则运行成功
至此我们整个LAMP/LNMP环境搭建完成。
当我们是使用LNMP来搭建web服务时,我们需要注意nginx和php-fpm之间的相互配合,首先我们要启动php-fpm,我们切换目录到/usr/local/php7/sbin/,启动我们的php-fpm,这里我整理了我的报错,如果一致可以通过我的来尝试解决,当然还要具体看报错内容。
cd /usr/local/php7/sbin
./php-fpm
这样的报错是我们etc目录下的配置文件没有以conf结尾,所以索引不到
cd /usr/local/php7/etc/
mv php-fpm.conf.default php-fpm.conf
这样的报错我们就需要去他所说的文件目录内同样的修改后缀为.conf
cd /usr/local/php7-rong/etc/php-fpm.d
mv www.conf.default www.conf
然后我们再次尝试启动php-fpm,查看是否启动成功
cd /usr/local/php7/sbin
./php-fpm
ps aux | grep php-fpm
以上就是在使用LNMP环境时需要注意的nginx和php的一个工作配置,需要我们启动php-fpm,那么还有哪些配置呢,首先我们来打开我们的/usr/local/nginx/conf,可以看到这里有很多conf配置文件,所以conf就是我们nginx的配置文件夹。我们打开下面的nginx.conf
cd /usr/local/nginx/conf
vim nginx.conf
这里会有一些我们在使用nginx的一些配置
我们在http里找到server,在这里我们可以添加一些关于php的配置
location ~ \.php {
//请求给nginx后,nginx转接给我们本地的9000端口
fastcgi_pass 127.0.0.1:9000;
fastcgi_index /index.php;
include /usr/local/nginx/conf/fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
我们再来看看php-pfm的配置,切换到php目录下,打开php-fpm.conf
cd /usr/local/php7/etc
vim php-fpm.conf
这里我们可以看到,在配置文件中他include了一个别的配置文件夹下的所有配置文件,那么我们再切换到这个目录下,打开里面的www.conf
cd php-fpm.d
vim www.conf
这里的user和group是我们启动php-fpm时子进程的所属用户和所属用户组。我们可以参考上面启动的这个php-fpm,第一个php-fpm是我们启动的php-fpm,他是所有php-fpm进程的master进程,所以用户时root,而下面两个就是主进程派生出的子进程,这里的用户就属于nobody了。这里就是这个意思。
然后为什么这个php-fpm启动后就会派生出两个子进程呢?我们再次回到刚才的www.conf配置文件中,向下我们会找到一组pm的相关配置,这些就是我们子进程的有关配置。
//杀死php-fpm进程
kill -USR2 + 进程号
到这里我们整个的环境搭建,nginx和php的交互以及配置,php-fpm等的讲解全部结束,可能有的地方描述的不是很合适或者不是很清楚,但整体都是ok的。