LNMP部署

该文详细描述了在CentOS7.9环境下,如何手动安装和配置Nginx、MySQL和PHP,包括依赖包的安装、编译、启动脚本的编写以及权限设置。同时,文章还涉及到了防火墙的配置,确保服务能够正常对外提供访问。

实验环境

centos7.9 

安装NGINX+MySQL+PHP

实验需要的包:

nginx-1.22.0.tar.gz 

boost_1_59_0.tar.gz

mysql-5.7.12.tar.gz

php-7.1.10.tar.gz

nginx: download

Boost Downloads

MySQL :: Download MySQL Community Server

PHP: Release Archives (museum)

实验过程:

nginx部分:

#安装依赖
yum -y install pcre-devel zlib-devel	
#创建nginx用户
useradd -M -s /sbin/nologin nginx
#解包
tar xf nginx-1.22.0.tar.gz
cd nginx-1.22.0
#配置
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module 
#编译
make -j `cat /proc/cpuinfo | grep processor| wc -l`
#安装
make install
#优化执行路径
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

编写nginx启动脚本

在 /etc/init.d/nginx

#!/bin/sh
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network

[ "$NETWORKING" = "no" ] && exit 0
 
nginx="/usr/local/nginx/sbin/nginx"
 
prog=$(basename $nginx)
 
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
 
lockfile=/var/lock/subsys/nginx
 
start() {
 
[ -x $nginx ] || exit 5
 
[ -f $NGINX_CONF_FILE ] || exit 6
 
echo -n $"Starting $prog: "
 
daemon $nginx -c $NGINX_CONF_FILE
 
retval=$?
 
echo
 
[ $retval -eq 0 ] && touch $lockfile
 
return $retval
 
}
 
stop() {
 
echo -n $"Stopping $prog: "
 
killproc $prog -QUIT
 
retval=$?
 
echo
 
[ $retval -eq 0 ] && rm -f $lockfile
 
return $retval
 
}
 
restart() {
 
configtest || return $?
 
stop
 
start
 
}
 
reload() {
 
configtest || return $?
 
echo -n $"Reloading $prog: "
 
killproc $nginx -HUP
 
RETVAL=$?
 
echo
 
}
 
force_reload() {
 
restart
 
}
 
configtest() {
 
$nginx -t -c $NGINX_CONF_FILE
 
}
 
rh_status() {
 
status $prog
 
}
 
rh_status_q() {
 
rh_status >/dev/null 2>&1
 
}
 
case "$1" in
 
start)
 
rh_status_q && exit 0
 
$1
 
;;
 
stop)
 
rh_status_q || exit 0
 
$1
 
;;
 
restart|configtest)
 
$1
 
;;
 
reload)
 
rh_status_q || exit 7
 
$1
 
;;
 
force-reload)
 
force_reload
 
;;
 
status)
 
rh_status
 
;;
 
condrestart|try-restart)
 
rh_status_q || exit 0
 
;;
 
*)
 
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
 
exit 2
 
esac

给予权限

cd /etc/init.d/nginx

chmod 755 /etc/init.d/nginx

chkconfig --add nginx

输入systemctl start nginx.service启动nginx

MySQL部分:

#删除mysql遗留
yum -y remove mysql-* boost-*
rpm -qa mysql
rpm -qa boost
#安装依赖包
yum -y install gcc gcc-c++ ncurses bison libgcrypt perl cmake ncurses-devel
#解压boot
tar -zxvf boost_1_59_0.tar.gz
mv boost_1_59_0 /usr/local/boost/
#创建mysql用户组和用户
groupadd mysql
useradd -r -g mysql mysql
#解压到/usr/src/
tar zxvf mysql-5.7.12.tar.gz -C /usr/src/
cd /usr/src/mysql-5.7.12/

cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DENABLE_DOWNLOADS=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost -DSYSCONFDIR=/etc
#编译安装
make -j `cat /proc/cpuinfo | grep processor| wc -l`
make install

优化

chown -R mysql:mysql /usr/local/mysql
cp /usr/src/mysql-5.7.12/support-files/my-default.cnf /etc/my.cnf
cp /usr/src/mysql-5.7.12/support-files/mysql.server /etc/init.d/
chmod +x /etc/init.d/mysql.server

cat <<END >>/usr/lib/systemd/system/mysqld.service
[Unit]
Description=mysqldapi
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/mysql/logs/mysqld.pid
ExecStart=/etc/init.d/mysql.server start
ExecReload=/etc/init.d/mysql.server restart
ExecStop=/etc/init.d/mysql.server stop
PrivateTmp=Flase

[Install]
WantedBy=multi-user.target
END

echo "export PATH=$PATH:/usr/local/mysql/bin/" >>/etc/profile
source /etc/profile
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

cat <<END >/etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character_set_server=utf8
init_connect='SET NAMES utf8'
log-error=/usr/local/mysql/logs/mysqld.log
pid-file=/usr/local/mysql/logs/mysqld.pid
skip-name-resolve
END

mkdir /usr/local/mysql/logs
chown mysql:mysql /usr/local/mysql/logs/
systemctl enable mysqld --now
netstat -utpln |grep mysqld














 测试访问数据库:

mysqladmin  -uroot -p password "123123"

mysql -uroot -p123123

PHP部分:

编译安装

#安装依赖
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel
#解包
tar zxvf php-7.1.10.tar.gz -C /usr/src/
cd /usr/src/php-7.1.10/

./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

make -j `cat /proc/cpuinfo | grep processor| wc -l`
make install





















配置PHP文件

cp php.ini-development /usr/local/php/lib/php.int
vim /usr/local/php/lib/php.int 
#找到939行,去掉; 添加日期在上海
date.timezone = Asia/Shanghai
#找到1170行,设置数据库通讯文件路径
mysqli.default_socket = /usr/local/mysql/mysql.sock

cd /usr/local/php/etc/
#优化复制默认进程服务配置文件
cp php-fpm.conf.default php-fpm.conf

cd /usr/local/php/etc/php-fpm.d
#优化复制扩展配置文件
cp www.conf.default www.conf

cd /usr/local/php/etc
vim php-fpm.conf
把pid前面的;去掉

 启动测试

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -natp |grep 9000
#创建软连接
ps aux | grep -c "php-fpm”

 编辑nginx,使其支持PHP

vi /usr/local/nginx/conf/nginx.conf

去掉65到71行的引号,修改fastcgi_param的路径

location ~ \.php$ {
              root           html;
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
              fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
              include        fastcgi_params;
          }

编辑PHP页面

 vi /usr/local/nginx/html/index.php

 <?php
phpinfo();
?> 

重新启动nginx

systemctl restart nginx.service

访问测试

如果访问不到,可以看看防火墙是否关闭。

如果不想关,也可以加入防火墙规则

firewall-cmd --add-port=80/tcp --permanent 
firewall-cmd --add-port=9000/tcp --permanent 
firewall-cmd --reload 

最后测试数据库是否工作正常   

mysql -uroot -p123123
#创建php库
create database php;
#授权
grant all on php.* to 'php'@'%' identified by '123123';
grant all on php.* to 'php'@'localhost' identified by '123123';
flush privileges;

exit;

 vim /usr/local/nginx/html/index.php 

 <?php
$link=mysqli_connect('192.168.100.6','php','123123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

这个环境不支持zabbix6.0安装,我坐了好几个小时把lnmp搞出来结果装不了********

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值