目录
安装nginx编译安装nginxsystemd管理安装mysql编译安装mysqlsystemd管理登录mysql安装php编译安装php配置systemd服务关联nginx和php安装redis配置systemd服务作为一名php开发者,我们一定要懂得如何搭建php开发环境,目前主流的php开发环境组合是lamp和lnmp,本文将介绍如何在centos7.*上搭建lnmp开发环境。
各项版本说明:
centos7: 7.7
nginx: 1.16.1
mysql:5.7.28
php:7.4.0
wget
是一个从网络上自动下载文件的自由工具,支持通过 http、https、ftp 三个最常见的tcp/ip协议下载,并可以可以使用http代理。
sudo yum install wget
最小化安装centos7时如果无法使用ifconfig命令,则需要安装net-tools
,如果是安装的centos6版本则无需安装
sudo yum -y install net-tools
sudo yum -y install vim
vim ~/.vimrc # 编辑.vimrc配置文件t nu # 输入t nu 后退出保存
systemctl stop firewalld.rvice #令关闭防火墙systemctl disable firewalld.rvice #关闭防火墙开机自启动通过浏览器输入ip测试是否成功
(1) 安装 nginx
需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装gcc-c++。
yum -y install gcc gcc-c++
(2) pcre
是一个perl库,中文”perl兼容的正则表达式库”。安装nginx是为了使nginx支持具备uri重写功能的rewrite模块,如果不安装pcre库,则nginx无法使用rewrite模块功能,nginx的rewrite模块功能几乎是企业应用必须。
yum -y install pcre pcre-devel
(3) zlib
库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 centos 上安装 zlib 库。
yum -y install zlib zlib-devel
(4) openssl
是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 ssl 协议,并提供丰富的应用程序供测试或其它目的使用。 nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要安装 openssl 库 。
yum -y install openssl openssl-devel
说明: yum安装方式安装的pcre版本比较低,不过基本不影响使用,但是最好还是手动编译安装官网最新稳定版的openssl。
检查基础依赖包
上面的依赖安装完成后可以通过如下命令检查各个依赖安装是否成功
rpm -qa pcre pcre-develrpm -qa zlib zlib-develrpm -qa pcre pcre-devel
# 这里我们把安装包都放到了/usr/local/src目录下,便于统一管理cd /usr/local/src #切换到软件包目录wget /d/file/titlepic/nginx-1.16.1.tar.gz #下载nginx源码包uradd nginx -s /sbin/nologin -m #创建nginx用户用于管理nginx程序tar -zxvf nginx-1.16.1.tar.gz #解压nginx源码包cd nginx-1.16.1#注意,这里由于自定义了openssl位置,make时会报错,需要修改一个nginx源码里的一个conf文件#/usr/local/src/nginx-1.16.1/auto/lib/openssl/conf,修改方法见印象笔记#预编译./configure \--ur=nginx \--group=nginx \--prefix=/usr/local/nginx-1.16.1 \--with-http_v2_module \--with-http_ssl_module \--with-http_stub_status_modulemake && make install #编译 和 安装cd /usr/localln -s nginx-1.16.1 nginx #创建nginx的软链接
安装说明
--prefix=path #设置安装路劲--ur=ur #进程用户权限--group=group #进程用户组权限--with-http_v2_module # http2--with-http_stub_status_module #激活状态信息--with-http_ssl_module #激活ssl功能
vim /etc/profileexport path=/usr/local/nginx/sbin:$pathsource /etc/profile
新建并编辑/usr/lib/systemd/system/nginx.rvice
文件
vim /usr/lib/systemd/system/nginx.rvice
并添加如下内容(这里的配置是根据自己安装nginx的路径来配置的,nginx安装在了/usr/local
目录下)
[unit]description=the nginx http and rever proxy rverafter=network.target remote-fs.target nss-lookup.target[rvice]type=forkingexecstartpre=/usr/local/nginx/sbin/nginx -texecstart=/usr/local/nginx/sbin/nginxexecreload=/usr/local/nginx/sbin/nginx -s reloadexecstop=/usr/local/nginx/sbin/nginx -s stopprivatetmp=true[install]wantedby=multi-ur.target
通过yum安装的nginx,默认的nginx.rvice配置如下,可以作为参考
# /usr/lib/systemd/system/nginx.rvice[unit]description=the nginx http and rever proxy rverafter=network.target remote-fs.target nss-lookup.target[rvice]type=forkingpidfile=/run/nginx.pid# nginx will fail to start if /run/nginx.pid already exists but has the wrong# li网络编辑员nux context. this might happen when running `nginx -t` from the cmdline.# /d/file/titlepic/error-2023-04-07.html -f /run/nginx.pidexecstartpre=/usr/sbin/nginx -texecstart=/usr/sbin/nginxexecreload=/bin/kill -s hup $mainpidkillsignal=sigquittimeoutstopc=5killmode=processprivatetmp=true[install]wantedby=multi-ur.target
重载daemon
执行下面的命令重新载入 systemd,扫描新的或有变动的单元即可
systemctl daemon-reload
设置开机自启
systemctl enable nginx.rvice # 设置开机自启systemctl disable nginx.rvice # 取消开机自启服务
nginx服务管理常用命令
systemctl status nginx.rvice # 查看nginx状态systemctl start nginx.rvice # 开启nginxsystemctl stop nginx.rvice # 关闭nginxsystemctl reload nginx.rvice # 重载配置systemctl restart nginx.rvice # 重启nginx(相当于stop&start)
服务启动检查
可以通过该命令查询80端口被谁占用
lsof -i :80
如果无法识别该命令,需要安装lsof
sudo yum -y install lsof
(1)cmake是新版mysql的编译工具,必须安装
sudo yum -y install ncurs-devel perl perl-devel autoconf
不使用yum方式安装cmake,因为默认的cmake版本较低,这会导致在后面安装php时出现版本过低,无法安装的问题,因为安装mysql需要cmake,所以在这里直接装最新稳定版cmake
cd /usr/local/srcyum remove cmakewget https://github.com/kitware/cmake/releas/download/v3.16.1/cmake-3.16.1.tar.gztar -zxvf cmake-3.16.1.tar.gzcd cmake-3.16.1./configure \--prefix=/usr/local/cmakemake && make installcd /usr/localln -s /usr/local/cmake/bin/cmake /usr/bin/cmake# ln -s /usr/local/cmake/share/cmake-3.16.1 /usr/share/cmake
如果安装的mysql5.7及以上的版本,在编译安装之前需要安装boost,因为高版本mysql需要boots库的安装才可以正常运行。否则会报cmake error at cmake/boost.cmake:81
错误
切换到/usr/local/src
目录,然后在这个目录下下载boost
mysql5.7.28要求boost的版本是1.59,更高版本的不适用mysql5.7.28
wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
# 添加mysql用户uradd -s /sbin/nologin -m mysql# 切换到/usr/src目录cd /usr/local/src# 下载mysqlwget /d/file/titlepic/mysql-5.7.28.tar.gz 解压mysqltar -zxvf mysql-5.7.28.tar.gz#解压boost,并移至mysql/boosttar -zxvf boost_1_59_0.tar.gzmv boost_1_59_0 mysql-5.7.28/boost# 进到mysql目录cd mysql-5.7.28# 预编译cmake -dcmake_install_prefix=/usr/local/mysql-5.7.28 \-dwith_boost=boost \-dwith_systemd=1 \-dwith_ssl=system \-dmysql_unix_addr=/var/lib/mysql/mysql.sock \-dmysql_datadir=/var/lib/mysql/data \-ddefault_chart=utf8mb4 \-ddefault_collation=utf8mb4_general_ci \-dwith_extra_charts=all \-dwith_myisam_storage_engine=1 \-dwith_innoba_storage_engine=1 \-dwith_memory_storage_engine=1 \-dwith_readline=1 \-dwith_innodb_memcached=1 \-dwith_debug=off \-dwith_zlib=bundled \-denabled_local_infile=1 \-denabled_profiling=on \-dmysql_maintainer_mode=off \-dmysql_tcp_port=3306# 编译&安装make && make install# 创建软链接cd /usr/localln -s mysql-5.7.28 mysql
# 添加到环境变量vim /etc/profileexport path=/usr/local/mysql/bin:$pathsource /etc/profile
在/var/lib
目录下创建一个mysql
文件夹
mkdir -p /var/lib/{mysql,mysql/data}touch /var/lib/mysql/mysqld.pidchown mysql.mysql -r /var/lib/mysql/
修改/etc/my.cnf
文件
# 修改/etc/my.cnf文件,编辑配置文件如下[mysqld]character-t-rver=utf8mb4collation-rver=utf8mb4_general_cidatadir=/var/lib/mysql/datasocket=/var/lib/mysql/mysql.sock[mysqld_safe]log-error=/var/log/mysql/mysqld.logpid-file=/var/lib/mysql/mysqld.pid[client]default-character-t=utf8mb4
创建mysqld.log
和 mysqld.pid
文件,并修改文件权限
# 创建mysqld.log 和 mysqld.pid文件mkdir /var/log/mysqltouch /var/log/mysql/mysqld.logchown mysql.mysql -r /var/log/mysql/
初始化数据库
# 初始化数据库, –initialize 表示默认生成一个安全的密码,–initialize-incure 表示不生成密码mysqld --initialize-incure --ur=mysql --badir=/usr/local/mysql --datadir=/var/lib/mysql/data
创建一个/usr/lib/systemd/system/mysqld.rvice
文件,然后编辑内容如下
vim /usr/lib/systemd/system/mysqld.rvice
[unit]description=mysql rverdocumentation=man:mysqld(8)documentation=http://dev.mysql.com/doc/refman/en/using-systemd.htmlafter=network.targetafter=syslog.target[install]wantedby=multi-ur.target[rvice]ur=mysqlgroup=mysqltype=forkingpidfile=/var/lib/mysql/mysqld.pid# disable rvice start and stop timeout logic of systemd for mysqld rvice.timeoutc=0# execute pre and post scripts as rootpermissionsstartonly=true# needed to create system tablexecstartpre=/usr/local/mysql/bin/mysqld_pre_systemd# start main rviceexecstart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/var/lib/mysql/mysqld.pid $mysqld_opts# u this to switch malloc implementationenvironmentfile=/etc/my.cnf# ts open_files_limitlimitnofile = 5000restart=on-failurerestartpreventexitstatus=1privatetmp=fal
重载daemon
执行下面的命令重新载入 systemd,扫描新的或有变动的单元即可
systemctl daemon-reload
启动mysql
systemctl start mysqld.rvice # 启动mysqlsystemctl stop mysqld.rvice # 关闭mysqlsystemctl status mysqld.rvice # 查看mysql状态
开机自启
systemctl enable mysqld.rvice # 设置开机自启systemctl disable mysqld.rvice # 取消开机自启
mysql -u root -p #第一次登陆不需要密码,回车即可t password for root@localhost = password('root'); #修改密码
sudo yum -y install gcc gcc-c++ zip unzip libxml2 libxml2-devel curl-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel gd-devel bzip2 bzip2-devel libsqlite3x libsqlite3x-devel oniguruma oniguruma-devel
升级libzip
yum remove libzipcd /usr/local/srcwget https://libzip.org/download/libzip-1.5.2.tar.gztar -zxvf libzip-1.5.2.tar.gzcd libzip-1.5.2mkdir buildcmake .make && make installecho '/usr/local/lib64/usr/local/lib/usr/lib/usr/lib64'>>/etc/ld.so.confldconfig -v
cd /usr/local/srcwget /d/file/titlepic/php-7.4.0.tar.gz -o php-7.4.0.tar.gztar -zxvf php-7.4.0.tar.gzcd php-7.4.0./configure \--prefix=/usr/local/php-7.4.0 \--enable-fpm \--with-fpm-ur=nginx \--with-fpm-group=nginx \--with-zlib \--enable-mysqlnd \--enable-bcmath \--enable-gd \--with-pdo-mysql=mysqlnd \--with-mysqli=mysqlnd \--with-mys拼音认读ql-sock=/var/lib/mysql/mysql.sock \--with-jpeg \--with-freetype \--with-iconv \--with-openssl \--with-curl \--enable-mbstring \--enable-static \--enable-sockets \--enable-xmlmake && make install
编译参数详解
./configure \--prefix=/usr/local/php-7.4.0 \ # 指定安装路径--enable-fpm \ # 表示激活php-fpm方式服务,即factcgi方式运行php服务。--with-fpm-ur=nginx \ # 指定php-fpm进程管理的用户为www,此处最好和nginx服务用户统一。--with-fpm-group=nginx \ # 指定php-fpm进程管理用户组为www,此处最好和nginx服务用户组统一。--with-zlib \ # 打开zlib库的支持,用于http压缩传输--enable-mysqlnd \--with-pdo-mysql=mysqlnd \--with-mysqli=mysqlnd \--with-mysql-sock=/var/lib/mysql/mysql.sock \--with-gd \ # 打开gd库的支持--with-png-dir \--with-jpeg-dir \--with-freetype-dir \--with-openssl \ # 打开openssl,加密传输时用到--with-curl \ # 打开curl浏览工具的支持 --enable-mbstring \ # 多字节,字符串的支持--enable-static \ # 生成静态链接库--enable-zip \ # 打开对zip的支持--enable-sockets \ # 打开 sock送男友实用礼物排行榜ets 支持--enable-xml
配置
cd /usr/localln -s php-7.4.0 phpcp /usr/local/src/php-7.4.0/php.ini-development /usr/local/php-7.4.0/lib/php.ini vim /usr/local/php/lib/php.ini date.timezone = prc (大约在954行) expo_php = off #避免php信息暴露在http头中(大约369行) display_errors = off(生产环境设置为off,开发环境就设置为on,便于调试) 说明:设置了dispaly_errors为off后,需要在php-fpm.conf中开启错误日志记录路径error_log = log/php-fpm.log cd /usr/local/php cp etc/php-fpm.conf.default etc/php-fpm.confcd /usr/local/php/etc/php-fpm.d/cp www.conf.default www.confcd /usr/local/phpsbin/php-fpmps -e | grep php-fpm如果在编译php时指定了--with-mysql=mysqlnd和--with-pdo-mysql=mysqlnd的参数,那么在生产中可能会遇到socket连接问题,解决办法是在php.ini里加入命令: pdo_mysql.default_socket=/usr/local/mysql/tmp/mysql.sock最好是在编译php的时候,指定mysql.socket的位置:--with-mysql-sock=/usr/local/mysql/tmp/mysql.sock
管理php-fpm
vim /usr/local/php/etc/php-fpm.confpid = run/php-fpm.piderror_log = log/php-fpm.log #24行这个在php.ini设置display_errors = off时启用设置完之后重启服务器向进程发送信号,就可以完成进程管理停止: kill -int `cat /usr/local/php/var/run/php-fpm.pid`平滑停止: kill -quit `cat /usr/local/php/var/run/php-fpm.pid`重启:kill -usr2 `cat /usr/local/php/var/run/php-fpm.pid`重新打开日志:kill -usr1 `cat /usr/local/php/var/run/php-fpm.pid`
配置环境变量
vim /etc/profileexport path=/usr/local/php/bin:$pathsource /the是什么词etc/profile
其实php-fpm.rvice文件php已经帮我们配置好了,只需要我们复制到指定位置,并启用就行了。
cp /usr/local/src/php-7.4.0/sapi/fpm/php-fpm.rvice /usr/lib/systemd/system/
并编辑该文件
vim /usr/lib/systemd/system/php-fpm.rvice
php-fpm.rvice文件内容如下:
# it's not recommended to modify this file in-place, becau it# will be overwritten during upgrades. if you want to customize,# the best way is to u the "systemctl edit" command.[unit]description=the php fastcgi process managerafter=network.target[rvice]type=simplepidfile=/usr/local/php/var/run/php-fpm.pidexecstart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.confexecreload=/bin/kill -usr2 $mainpidprivatetmp=true[install]wantedby=multi-ur.target
重载daemon
执行下面的命令重新载入 systemd,扫描新的或有变动的单元即可
systemctl daemon-reload
开机自启
systemctl enable php-fpm.rvicesystemctl disable php-fpm.rvice
启动php-fpm
systemctl start php-fpm.rvice
nginx.conf配置
#ur nobody;# 有一个工作的子进程,可以自行修改,但太大无益,因为要争夺cpu# 一般设置cpu数 * 核数worker_process 1; #error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events {#一般是配置nginx进程与连接的特性#若几个同时工作 multi_accept on; #打开同时接受多个新网络连接请求的功能。 u epoll; #使用epoll事件驱动,因为epoll的性能相比其他事件驱动要好很多 worker_connections 10240; #这是指一个子进程最大允许连接10240个连接}http { # 这是配置http服务器的主要段 include mime.types; default_type application/octet-stream; #隐藏nginx软件版本号 rver_tokens off; #激活tcp_nodelay功能,提高i/o性能 tcp_nodelay on; # 设置读取客户端请求头数据的超时时间。此处的数值为15,其单位是秒,为经验参考值 client_header_timeout 15; # 设置读取客户端请求体的超时时间 client_body_timeout 15; # 指定响应客户端的超时时间 nd_timeout 25; # 上传文件大小限制 client_max_body_size 8m; #压缩配置 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/css text/xml application/javascript; gzip_vary on; #include extra/gzip.config; #log_format main '$remote_addr - $remote_ur [$time_local] "$request" ' # '$status $body_bytes_nt "$http_referer" ' # '"$http_ur_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; ndfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; include extra/*.conf;}
# 解压源码文件tar -zxf redis-5.0.6.tar.gz# 切换到解压目录cd redis-5.0.6# 编译安装mkdir /usr/local/redis-5.0.6make prefix=/usr/local/redis-5.0.6 installmkdir /usr/local/redis-5.0.6/etccp redis.conf /usr/local/redis-5.0.6/etc/# 创建软链接cd /usr/localln -sf redis-5.0.6 redis
vim /etc/profileexport path=/usr/local/redis/bin:$pathsource /etc/profile # 使修改立即生效
让redis
以后台进程的形式运行
vim /usr/local/redis/etc/redis.conf# daeonize no(改为)# 改为 ->daemonize yes
在 /etc/systemd/system/
添加一个redis.rvice
文件,并添加如下内容
[unit]description=redisafter=network.target [rvice]type=forkingpidfile=/var/run/redis_6379.pidexecstart=/usr/local/redis/bin/redis-rver /usr/local/redis/etc/redis.confexecstop=/usr/local/redis/bin/redis-cli shutdownprivatetmp=true [install]wantedby=multi-ur.target
重载daemon
执行下面的命令重新载入 systemd,扫描新的或有变动的单元即可
systemctl daemon-reload
开机自启
systemctl enable redis.rvice
启动redis服务
systemctl start redis.rvice
mysql在linux7下systemd的相关配置
managing mysql rver with systemd
编译cmake 3.15 和 gcc 5.3.0
centos7升级openssl到1.1.1
本文发布于:2023-04-08 00:39:16,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/bbcd44a874ce26f9b16066302cda6992.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:LNMP环境搭建(PHP7.4.0).doc
本文 PDF 下载地址:LNMP环境搭建(PHP7.4.0).pdf
留言与评论(共有 0 条评论) |