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

1214

被折叠的 条评论
为什么被折叠?



