一,源码安装nginx
第一步点击进入http://nginx.org/download/ 官网下载合适的版本,推荐稳定版,用命令下载wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar zxvf nginx-1.14.0.tar.gz解压文件
下载nginx的依赖文件wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
tar zxvf pcre-8.38.tar.gz解压文件
cd pcre-8.38
配置依赖安装路径./configure --prefix=/usr/local/pcre-8.38
make
sudo make install
cd nginx-1.14.0
./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.38/
路径释义 --prefix=/usr/local/nginx 安装目录 --with-pcre=../pcre-8.38/ 依赖正则 URL重写的功能
make && make install
编译完成后
cd /usr/local/nginx/sbin
./nginx
由于用的是阿里的服务器需要配置阿里的安全组
然后关闭防火墙或配置防火墙
开启80端口
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
重启防火墙
启动:# systemctl start firewalld
查看状态:# systemctl status firewalld 或者 firewall-cmd --state
停止:# systemctl disable firewalld
禁用:# systemctl stop firewalld
配置成功后用浏览器访问外网ip
表示安装成功。
二,安装Mysql
首先从官网下载mysql包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11.tar.gz
tar -zxvf mysql-8.0.11.tar.gz 安装mysql的依赖工具
编译配置文件 cmake -DCMAKE_INSTALL_PREFIX= /usr/local/mysql \
-DMYSQL_DATADIR= /usr/local/mysql/data \
-DSYSCONFDIR= /etc \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR= /usr/local/mysql/data/mysql .sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_DOWNLOADS=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DMYSQL_MAINTAINER_MODE=1 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST= /usr/share/doc/boost-doc-1 .41.0/
配置中完成后编译mysql make 编译过程会比较慢,对于配置较低的服务器,可能会在编译中突然中断并error,百度一下error信息,如果是因为内存过小而中断,建议使用yum安装吧! 如果编译失败 点击这里 去yum源安装mysql (删除以上mysql所操作的所有相关文件、文件夹),成功编译的请忽略这段话,继续以下的步骤 sudo make install --complate! 安装完成之后需要对数据库一个小小的配置 简要步骤如下
三.安装php 1.yum安装php的依赖库 yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib libxml2-devel ncurses-devel bison libtool-ltdl-devel libiconv libmcrypt mhash mcrypt pcre-devel openssl-devel freetype-devel libcurl-devel 2.下载需要的php源码包 wget http://cn2.php.net/distributions/php-5.6.6.tar.gz tar -zxvf php-5.6.6.tar.gz 3.配置php的编译参数 ./configure --prefix=/usr/local/php --with-mysql --with-mysqli --with-pdo_mysql --with-iconv-dir --with-zlib --with-libxml-dir --enable-xml --with-curl --enable-fpm --enable-mbstring --with-gd --with-openssl --with-mhash --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-freetype-dir=/usr/lib64 4.开始编译安装 make |
5.编译完成进入安装目录
cd /usr/local/php
启动php
/sbin/php-fpm
报错了
[19-Apr-2018 16:02:08] ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)
[19-Apr-2018 16:02:08] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'
[19-Apr-2018 16:02:08] ERROR: FPM initialization failed
错误信息说是找不到php-fpm.conf
到php的配置目录
cd /usr/local/php/etc
有一个php-fpm.conf.default的文件,cp复制
cp php-fpm.conf.default php-fpm.conf
编辑 php-fpm.conf
找到以下配置项, 取消掉配置注释
pid = run/php-fpm.pid
再次运行
/usr/local/php/sbin/php-fpm
报错了:
[19-Apr-2018 16:07:17] ERROR: [pool www] cannot get uid for user 'nginx'
[19-Apr-2018 16:07:17] ERROR: FPM initialization failed
说nginx用户不存在,那么建立nginx用户
useradd nginx
再次启动
/usr/local/php/sbin/php-fpm
没有任何报错,说明运行成功了
6.设置mysql开机启动
开机启动的配置文件是:/etc/rc.local
# vi /etc/rc.local
在最后一行添加
/usr/local/php/sbin/php-fpm # 添加进来
我们在新安装扩展后,是需要重新php-fpm的,已使扩展生效。
最简单粗暴的重新php-fpm的方式是:
ps aux |grep php
kill -9 1234 杀死进程 kill 掉,再用/usr/local/php/sbin/php-fpm 这样启动。
7.安装完成后还需要配nginx解析php文件
1、进入nginx目录
cd /usr/local/nginx
2、编辑配置文件
vi ./conf/nginx.conf
在 server 下找到
location / {
root html;
index index.html index.htm index.php; # 加上 index.php
}
去掉前面注释 修改内容#
location ~ \.php$ {
root /usr/local/nginx/html; # 绝对路径配置到html下
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
3、然后平滑重启nginx
./sbin/nginx -s reload
没有报错,说明重启成功
4.在nginx的html中写一个phpinfo()的php文件去浏览器访问验证是否解析成功,如果成功则解析成功。