By MR.anyun
E-mail:MR.anyun@foxmail.com
说明:由于一点咨询我无法添加网络视频,故添加下列两天视频地址,有需要可以前往观看操作视频。
哔哩哔哩:https://www.bilibili.com/video/av36332555/
优酷地址:http://player.youku.com/player.php/sid/XMzkyNDY2MzIyOA==/v.swf
定义:
①所有源码一律存放在 “ /usr/local/src/ ”下
②所有安装的软件安装目录都指定在 “ /usr/local/ ”
③Nginx-Mariadb-php 三者均为源码编译安装
④mysql数据库的 root 密码为 root123
环境基础:
① 最小化安装Rhedhat7 root 账号密码 phpipam123
② 需要配置本地yum源
③ 由于最小化安装,需要yum安装vim,net-tools(ifconfig命令就是这个包)
④ 为了虚拟机能支持中文,故安装系统时勾选中文支持选项。
⑤ 为了防止会话中断,故安装工具screen。(如果不用远程方式操作虚拟机,可以不装)
⑥ IP配置:192.168.20.10 255.255.255.0
⑦ 软件包:
1、数据库mariadb安装
//依赖安装
yum install -y apr* autoconf automake bison bzip2 bzip2* compat* \
cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* \
freetype-devel gcc gcc-c++ gd gettext gettext-devel glibc kernel \
kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_ \
err-devel libpng libpng-devel libjpeg* libsepol-devel libselinux-devel \
libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libtiff \
libtiff* cmake mpfr ncurses* ntp openssl openssl-devel patch pcre-devel \
perl php-common php-gd policycoreutils telnet t1lib t1lib* nasm nasm* zlib-devel
//mariadb安装
Screen //是用Screen会话管理,避免异常(如果是远程主机建议养成这个习惯)
groupadd -r mysql //创建用户组mysqlmake
useradd -g mysql -s /sbin/nologin mysql //创建用户mysql并指定用户组,同时禁止登陆系统
mkdir /usr/local/mysql //创建mysql安装目录
mkdir -p /data/mysql //创建数据库存放目录
chown -Rf mysql:mysql /data/mysql/ //所有者、所有者修改为mysql
//开始编译
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DWITHOUT_TOKUDB=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STPRAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWIYH_READLINE=1 \
-DWIYH_SSL=system \
-DVITH_ZLIB=system \
-DWITH_LOBWRAP=0 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make
make install
说明:
-DCMAKE_INSTALL_PREFIX= //指定安装目录
-DMYSQL_DATADIR= //指定数据库存放目录
-DSYSCONFDIR= //配置文件所在目录,一般 /etc
make && make install //生成二进制文件并安装
rm -rf /etc/my.cnf //删除默认配置文件
//生成系统数据文件、新的配置文件
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
cd /usr/local/mysql
//创建连接
ln -s my.cnf /etc/my.cnf
//复制开机程序到系统开机目录
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
//赋予可执行权限
chmod 755 /etc/rc.d/init.d/mysqld
//修改配置
vim /etc/rc.d/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql
service mysqld start //启动mysql数据库
chkconfig mysqld on //添加到启动项
vim /etc/profile //在文末添加变量
export PATH=$PATH:/usr/local/mysql/bin
source /etc/profile //配置文件即时生效
//创建连接文件
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
bin/mysql_secure_installation //初始化mysql
mysql -u root -p //回车输入root密码(数据库root,不是登陆系统的root)我是root123
CREATE USER phpipam@localhost IDENTIFIED BY 'phpipamadmin'; //创建phpipam用户及密码
Exit / quit //退出数据
2、PHP安装
cd php-7.2.11
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysql-sock=/tmp/mysql.sock \
--with-pdo-mysql=/usr/local/mysql \
--with-gd \
--with-png-dir=/usr/share/libpng \
--with-jpeg-dir=/usr/share/jpeg \
--with-freetype-dir=/usr/share/freetype \
--with-xpm-dir=/usr/ \
--with-zlib-dir=/usr/share/zlib \
--with-iconv \
--enable-libxml \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-opcache \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-ftp \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-pear \
--with-gettext \
--enable-session \
--with-curl \
--enable-ctype
make && make install
rm -rf /etc/php.ini
ln -s /usr/local/php/etc/php.ini /etc/php.ini
cp php.ini-production /usr/local/php/etc/php.ini
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf
cp /usr/local/src/php-7.2.11/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
chmod 755 /etc/rc.d/init.d/php-fpm
chkconfig php-fpm on
vim php.ini
disable_functions = passthru,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
//开启gmp模块
把 ;extension=gmp 左边分号去掉
vim php-fpm.conf ,找到 这一行 “;pid = run/php-fpm.pid”去掉分号“;”
在文末修改为 include=/usr/local/php/etc/php-fpm.d/www.conf.default
vim php-fpm.d/www.conf.default 找到
user = nobody 改成 user = www
group = nobody 改成 group = www
;listen.owner = nobody 改成 listen.owner = www
;listen.group = nobody 改成 listen.group = www
;listen.mode = 0660 改成 listen.mode = 0660
listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock
注:此时执行systemctl restart php-fpm会报错,我们执行systemctl status -l php-fpm.service可以看到报错信息
报错提示找不到用户www,所以我们要创建用户及用户组
groupadd -r www
useradd -g www -s /sbin/nologin www
systemctl restart php-fpm //没有报错,说明成功重启
systemctl status -l php-fpm //查看状态,如下图
chmod 0660 /var/run/php-fpm.sock
chown www:www /var/run/php-fpm.sock
3、安装几个软包
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make && make install
cd pcre-8.42
./configure --prefix=/usr/local/pcre
make && make install
cd gmp-6.1.2
./configure --prefix=/usr/local/gmp
make && make install
cd openssl-1.0.1h
./config --prefix=/usr/local/openssl
make && make install
vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin
4、安装Nginx
cd nginx-1.15.5
./configure \
--prefix=/usr/local/nginx \
--without-http_memcached_module \
--user=www \
--group=www \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-openssl=/usr/local/src/openssl-1.0.1h \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-pcre=/usr/local/src/pcre-8.42
make && make install
vim /etc/rc.d/init.d/nginx //Nginx 源码安装会没有启动文件,所以手动创建它
#!/bin/bash
# nginx - this script starts and stops the nginx daemon
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
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
sleep 1
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
chmod 755 /etc/rc.d/init.d/nginx //赋予文件执行权限
/etc/rc.d/init.d/nginx restart //启动ngin
chkconfig nginx on //添加开机启动
systemctl status -l nginx //ngin状态
在浏览器输入服务器IP地址,这里是192.168.20.10
iptables -F //清空防火墙做测试,刷下网页
在清空防火墙后,页面刷出来了,至此:恭喜,Nginx安装成功
vim /usr/local/nginx/conf/nginx.conf
#user nobody;
user www www;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm index.php;
}
location /usr/local/nginx/html/api/{
try_files $uri $uri/ /usr/local/nginx/html/api/index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
vim /usr/local/nginx/conf/fastcgi_params //文末加上如下两行
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
systemctl restart nginx
systemctl restart php-fpm
5、安装 phpipam(主角登场)
cd phpipam
rm -rf /usr/local/nginx/html/{index.html,50x.html}*
mv ./* /usr/local/nginx/html/
chown -Rf www:www /usr/local/nginx/html
chmod -Rf 755 /usr/local/nginx/html
cd /usr/local/nginx/html/
cp config.dist.php config.php
此时刷新浏览器页面,页面提示需要php-gmp拓展支持
cd /usr/src/php-7.2.11/ext/gmp
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-gmp=/usr/local/gmp/
make && make install
systemctl restart nginx
systemctl restart php-fpm
主机发现及在线检测:这个在添加子网的时候可以勾选模块,但需要计划任务来执行
Ping脚本在:/usr/local/nginx/html/functions/scripts/pingCheck.php
检测是否在线:/usr/local/nginx/html/functions/scripts/discoveryCheck.php
配置计划任务:
systemctl start crond //启动计划任务程序 crond
crontab -e //编辑、创建计划任务
*/5 * * * * /usr/local/nginx/html/functions/scripts/pingCheck.php
*/5 * * * * /usr/local/nginx/html/functions/scripts/discoveryCheck.php
crontab -l //查看计划任务