最近在搭建一个旧系统,需要低版本的 php 环境,这里简便写了下搭建过程,以便后来查询。
- 软件版本
lnmp 1.8
nginx 1.20.1
php 5.5
mongodb 4.0.26
// php 扩展
mongo 1.6.0
部署
- 部署环境
zendframework + php + nginx + mongodb
- 安装依赖
php composer.phar i
- 配置 nginx,见 rms.conf 配置文件
环境安装及配置
- lnmp 安装
执行命令,按提示选择各软件的版本
wget http://soft.vpser.net/lnmp/lnmp1.8.tar.gz -cO lnmp1.8.tar.gz && tar zxf lnmp1.8.tar.gz && cd lnmp1.8 && ./install.sh lnmp
参考网页
https://lnmp.org/install.html
配置 nginx(参照下面的 rms.conf)
配置 php
// 默认生成的配置设置根目录为当前执行的目录
// 当前项目需要他根目录设置为代码的根目录
# fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
fastcgi_param PHP_ADMIN_VALUE "open_basedir=/var/www/rms";
- mongodb 安装和初始化登录用户
//安装说明
https://zhuanlan.zhihu.com/p/79973717
//配置
// /etc/mongod.conf
port=27017
dbpath= /data/mongodb/db
logpath= /data/mongodb/log/mongodb.log
logappend=true
fork=true
maxConns=100
journal=true
storageEngine=wiredTiger
bind_ip= 0.0.0.0
auth= true
//启动
mongod --config=/etc/mongod.conf
//登录
mongo -u rms -p password
//创建用户
// 1.设置无密码登录(需要设置 config 中 auth=false)
mongo
// 2.切换到对应数据库
use ms
// 3.管理员角色
db.createUser( { user: "root", pwd: "***", roles: [ { role: "dbOwner", db: "ms" } ] } )
// 4.用户角色
db.createUser( { user: "rms", pwd: "***", roles: [ { role: "readWrite", db: "ms" } ] } )
- mongo 扩展安装(php)
// 安装 mongo 插件
// 注意这里使用 mongo 插件而非 mongodb 插件
// 因为集成 lnmp 里的 php 是自己编译,这里 mongo 插件也选择自己编译
$ wget http://pecl.php.net/get/mongo-1.6.0.tgz
$ cd /mongodb-1.5.2
$ /usr/local/php/bin/phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make && make install
// 安装后设置 php.ini
// 目录选择编译后生成目录
extension =/usr/lib/php/extensions/debug-non-zts-20151012/mongo.so
// 设置数据库连接的问题
// 在mongodb@4.0 + mongo@1.6.0 设置的连接参数需要 authMechanism
// 配置如下
'connectionString' => 'mongodb://rms:I574Jcl6@127.0.0.1:27017/ms',
'options' => array(
'authMechanism' => 'SCRAM-SHA-1'
)
// 安装参照内容
https://www.runoob.com/mongodb/mongodb-install-php-driver.html
// php mongo 的扩展
https://pecl.php.net/package/mongo
- nginx 配置
// conf/vhost/rms.conf
server
{
listen 80 default_server reuseport;
#listen [::]:80 default_server ipv6only=on;
server_name _;
index index.html index.htm index.php;
root /var/www/rms/public;
#include enable-php.conf;
location ~ \.php {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location / {
if (!-e $request_filename) {
rewrite ^/(.*) /index.php?$1 last;
}
}
location /nginx_status
{
stub_status on;
access_log off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /var/www/log/rms.access.log;
error_log /var/www/log/rms.error.log;
}