一、前言
thinkPHP是一款简单好用的框架,想要将其部署到liunx环境运行,需要安装php,nginx,php-fpm。
其中:
php是php语言的基础,可以通过yum install php 安装,但是会缺失mysqli的核心包,所以建议通过编译方式安装。
php-fpm是一个FastCGI管理器,提供了一个和外部通信的接口,有点类似于socket,使得PHP可以和其他应用进行交互数据(apache,nginx,cli等)。具体可以参考文章 php-fpm详细介绍
nginx 相比都很熟悉了,一个高性能的HTTP服务器和反向代理服务器。
理论上还需要装mysql,但是由于mysql一般都是独立管理,所以这次就不装了,mysql的安装流程可以参考 liunx 下安装mysql8
二、php安装
- 安装依赖包
yum install -y gcc gcc-c++ make sudo autoconf libtool-ltdl-devel gd-devel \
freetype-devel libxml2-devel libjpeg-devel libpng-devel \
openssl-devel curl-devel patch libmcrypt-devel \
libmhash-devel ncurses-devel bzip2 \
libcap-devel ntp sysklogd diffutils sendmail iptables unzip cmake sqlite-devel oniguruma oniguruma-devel
-
下载php:
wget https://www.php.net/distributions/php-7.4.5.tar.gz
-
解压:
tar -zxvf php-7.4.5.tar.gz
-
进入目录:
cd php-7.4.5
-
创建www用户,用于fpm
groupadd www
useradd -r www -g www
-
编译,这里要注意有没有报错提示。
./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=www \
--with-fpm-group=www --with-openssl --with-libxml-dir --with-zlib \
--enable-mbstring --with-mysqli=mysqlnd --enable-mysqlnd \
--with-gd --with-freetype-dir --enable-sockets --with-curl \
--enable-maintainer-zts
参数介绍:
–prefix 安装到的目录
–enable-fpm 开启fpm 模式,nginx 下必需开启
–enable-fpm-user fpm 的启动账户
–enable-fpm-group fpm 的启动账户组
–with-openssl 开启 openssl
–with-libxml-dir 开启 libxml
–with-zlib 开启 zlib
–enable-mbstring开启 mbstring
–with-mysqli=mysqlnd 开启 mysqli
–with-pdo-mysql 开启 pdo mysql
–with-gd 开启gd库
–enable-sockets 开启 sockets
–with-curl 开启 curl
–enable-maintainer-zts 开启 maintainer zts,以后安装多线程的话,这个必须开启
然后会出现一堆输出,最后的成功输出如下:
再运行:
make
make install
-
创建php的软连接,方便使用php命令
ln -s /usr/local/php/bin/php /usr/bin/php
-
运行php -v 命令,查看php是否安装成功
php -v
三、php-fpm
cd /usr/local/php/
cp etc/php-fpm.conf.default etc/php-fpm.conf
cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
cp /data/download/php-7.4.5/php.ini-production lib/php.ini
- 启动php-fpm,端口默认是9000,可以在 etc/php-fpm.d/www.conf里修改端口
/usr/local/php/sbin/php-fpm
- ps -ef|grep php 查看是否启动成功
四、安装nginx
- 安装nginx
yum -y install nginx
- 启动nginx
service nginx start
- 新增域名的配置,www.baidu.conf可以替换成你自己的域名,但注意文件必须以.conf结尾
vim /etc/nginx/conf.d/www.baidu.conf
- 内容
server {
# http是默认80,https是443
listen 443;
# 域名
server_name www.baidu.com;
ssl on;
# 证书路径
ssl_certificate /etc/nginx/ssl/www.baidu.com/www.baidu.pem;
ssl_certificate_key /etc/nginx/ssl/sf.qianhai12315.com/3560790_sf.qianhai12315.com.key;
# 访问日志的路径,非必需
access_log /var/log/nginx/www.baidu.access.log main;
location ~ \.php/?.*$ {
# 项目根目录
root /datanew/www;
# fastcgi 服务器地址,也就是php-fpm
fastcgi_pass 127.0.0.1:9000;
#fastcgi_param PATH_INFO $path_info;
#定义变量 $path_info ,用于存放pathinfo信息
set $path_info "";
#定义变量 $real_script_name,用于存放真实地址
set $real_script_name $fastcgi_script_name;
#如果地址与引号内的正则表达式匹配
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
#将文件地址赋值给变量 $real_script_name
set $real_script_name $1;
#将文件地址后的参数赋值给变量 $path_info
set $path_info $2;
}
# 包括fastcgi的默认配置文件
include fastcgi.conf;
# 更新几个默认配置,方便适配pathinfo路由格式
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
}
- 测试配置文件,如果出现 successful就说明配置正确,否则需要根据提示修改。
nginx -t
- 重新加载配置文件
nginx -s reload
四、环境部署完成
接下来只需要把thinkphp里的代码拷贝到nginx 里配置的 项目根目录下,然后访问 [https]😕/[域名]/[项目名]就可以了。
参考文章:
https://www.cnblogs.com/phpxj/p/11587381.html
https://www.osyunwei.com/archives/9804.html
https://blog.csdn.net/ahaotata/article/details/83825977
https://www.cnblogs.com/yangruizeng/p/7762309.html
https://blog.csdn.net/a315821168/article/details/80332676