系统版本:CENTOS 7.8
环境在docker容器中测试(容器中很多常用命令没有,所以部署环境前需要安装一下)
安装前准备
yum install lrzsz net-tools.x86_64 wget -y
curl 7.10以后的版本可能在安装php7指定参数时候会报错,可以先不安curl
wget https://curl.haxx.se/download/curl-7.54.0.tar.gz
tar zxvf curl-7.54.0.tar.gz
cd curl-7.54.0
make && make install
安装NGINX
1.安装nginx所需依赖
yum install gcc gcc-c++ openssl openssl-devel cyrus-sasl-md5 zlib-devel make pcre-devel -y
2.下载软件包
wget http://nginx.org/download/nginx-1.19.1.tar.gz
3.解压,编译,安装[cd /usr/local/src(软件包统一都放这里,安装是安装在/usr/local/软件名)]
tar zxvf nginx-1.19.1.tar.gz
cd nginx-1.19.1
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-stream
make -j4 && make install
4.创建运行用户和组(NGINX)[-r 创建系统用户;-g指定组;-s指定用户登录类型;-d用户登录时所在主目录;-M不自动创建用户家目录(-m是自动创建家目录)]
groupadd -r nginx && useradd -r -g nginx -s /sbin/nologin -d /usr/local/nginx -M nginx
5.备份主配置文件和拷贝最新主配置文件进去
备份:mv nginx.conf `date +%Y%m%d`.nginx.bak
新的配置文件如下:nginx.conf
______________________________________________________________________________________
#定义 Nginx 运行的用户和用户组
user nginx nginx;
#启动进程,通常设置成和 cpu 的数量相等
worker_processes 2;
worker_rlimit_nofile 102400;
#该指令是当一个 nginx 进程打开的最多文件描述符数目,最好与 ulimit -n 的值保持一致。
error_log /usr/local/nginx/logs/error.log;
#错误日志定义等级, [ debug | info | notice | warn | error | crit ]
pid /usr/local/nginx/nginx.pid;
#工作模式及连接数上限
events {
use epoll;
worker_connections 102400;
#单个后台 worker process 进程的最大并发链接数 (最大连接数=连接数*进程数)
multi_accept on;
#尽可能多的接受请求.
}
http {
include mime.types;
default_type application/octet-stream;
access_log /usr/local/nginx/logs/access.log;
sendfile on;
tcp_nopush on;
#防止网络阻塞
keepalive_timeout 60;
#keepalive 超时时间, 客户端到服务器端的连接持续有效时间,当出现对服务器的后继请求时, keepalive-timeout 功能可避免建立或重新建立连接。
tcp_nodelay on;
#提高数据的实时响应性
#开启 gzip 压缩
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 3;
#压缩级别大小,最大为9。值越小,压缩后比例越小,CPU 处理更快。值越大,消耗 CPU 比较高。
gzip_types text/plain application/x-javascript text/css
application/xml;
gzip_vary on;
client_max_body_size 10m;
#允许客户端请求的最大单文件字节数
client_body_buffer_size 128k;
#缓冲区代理缓冲用户端请求的最大字节数.
proxy_connect_timeout 90;
#nginx 跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90;
#后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90;
#连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k;
#设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k;
#proxy_buffers 4个缓冲区,每个缓存区32K。适合网页平均在 32k 以下
proxy_busy_buffers_size 64k;
#高负荷下缓冲大小(proxy_buffers*2)
#设定请求缓冲
large_client_header_buffers 4 4k;
client_header_buffer_size 4k;
#客户端请求头部的缓冲区大小,这个可以根据系统分页大小来设置,一般一个请求的头部大小不会超过 1k
#不过由于一般系统分页都要大于 1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE 取得。
open_file_cache max=102400 inactive=20s;
#这个将为打开文件指定缓存,默认是没有启用的, max 指定缓存数量,建议和打开文件数一致, inactive 是指经过多长时间文件没被请求后删除缓存。
open_file_cache_valid 30s;
#这个是指多长时间检查一次缓存的有效信息。
open_file_cache_min_uses 1;
#open_file_cache 指令中的 inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的。
server_tokens off;
#隐藏版本号
include vhost/*.conf;
}
6.mkdir -p /usr/local/nginx/conf/vhost
编辑虚拟主机测试文件
server
{
listen 80;
server_name localhost;
index index.html index.htm index.php;
root /usr/local/nginx/html;
location ~ \.php$
{
include fastcgi_params;
#fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
7.查看进程,测试
ps -ef|grep nginx
/usr/local/nginx/sbin/nginx -t
curl http://localhost/index.html
PHP7的安装
1.安装php所需扩展
yum install gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel -y
2.下载php软件包
cd /usr/local/src/
wget http://cn2.php.net/distributions/php-7.2.0.tar.gz
3.解压,编译安装,创建php7运行用户和组
tar zxvf php-7.2.0.tar.gz
cd php-7.2.0
groupadd -r php7 && useradd -r -g php7 -s /sbin/nologin -d /usr/local/php7 -M php7
./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-fpm --with-fpm-user=php7 --with-fpm-group=php7 --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/usr/local/mysql/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --enable-soap --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl --enable-bcmath --enable-sockets --with-gettext
make -j4 && make install
4.安装完成后,拷贝配置文件和服务文件到软件的安装目录下(做完这步直接到第5步)
cp php.ini-production /usr/local/php7/etc/php.ini
cp sapi/fpm/php-fpm.conf /usr/local/php7/etc/php-fpm.conf
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
扩展部分1:关于编译完成后拷贝文件的问题。
如果在编译的时候没有指定运行组和用户,那么需要我们手动去改。
cd /usr/local/php7.2/etc
cp php-fpm.conf.default php-fpm.conf (复制sapi下面的fpm.conf到etc下【第4步的做法】。和进入到php安装目录里复制etc下面的fpm.conf都行)
vim php-fpm.conf---->pid = run/php-fpm.pid 去掉前面的井号
cd /usr/local/php7.2/etc/php-fpm.d
cp www.conf.default www.conf
vim www.conf ----->需要编辑修改的地址
user = www 加入的用户名
group = www 加入的用户组
listen端口默认不需要改
扩展部分2:后期有需求或者需要在按如下修改配置文件
#修改配置文件
[root@S1 etc]# vim php-fpm.conf
#模块[global]定义pid及log文件路径,去掉注释;
[global]
pid = /usr/local/php7/var/run/php-fpm.pid
error_log = /usr/local/php7/var/log/php-fpm.log
#扩展文件配置
cp sapi/fpm/www.conf /usr/local/php7/etc/php-fpm.d/www.conf
#修改[www]池相关配置参数,可用默认
user = php7
group = php7
listen = 127.0.0.1:9000 # 或者指定php-fcgi.sock文件路径
listen.mode = 0660
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
5.拷贝服务文件
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
6.修改环境变量
sed -i '$a\PATH=\$PATH\:\/usr\/local\/php7\/bin' /etc/profile
sed -i '$a\export PATH' /etc/profile
source /etc/profile
7.查看php版本并启动服务
/etc/init.d/php-fpm start
php -v
ps -ef |grep php-fpm
8.在上面nginx的server.conf定义的路径/usr/local/nginx/html/下创建phpinfo的测试页面
echo " <?php phpinfo(); ?> " >/usr/local/nginx/html/index.php
image.png
MYSQL5.7(Yum)
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
yum -y install mysql-server
yum 指定安装目录安装Mysql
yum --installroot=/usr/local/mysql --releasever=/ -y install mysql-server
安装完成后,启动服务
systemctl start mysqld
查看默认随机密码
cat /var/log/mysqld.log|grep "password"
登陆上去,修改密码并刷新权限
alter user 'root'@'localhost' identified by '123456';
flush privileges;
开启远程授权(为了测试,开启了所有权限)
grant all privileges on *.* to root@'%' identified by 'passwd'
总结:
编译安装的思想:下载依赖和软件包--》解压--》指定安装路径以及参数--》编译, 安装
如php等服务要复制配置文件到安装目录(php.ini 和php-fpm.conf 和www.conf)--配置环境变量
网友评论