提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
本实验是在centos7.9完成
一、PHP介绍
一、PHP介绍
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
优点:灵活,上手快,易修改,发布快捷,环境好部署
PHP主要用在服务器端上用于Web开发,约占网站总数的80%。 Facebook最初使用的就是PHP,PHP在WordPress内容管理系统中扮演的角色让它很受欢迎。
官网
https://www.php.net
#软件包获取
https://www.php.net/distributions/php-7.3.4.tar.bz2
二、安装步骤
1)依赖包安装
yum install gcc-c++ libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel gd net-snmp-*
libzip版本低问题处理
libzip要求1.1及以上,系统提供1.0需要升级
官方网站: https://libzip.org/
代码如下(示例):
wget https://libzip.org/download/libzip-1.5.2.tar.gz --no-check-certificate
tar xvf libzip-1.5.2.tar.gz
cd libzip-1.5.2
mkdir build
cd build
cmake ..
make -j4 && make install
2)配置
wget https://www.php.net/distributions/php-7.3.4.tar.bz2 --no-check-certificate
tar xvf php-7.3.4.tar.bz2
cd php-7.3.4
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli=mysqlnd --enable-pdo --with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local/ --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-pcre-regex --with-zlib --with-bz2 --enable-calendar --disable-phar --with-curl --enable-dba --with-libxml-dir --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-jis-conv --with-mhash --enable-mbstring --enable-opcache=yes --enable-pcntl --enable-xml --disable-rpath --enable-shmop --enable-sockets --enable-zip --enable-bcmath --with-snmp --disable-ipv6 --with-gettext --disable-rpath --disable-debug --enable-embedded-mysqli --with-mysql-sock=/usr/local/mysql/ –with-apxs2=/usr/local/apache/bin/apxs
配置参数说明
---prefix=/usr/local/php 安装路径
--with-config-file-path=/usr/local/php/etc 配置文件路径
--with-mysqli=mysqlnd --enable-embedded-mysqli --with-mysql-sock=/usr/local/mysql/ mysql支持及客户端设置
--enable-pdo --with-pdo-mysql=mysqlnd 开启php pdo,PDO一是PHP数据对象(PHP Data Object)的缩写
--with-iconv-dir=/usr/local/ 指定转码工具,各种字符集间的转换
--enable-fpm --with-fpm-user=www --with-fpm-group=www 支持php-fpm,允许以服务的方式启动PHP
--with-pcre-regex 支持pcre正则表达式
--with-zlib --with-bz2 --with-zlib-dir --enable-zip 支持压缩
--enable-calendar 支持日历
--disable-phar PHAR (“Php ARchive”) 是PHP里类似于JAR的一种打包文件。如果你使用的是 PHP 5.3 或更高版本,那么Phar后缀文件是默认开启支持的.
--with-curl 支持curl
--enable-dba 开启dba函数支持
--with-libxml-dir 支持xml文件库 对xml读取和查询
--enable-ftp 支持ftp
--with-gd --with-jpeg-dir --with-png-dir 支持图片
--with-freetype-dir 支持字库
--enable-gd-jis-conv 支持gd库
--with-mhash --enable-mbstring 支持加密
--enable-opcache=yes 开启opcache
--enable-pcntl 开启PHP进程控制支持 默认是关闭的
--enable-xml 允许xml文件
--disable-rpath 关闭额外的运行库文件
--enable-shmop 开启Shmop 是一个易用的允许PHP读取、写入、创建和删除Unix共享内存段的函数集
--enable-sockets 打开 sockets 支持
--enable-bcmath 增加bcmath扩展的支持,这是一个支持大整数计算的扩展。
--with-snmp 支持snmp
--disable-ipv6 关闭IPV6支持
--with-gettext 打开gnu 的gettext 支持,编码库用到
--disable-debug 关闭调试模式
–with-apxs2=/usr/local/apache/bin/apxs 作为apache模块运行
make -j4 && make install
出现问题
configure: error: off_t undefined; check your library configuration
解决方法
# 添加搜索路径到配置文件
echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64'>>/etc/ld.so.conf
# 更新配置
ldconfig -v
3)编译安装
make -j4 && make install
4)拷贝一个配置文件
cp php.ini-production /usr/local/php/etc/php.ini
三、PHP服务配置
PHP服务配置
egrep -v "^;|^$" /usr/local/php/etc/php-fpm.conf
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
daemonize = yes
include = /usr/local/php/etc/php-fpm.d/\*.conf
子配置文件
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
egrep -v "^;|^$" /usr/local/php/etc/php-fpm.d/www.conf
[www]
user = www
group = www
listen = /usr/local/php/etc/php-fpm.socket
listen.owner = www
listen.group = www
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
cp /root/php-7.3.4/sapi/fpm/php-fpm.service /etc/systemd/system/
useradd -s /sbin/nologin -r www
#php启动
systemctl daemon-reload
systemctl enable php-fpm
systemctl start php-fpm
四、LAMP服务构建
cd /usr/local/apache/conf/
vim httpd.conf
apache修改主配置文件,添加以下行
Include conf/extra/php.conf
Include conf/extra/php-fpm.conf
vim /usr/local/apache/conf/extra/php.conf
LoadModule php7_module modules/libphp7.so
AddType application/x-httpd-php .php
vim /usr/local/apache/conf/extra/php-fpm.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
[root@centos7-server conf]# egrep "^listen" /usr/local/php/etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000
listen.backlog = 511
listen.owner = www
listen.group = www
listen.mode = 0660
[root@centos7-server conf]#
五、lamp部署-WordPress站点上线
1)获得网站代码
wget https://wordpress.org/latest.tar.gz
2)将源文件拷贝到APACHE的htdocs目录
mkdir /usr/local/apache/htdocs/wordpress/
tar xf latest.tar.gz -C /opt
mv /opt/wordpress/* /usr/local/apache/htdocs/wordpress/
chown www.www /usr/local/apache/htdocs/wordpress -R
3)配置虚拟主机
cat /usr/local/apache/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/usr/local/apache/htdocs/wordpress"
</VirtualHost>
<Directory "/usr/local/apache/htdocs/wordpress">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex phpinfo.php index.php index.html
</IfModule>
<FilesMatch "\.php$">
# Unix sockets require 2.4.7 or later
SetHandler "proxy:unix:/usr/local/php/etc/php-fpm.socket|fcgi://localhost/"
</FilesMatch>
4)重启生效
killall httpd
/usr/local/apache/bin/apachectl
systemctl restart fpm-php
六、安装wordpress
1)登陆数据库
mysql -u root -p123456
2)新建数据库 wordpress
mysql> create database wordpress;
Query OK, 1 row affected (0.01 sec)
3)wordpress安装
打开浏览器输入[http://IP]
总结
记得添加www用户,否则会出现报错
useradd -s /sbin/nologin -r www
记得把http.conf中此位置的模块进行注释
可能会出现的问题,就是数据库连接不上,是因为没有进行远程授权
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.17 sec)
mysql> grant all privileges on *.* to 'root'@'%';
Query OK, 0 rows affected (0.13 sec)
mysql> ALTER USER root@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.07 sec)
mysql>
mysql> set global local_infile=ON;
Query OK, 0 rows affected (0.09 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
5 rows in set (0.00 sec)
mysql> exit
Bye
最后重启三个服务即可
[root@centos7-server ~]# systemctl restart mysql
[root@centos7-server ~]# systemctl restart php-fpm
[root@centos7-server ~]# killall httpd
[root@centos7-server ~]# /usr/local/apache/bin/apachectl