虽然说是非root权限,但是编译php所需要的依赖包还是需要root权限的。
安装之前先保证linux有gcc和g++,因为很多东西都需要这两个库,如果没有,运行以下命令
yum install -y gcc gcc-c++
一般linux里面都会有,如果已经存在,它会报已经存在无法安装
一、安装nginx
1. 安装nginx前,我们需要安装3个依赖包zlib、pcre、openssl(此需要root权限)
yum install -y zlib pcre openssl
2. 如果上面没有无法yum,那就外部下载zlib、pcre、openssl的依赖包再安装,如果yum成功,请跳过此步
2.1 安装 pcre(make的时候此需要root权限)
下载pcre依赖包 http://ftp.pcre.org/pub/pcre/
上传到目录里 //这边目录为/home/nginx/(是nginx用户)
cd /home/nginx/
tar -zxvf pcre-8.36.tar.gz
cd pcre-8.36
./configure
make
make install
2.2 安装openssl(make的时候此需要root权限)
下载openssl依赖包 http://distfiles.macports.org/openssl/
上传到目录里 //这边目录为/home/nginx/(是nginx用户)
cd /home/nginx/
tar -zxvf openssl-1.0.1e.tar.gz
cd openssl-1.0.1e
./config
make
make install
2.3 安装zlib(make的时候此需要root权限)
下载zlib依赖包 http://www.zlib.net/fossils/
上传到目录里 //这边目录为/home/nginx/(是nginx用户)
cd /home/nginx/
tar -zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
CFLAGS="-O3 -fPIC" ./configure
make
make install
3. 安装nginx
下载nginx http://nginx.org/en/download.html
上传到目录里 //这边目录为/home/nginx/(是nginx用户)
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure --prefix=/home/nginx/nginx-server //--prefix=要安装的目录
make
make install
//如果是有进行第2步的操作,安装nginx的时候,配置时使用下面的命令,其余命令一样
./configure --prefix=/home/nginx/nginx-server --with-pcre=/home/nginx/pcre-8.36 --with-zlib=/home/nginx/zlib-1.2.3 --with-openssl=/home/nginx/openssl-1.0.1e
//--with-pcre=pcre安装的路径地址 --with-zlib=zlib安装的路径地址 --with-openssl=openssl安装的路径地址
4. 检测nginx是否成功
cd /home/nginx/nginx-server/sbin
./nginx -v 查看版本,检测是否安装成功
二 安装mysql
1. 安装mysql前先安装cmake小工具,使用cmake来编译(此需要root权限)
yum install -y cmake
2. 如果上面没有无法yum,那就外部下载cmake再安装,如果yum成功,请跳过此步(make的时候此需要root权限)
下载cmake https://cmake.org/files/
上传到目录里 //这边目录为/home/mysql/(是mysql用户)
cd /home/mysql/
tar -xvzf cmake-3.6.1.tar.gz
cd cmake-3.6.1
./bootstrap
gmake
make install
3. 安装mysql
下载mysql http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.6/
上传到目录里 //这边目录为/home/mysql/(是mysql用户)
tar -zxvf mysql-5.6.43.tar.gz
cd mysql-5.6.43
cmake -DCMAKE_INSTALL_PREFIX=/home/mysql/mysql-server //-DCMAKE_INSTALL_PREFIX=要安装的目录
make
make install
4. 配置 mysql
cd /home/mysql/mysql-server
rm -f /etc/my.cnf // 删除系统自带的mysql配置文件
./scripts/mysql_install_db
将 ./support-files/mysql.server 复制到 /etc/init.d/ 下
cp support-files/mysql.server /etc/init.d/mysqld
修改 linux 的环境变量
vim /etc/profile //vim不行的可以使用vi命令
将指针移动到最后一行,然后输入i就可以在最后一行编辑操作了,然后在/etc/profile文件的最后加入一句
export PATH="/home/mysql/mysql-server/bin:$PATH"
然后摁住“Esc”退出当前编辑操作,再摁住“Shift”+“:” 并输入“wq” 保存并退出
source /etc/profile // 这一句是让配置立即生效
service mysqld start // 启动 mysql
下面就可以操作数据库了
5. 修改数据库密码
mysql -u root -p
//密码为空,所以在输入密码的地方直接敲回车即可
use mysql; //选择数据库
UPDATE user SET password=PASSWORD('newpasswd') WHERE user='root'; //修改密码,其中newpasswd即为你所要设的密码
flush privileges; //刷新,设置完需要刷新才能生效
exit; //退出
三、 安装php
1. yum安装编译php过程所需要的编译工具和小程序(安装这些编译工具和小程序需要root权限)
yum install -y autoconf libtool-ltdl-devel freetype-devel libxml2-devel libjpeg-devel libpng-devel openssl-devel curl-devel ncurses-devel libcap-devel sendmail pcre-devel libxslt-devel bzip2-devel diffutils unzip ntp bzip2 patch curl libjpeg libpng freetype libxslt libxml2 libxml2-devel
//建议一个一个安装,防止出错
2. 如果第一步中无法安装libxml2,请外部下载libxml2的依赖包并安装,如果已经安装libxml2,请跳过此步
安装libxml2(安装libxml2必须要root权限)
下载libxml2 http://xmlsoft.org/sources/
上传到目录里 //这边目录为/home/php/(是php用户,此用户不一定是php用户,可以是其他用户,其他用户即为其对应用户名为目录,因为linux创建用户的时候都会在/home目录产生对应的文件目录,而我们使用的用户即为在对应目录下面进行操作,根据公司所设置的用户来操作)
cd /home/php/
tar -zxvf libxml2-2.9.1.tar.gz
cd libxml2-2.9.1
./configure--with-python=no
make
make install
3. 安装 php
下载php https://museum.php.net/php5/
上传到目录里 //这边目录为/home/php/(是php用户)
tar -zxvf php-5.3.27.tar.gz
cd php-5.3.27
./configure --prefix=/home/php/php5 --with-config-file-path=/home/php/php5/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm --enable-sockets --enable-zip --enable-calendar --enable-bcmath --enable-soap --with-zlib --with-iconv --with-gd --with-xmlrpc --enable-mbstring --with-curl --enable-ftp --with-mcrypt --without-pear --with-freetype-dir --with-jpeg-dir --with-png-dir --disable-ipv6 --disable-debug --with-openssl //--prefix=要安装的目录
make
make test //test完之后,输入n
make install
//中途可能会出现libmcrypt的问题错误,如果出现,下载安装libmcrypt,安装过程如下:(安装libmcrypt必须要root权限)
下载libmcrypt http://soft.7dot.com/
上传到目录里 //这边目录为/home/php/(是php用户)
cd /home/php/
tar -zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local //--prefix=要安装的目录
make
make install
到此为止,php就安装好了,接下来就是配置php和nginx
四、 php和nginx配置
1. php配置
cp php.ini-development /home/php/php5/etc/php.ini
cp /home/php/php5/etc/php-fpm.conf.default /home/php/php5/etc/php-fpm.conf
vim /home/php/php5/etc/php.ini //vim不行的可以使用vi命令
打开php配置文件找到cgi.fix_pathinfo配置项,这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0。
设置完毕保存并退出
//vim或vi配置文件之后,输入“/cgi.fix_pathinfo/”即可找到,如果没找到,可以连续输入几次,然后在找到的那个地方,输入“i”指针即可进入当前行数进行编辑模式。修改完之后摁住“Esc”退出编辑模式,然后摁住“Shift”+“:” 并输入“wq” 保存并退出。
注意一个地方就是php.ini配置文件的位置可以在编译前配置参数中设置,编译参数可以写成:--with-config-file-path=/home/php/php5/etc 这样的话php就回去指定的目录下读取php.ini配置文件,如果不加这个参数默认位置就是php安装目录下的lib目录,具体也可以在phpinfo()输出界面查看,如果php.ini放到其他位置,php读取不到,那么所有的配置修改后都是不生效的,这点要注意
vim /home/cib/php/etc/php-fpm.conf
修改php-fpm.conf 的user和group为对应打开网站的用户和组(如果打开网站的用户和组是www,那就将nobody改成www,此处改为nginx)
user = nginx
group = nginx
启动 php-fpm(必须root权限)
/home/php/php5/sbin/php-fpm
如果出现ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use 错误
killall php-fpm
再重新启动启动 php-fpm
/home/php/php5/sbin/php-fpm
2. nginx 配置
cd nginx-server/conf/ (是nginx用户,启动nginx必须为nginx用户)
vim nginx.conf
将nginx.conf 中的http {}的末尾添加上
include /home/nginx/nginx-server/conf.d/*.conf; //必须先创建一个conf.d目录,*.conf为各个站点的nginx的配置文件
保存并退出
然后将conf.d目录下的各个.conf文件进行配置(此处用test.conf来替代)
cd .. //退出当前目录到前一个目录
cd conf.d //进入此目录下的conf.d目录
cp /home/nginx/nginx-server/conf/nginx.conf /home/nginx/nginx-server/conf.d/test.conf //复制nginx.conf文件到指定目录并改名为test.conf
vim test.conf //将test.conf目录里面全部删除并写入以下内容(vim不行的用vi命令,怎么编辑保存退出等参考前面配置php.ini和配置环境变量)
server {
listen 80; //为对应的连接外网的端口号
server_name localhost; //为对应的域名,如果没有内网连接可以使用对应IP ,然后端口号80改为其他端口
root html/test; //网站安装的相对路径,因为这是直接安装在nginx底下的html目录下面,也可以直接路径,网站文件为test(测试命名,具体网站文件最好命名跟项目相关的)
index index.html index.htm index.php; //网站默认打开页面
location ~ \.php$ { //支持php的模块
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; //$document_root 为前面root设置的路径
include fastcgi_params;
}
}
//此处需要注意的是非root权限无法使用1024以下的端口号
五、 测试
1. 启动nginx(最好是用nginx用户)
进入nginx启动地址
cd /home/nginx/nginx-server/sbin/ //nginx用户,直接cd nginx-server/sbin/
./nginx //启动nginx
启动之前建议先./nginx -t查看下nginx配置文件是否正确
./nginx -s reload //重启nginx。如果之前已经启动了nginx,就不宜使用./nginx命令启动,而应该用此处的命令,不然会出现端口报错
2. 测验
写一个index.php文件放在test网站目录下
index.php文件写入如下内容:
<?php
phpinfo();
?>
然后通过域名打开,如果能够打开phpinfo的信息,即php配置信息,那就代表php安装配置成功。
//由于这边还未有域名绑定,所以只能使用“IP:端口”的方式打开。
至此全部结束。
其余的一些小东西
1. 使用端口号的使用,可能遇到防火墙阻止,即测试网站打不开,此时参考https://www.cnblogs.com/chenlizhi/p/6668656.html,进行设置端口号。
2. 端口被占用问题,参考https://www.jianshu.com/p/8f6a42fb0654,或者参考https://blog.csdn.net/qq_27252133/article/details/53646986的第二个方法,进行杀进程处理
3. mysql无法被外部IP连接,导致后期搭建php网站无法连接数据库,此时参考https://www.cnblogs.com/xiaochongzi/p/6627418.html,进行设置外网可以连接。
安装步骤仅供参考,linux环境不一样,安装的情况可能也不一样,几个依赖包和库(就是必须使用root权限的)可以让拥有root权限的人员去帮忙安装,依赖包的路径可以自己定义,只要能够对应上相应的依赖包即可。一般生产环境是不使用root权限的,因为权限太高。
参考的文章:https://blog.csdn.net/nouswait/article/details/83105378 主要参考来源
https://www.cnblogs.com/freeweb/p/5425554.html 次要参考来源
https://blog.csdn.net/hometing218/article/details/79516686 安装cmake
https://www.cnblogs.com/nucdy/p/5784809.html 修改数据库密码
https://www.cnblogs.com/Erick-L/p/7066564.html nginx多站点配置
https://www.cnblogs.com/ghjbk/p/6728100.html php-fpm 出错问题