软件版本

centos7.4.1708 
apache2.4.33
mysql8.0.11
php7.2.5
nginx1.14.0

一、卸载软件,以Apache为例,有些服务器自带了apache软件,我们需要先卸载

whereis httpd 
rpm -qa | grep httpd
systemctl stop httpd.service #先停掉服务
yum -y remove httpd
rpm -qa | grep httpd #罗列软件包名称
yum -e xxxxxx  #逐个删除上一步所罗列的软件包
# 或者使用命令
rpm -e --nodeps xxxxxx


二、安装Apache依赖

yum install gcc gcc++ gcc-c++ libxml2-devel expat-devel
wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
tar zxvf pcre-8.42.tar.gz
cd pcre-8.42
./configure --prefix=/usr/local/pcre
make && make install

wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.6.3.tar.gz
wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.33.tar.gz
tar zxvf httpd-2.4.33.tar.gz
tar zxvf apr-util-1.6.1.tar.gz
tar zxvf apr-1.6.3.tar.gz
mv apr-1.6.3 apr
mv apr-util-1.6.1 apr-util
mv apr apr-util httpd-2.4.33/srclib/

三、安装Apache

./configure --prefix=/usr/local/apache2 -with-pcre=/usr/local/pcre/bin/pcre-config --with-included-apr
make && make install
cd /usr/local/apache2/bin
./apachectl -k start

#apache查看工作模式 
#/usr/local/apache2/bin/apachectl -V

外部访问80端口,提示不能访问,这个时候我们要设置防火墙开放80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent #对外开放端口,--permanent永久生效

firewall-cmd --reload
#systemctl restart firewalld.service
#service firewalld restart

#查看已经开放的端口firewall-cmd --list-ports
#移除端口 firewall-cmd --permanent --remove-port=80/tcp

四、安装MySQL8.0依赖

yum install cmake openssl openssl-devel ncurses-devel

五、安装MySQL

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11.tar.gz
###File size limit exceeded (core dumped)
###如果下载一部分后就断掉了,执行命令 ulimit -f 1024000 

tar zxvf mysql-8.0.11
cd mysql-8.0.11
useradd -M -s /sbin/nologin mysql #创建mysql用户

mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/conf
chown mysql:mysql /usr/local/mysql

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/usr/local/mysql/conf -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SSL:STRING=bundled -DWITH_ZLIB:STRING=bundled -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost

make && make install

六、初始化MySQL

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data  ##初始化MySQL,初始化后会自动生成mysql密码,注意查看
mv /etc/my.cnf /usr/local/mysql/conf/my.cnf
vi my.cnf
>basedir=/usr/local/mysql
>datadir=/usr/local/mysql/data
>socket=/usr/local/mysql/mysql.sock

>[mysqld_safe]
>log-error=/var/log/mysql/mysql.log
>pid-file=/var/run/mysql/mysql.pid
>:wq

mkdir -p /var/log/mysql/
mkdir -p /var/run/mysql/
chown mysql:mysql /var/log/mysql/
chown mysql:mysql /var/run/mysql/

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld ##配置启动脚本
chmod +x /etc/init.d/mysqld
cp /usr/local/mysql/bin/mysql /usr/bin/mysql ##将MySQL添加到bash里面

service mysqld restart

mysql -uroot -p
>set password = '123456'; #如果是其他低版本,可能会是set password = password('string')
# 添加到系统服务chkconfig --add mysqld     
# 开机启动chkconfig mysqld on 

#查看mysql配置文件路径/usr/local/mysql/bin/mysqld --verbose --help |grep -A 1 'Default options'

#配置mysql环境变量
#vim /etc/profile
#export PATH=/usr/local/mysql/bin:$PATH
#source /etc/profile

七、安装PHP7依赖

yum -y install libcurl-devel libwebp libwebp-devel libjpeg-devel libpng libpng-devel freetype-devel libxslt-devel

八、安装PHP7

./configure --prefix=/usr/local/php/ \
--with-config-file-path=/usr/local/php/etc/ \
--with-apxs2=/usr/local/apache2/bin/apxs \  # apache中生成 LoadModule php7_module modules/libphp7.so
--enable-fpm \
--with-zlib \
--with-libxml-dir \
--enable-sockets \
--with-curl \
--with-jpeg-dir \
--with-png-dir \
--with-gd \
--with-freetype-dir \
--enable-gd-native-ttf \ #7.2废弃
--with-xmlrpc \
--with-openssl \
--with-mhash \
--with-mcrypt \  #7.2废弃
--with-pear \
--enable-mbstring \
--enable-sysvshm \
--enable-zip \
--with-pdo-mysql \
--enable-fileinfo \
--with-xsl

make && make install
#如果make的时候出现错误,使用make clean重试

九、配置Apache与PHP通信

vi /usr/local/apache2/conf/httpd.conf
>LoadModule php7_module        modules/libphp7.so
>AddType application/x-httpd-php  .php
>AddType application/x-httpd-php-source  .phps
>DirectoryIndex index.html index.php

cp /home/php-7.2.5/php.ini-production /usr/local/php/etc/php.ini

vi /usr/local/php/etc/php.ini
>extension=pdo_mysql
>pdo_mysql.default_socket=/usr/local/mysql/mysql.sock

/usr/local/apache2/bin/apachectl -k restart

十、错误处理

    安装好环境后,使用PDO连接MySQL8会报错,

    提示The server requested authentication method unknown to the client,

#处理办法:CREATE USER 'adtuu'@'%' IDENTIFIED WITH mysql_native_password  BY '123456';
#参考https://dev.mysql.com/doc/refman/8.0/en/create-user.html

十一、Nginx安装

cd /home
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0

useradd nginx -s /sbin/nologin -M
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

十二、Nginx配置

cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vi php-fpm.conf
>pid = run/php-fpm.pid
cp /usr/local/php/etc/php-fpm.d/www.conf.default php-fpm.d/www.conf
vi www.conf
>listen = 127.0.0.1:9000
cd /usr/local/nginx/conf/
vi nginx.conf
>location ~ \.php$ {
>    root           html;
>    fastcgi_pass   127.0.0.1:9000;
>    fastcgi_index  index.php;
>    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
>    include        fastcgi_params;
>}

#启动php-fpm /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf
#平滑重启php-fpm kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
#关闭php-fpm kill -INT `cat /usr/local/php/var/run/php-fpm.pid` 

#启动 /usr/local/nginx/sbin/nginx
#重启 /usr/local/nginx/sbin/nginx -s reload
#关闭 /usr/local/nginx/sbin/nginx -s stop

十三、其他方式


 https://lnmp.org/ 

screen -S lnmp
wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp

==============================================================

https://oneinstack.com/

wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1 --apache_option 1 --php_option 7 --phpcache_option 4 --php_extensions imagick --phpmyadmin  --db_option 5 --dbinstallmethod 1 --dbrootpwd oneinstack --pureftpd  --redis  --memcached  --iptables  --ssh_port 9487 --reboot

==============================================================

http://www.bt.cn