安装前准备
[root@iZuf60c5bxd15kr9gycvv6Z ~]# hostnamectl set-hostname centos7 [root@iZuf60c5bxd15kr9gycvv6Z ~]# reboot [root@iZuf60c5bxd15kr9gycvv6Z ~]# yum update
- 安装依赖库
[root@centos7 ~]# yum -y install libaio libaio-devel bison bison-devel zlib-devel openssl openssl-devel ncurses ncurses-devel libcurl-devel libarchive-devel boost boost-devel lsof wget gcc gcc-c++ make cmake perl kernel-headers kernel-devel pcre-devel
删除系统默认数据库配置文件
[root@centos7 ~]# find -H /etc/ | grep my.c /etc/my.cnf /etc/my.cnf.d /etc/my.cnf.d/MysqL-clients.cnf /etc/pki/tls/certs/renew-dummy-cert /etc/pki/tls/certs/make-dummy-cert
[root@centos7 ~]# rm -rf /etc/my.cnf /etc/my.cnf.d /etc/my.cnf.d/MysqL-clients.cnf
- 确认
[root@centos7 ~]# find -H /etc/ | grep my.c /etc/pki/tls/certs/renew-dummy-cert /etc/pki/tls/certs/make-dummy-cert
卸载系统自带mariadb-libs
[root@centos7 ~]# rpm -qa|grep mariadb-libs mariadb-libs-5.5.52-1.el7.x86_64
[root@centos7 ~]# rpm -e mariadb-libs-5.5.52-1.el7.x86_64 --nodeps
安装MariaDB数据库
- 下载安装包
[root@centos7 ~]# cd /usr/local/src [root@centos7 src]# wget https://downloads.mariadb.org/interstitial/mariadb-10.2.8/source/mariadb-10.2.8.tar.gz
- 解压
[root@centos7 src]# tar -zxvf mariadb-10.2.8.tar.gz
# 创建MysqL用户组 [root@centos7 mariadb-10.2.8]# groupadd -r MysqL # 创建MysqL用户 [root@centos7 mariadb-10.2.8]# useradd -r -g MysqL -s /sbin/nologin -d /usr/local/MysqL -M MysqL # 创建安装目录 [root@centos7 mariadb-10.2.8]# mkdir -p /usr/local/MysqL # 创建数据存放目录 [root@centos7 mariadb-10.2.8]# mkdir -p /data/MysqL # 赋以MysqL用户读写权限 [root@centos7 mariadb-10.2.8]# chown -R MysqL:MysqL /data/MysqL
- 编译安装
[root@centos7 mariadb-10.2.8]# cd /usr/local/src/mariadb-10.2.8 # 输入以下编译参数 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 # 如果编译失败请删除CMakeCache.txt [root@centos7 mariadb-10.2.8]# rm -f CMakeCache.txt # 让指令重新执行,否则每次读取这个文件,命令修改正确也是报错 # cmake没问题,可以编译并且安装了 # 开始安装,这个过程比较久,跟据电脑配制不同可能会有10-30分钟 [root@centos7 mariadb-10.2.8]# make && make install
- 导入MysqL系统表
[root@centos7 mariadb-10.2.8]# cd /usr/local/MysqL/ [root@localhost MysqL]# scripts/MysqL_install_db --user=MysqL --datadir=/data/MysqL
- 复制配制文件
[root@localhost ~]# cd /usr/local/MysqL/ [root@localhost MysqL]# cp support-files/my-large.cnf /etc/my.cnf
- 编写快捷启动脚本
[root@centos7 MysqL]# vi /lib/systemd/system/MysqL.service # -------------------------------------------------------------------------- # 输入以下代码 # -------------------------------------------------------------------------- [Unit] Description=MysqL Community Server After=network.target [Service] User=MysqL Group=MysqL Type=forking PermissionsStartOnly=true PIDFile=/data/MysqL/centos7.pid ExecStart=/usr/local/MysqL/support-files/MysqL.server start ExecReload=/usr/local/MysqL/support-files/MysqL.server restart ExecStop=/usr/local/MysqL/support-files/MysqL.server stop PrivateTmp=true [Install] WantedBy=multi-user.target
- 设置开机启动
[root@centos7 MysqL]# systemctl enable MysqL.service
- 其它命令说明
# 启动MysqL [root@centos7 MysqL]# systemctl start MysqL.service # 停止MysqL [root@centos7 MysqL]# systemctl stop MysqL.service # 重启MysqL [root@centos7 MysqL]# systemctl restart MysqL.service # 如果提示:Job for MysqL.service Failed because the control process exited with error code. See "systemctl status MysqL.service" and "journalctl -xe" for details. # 请选结束MysqL进程后再尝试执行上面的快捷操作 [root@centos7 MysqL]# pkill -9 MysqL
- 配置环境变量(以便在任何目录下输入MysqL命令)
# 创建独立环境变量文件 [root@localhost MysqL]# touch /etc/profile.d/MysqL.sh # 写入变量值 [root@localhost MysqL]# echo 'export PATH=$PATH:/usr/local/MysqL/bin/' > /etc/profile.d/MysqL.sh # 赋以执行权限 [root@localhost MysqL]# chmod 0777 /etc/profile.d/MysqL.sh # 刷新生效 [root@localhost MysqL]# source /etc/profile.d/MysqL.sh
- 初始化MariaDB
# 运行MariaDB初始化脚本 [root@localhost MysqL]# ./bin/MysqL_secure_installation # -------------------------------------------------------------------------- # 根据相关提示进行操作 # 以下提示: # -------------------------------------------------------------------------- Enter current password for root (enter for none): 输入当前root密码(没有输入) Set root password? [Y/n] 设置root密码?(是/否) New password: 输入新root密码 Re-enter new password: 确认输入root密码 Password updated successfully! 密码更新成功 Remove anonymous users? [Y/n] 删除匿名用户?(是/否) Disallow root login remotely? [Y/n] 不允许root登录远程?(是/否) Reload privilege tables now? [Y/n] 现在重新加载权限表(是/否) #全部完成!如果你已经完成了以上步骤,MariaDB安装现在应该安装完成。
[root@localhost MysqL] MysqL -uroot -p # 根据提示输入密码 MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
安装Nginx
-下载安装包并解压
[root@localhost MysqL]# cd /usr/local/src [root@localhost src]# wget http://Nginx.org/download/Nginx-1.12.1.tar.gz [root@localhost src]# tar -zxvf Nginx-1.12.1.tar.gz
# 创建Nginx用户组 [root@centos7 src]# groupadd -r www # 创建Nginx用户 [root@centos7 src]# useradd -r -g www -s /sbin/nologin -d /usr/local/Nginx -M www # 创建安装目录 [root@centos7 src]# mkdir -p /usr/local/Nginx # 创建数据存放目录 [root@centos7 src]# mkdir -p /data/web # 赋以MysqL用户读写权限 [root@centos7 src]# chown -R www:www /data/web
-编译安装
[root@localhost src]# cd Nginx-1.12.1 # 输入以下参数 ./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 # 如果看到以下说明则编译成功 Configuration summary + using system PCRE library + using system OpenSSL library + using system zlib library Nginx path prefix: "/usr/local/Nginx" Nginx binary file: "/usr/local/Nginx/sbin/Nginx" Nginx modules path: "/usr/local/Nginx/modules" Nginx configuration prefix: "/usr/local/Nginx/conf" Nginx configuration file: "/usr/local/Nginx/conf/Nginx.conf" Nginx pid file: "/usr/local/Nginx/logs/Nginx.pid" Nginx error log file: "/usr/local/Nginx/logs/error.log" Nginx http access log file: "/usr/local/Nginx/logs/access.log" Nginx http client request body temporary files: "client_body_temp" Nginx http proxy temporary files: "proxy_temp" Nginx http fastcgi temporary files: "fastcgi_temp" Nginx http uwsgi temporary files: "uwsgi_temp" Nginx http scgi temporary files: "scgi_temp" # 开始安装 [root@localhost Nginx-1.12.1]# make && make install
- 尝试启动
[root@centos7 Nginx-1.12.1]# /usr/local/Nginx/sbin/Nginx # 如果未提示错误即代表安装成功
- 编写快捷启动脚本
[root@centos7 Nginx-1.12.1]# vi /lib/systemd/system/Nginx.service # -------------------------------------------------------------------------- # 输入以下代码 # -------------------------------------------------------------------------- [Unit] Description=Nginx After=network.target [Service] Type=forking PIDFile=/usr/local/Nginx/logs/Nginx.pid ExecStart=/usr/local/Nginx/sbin/Nginx ExecReload=/usr/local/Nginx/sbin/Nginx -s reload ExecStop=/usr/local/Nginx/sbin/Nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target
- 设置开机启动
[root@centos7 Nginx-1.12.1]# systemctl enable Nginx.service
- 其它命令说明
# 启动Nginx [root@centos7 Nginx-1.12.1]# systemctl start Nginx.service # 停止Nginx [root@centos7 Nginx-1.12.1]# systemctl stop Nginx.service # 重启Nginx [root@centos7 Nginx-1.12.1]# systemctl restart Nginx.service # 如果提示:Job for Nginx.service Failed because the control process exited with error code. See "systemctl status Nginx.service" and "journalctl -xe" for details. # 请选结束Nginx进程后再尝试执行上面的快捷操作 [root@centos7 Nginx-1.12.1]# pkill -9 Nginx
[root@centos7 PHP-7.1.9]# cd /usr/local/Nginx/conf [root@centos7 conf]# vi Nginx.conf # 修改如下代码 # -------------------------------------------------------------------------- #user nobody;去除前面#号,并将用户改为www www user www www; # -------------------------------------------------------------------------- #pid logs/Nginx.pid; 去除前面的#号 pid logs/Nginx.pid; # -------------------------------------------------------------------------- 去除前面的#号 如下 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # -------------------------------------------------------------------------- # gzip on;去除前面的#号并加上隐藏版号代码 server_tokens off; # -------------------------------------------------------------------------- index index.html index.htm;后面加上index.PHP 默认页 index index.html index.htm index.PHP; # -------------------------------------------------------------------------- 去下以下前面的#号并做如下修改 location ~ \.PHP$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.PHP; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
- 最后张节介绍虚拟主机配制,以及memcache配制
安装PHP7
- 下载安装包并解压
[root@centos7 Nginx-1.12.1]# cd /usr/local/src [root@centos7 src]# wget http://cn.PHP.net/distributions/PHP-7.1.9.tar.gz [root@centos7 src]# tar -zxvf PHP-7.1.9.tar.gz
- 安装必要的相关扩展
[root@centos7 src]# yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel
-编译安装
[root@localhost src]# cd PHP-7.1.9 # 输入以下参数 ./configure \ --prefix=/usr/local/PHP \ --with-config-file-path=/usr/local/PHP/etc \ --enable-fpm \ --with-fpm-user=www \ --with-fpm-group=www \ --enable-inline-optimization \ --disable-debug \ --disable-rpath \ --enable-shared \ --enable-soap \ --with-libxml-dir \ --with-xmlrpc \ --with-openssl \ --with-mcrypt \ --with-mhash \ --with-pcre-regex \ --with-zlib \ --enable-bcmath \ --with-iconv \ --with-bz2 \ --enable-calendar \ --with-curl \ --with-cdb \ --enable-dom \ --enable-exif \ --enable-fileinfo \ --enable-filter \ --with-pcre-dir \ --enable-ftp \ --with-gd \ --with-openssl-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib-dir \ --with-freetype-dir \ --enable-gd-native-ttf \ --enable-gd-jis-conv \ --with-gettext \ --with-gmp \ --with-mhash \ --enable-json \ --enable-mbstring \ --enable-mbregex \ --enable-mbregex-backtrack \ --with-libmbfl \ --with-onig \ --enable-pdo \ --with-MysqLi=MysqLnd \ --with-pdo-MysqL=MysqLnd \ --with-zlib-dir \ --with-pdo-sqlite \ --with-readline \ --enable-session \ --enable-shmop \ --enable-simplexml \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-wddx \ --with-libxml-dir \ --with-xsl \ --enable-zip \ --enable-MysqLnd-compression-support \ --with-pear \ --enable-opcache # 开始安装 [root@localhost PHP-7.1.9]# make && make install
- 配置环境变量(以便在任何目录下输入PHP命令)
# 创建独立环境变量文件 [root@localhost PHP-7.1.9]# touch /etc/profile.d/PHP.sh # 写入变量值 [root@localhost PHP-7.1.9]# echo 'export PATH=$PATH:/usr/local/PHP/bin/' > /etc/profile.d/PHP.sh # 赋以执行权限 [root@localhost PHP-7.1.9]# chmod 0777 /etc/profile.d/PHP.sh # 刷新生效 [root@localhost PHP-7.1.9]# source /etc/profile.d/PHP.sh
- 配制PHP.ini
[root@centos7 PHP-7.1.9]# cp PHP.ini-production /usr/local/PHP/etc/PHP.ini [root@centos7 PHP-7.1.9]# vi /usr/local/PHP/etc/PHP.ini # 做以下修改(时区,不显示版本号,开启opcache缓存加速PHP) # -------------------------------------------------------------------------- 1.找到:;date.timezone = 修改为:date.timezone = PRC 2.找到:expose_PHP = On 修改为:expose_PHP = Off 3.找到:opcache.enable=0 修改为:opcache.enable=1 4.在 Dynamic Extensions 代码块中添加 zend_extension=opcache.so
- 配置PHP-fpm
[root@centos7 PHP-7.1.9]# cp /usr/local/PHP/etc/PHP-fpm.conf.default /usr/local/PHP/etc/PHP-fpm.conf [root@centos7 PHP-7.1.9]# cp /usr/local/PHP/etc/PHP-fpm.d/www.conf.default /usr/local/PHP/etc/PHP-fpm.d/www.conf [root@centos7 PHP-7.1.9]# cp sapi/fpm/init.d.PHP-fpm /usr/local/PHP/bin/PHP-fpm [root@centos7 PHP-7.1.9]# chmod 0777 /usr/local/PHP/bin/PHP-fpm
- 尝试启动
[root@centos7 PHP-7.1.9]# /usr/local/PHP/bin/PHP-fpm start Starting PHP-fpm done # 如提示以上即表示安装成功
- 编写快捷启动脚本
[root@centos7 PHP-7.1.9]# vi /lib/systemd/system/PHP-fpm.service # -------------------------------------------------------------------------- # 输入以下代码 # -------------------------------------------------------------------------- [Unit] Description=PHP-fpm After=network.target [Service] Type=forking PIDFile=/usr/local/PHP/var/run/PHP-fpm.pid ExecStart=/usr/local/PHP/bin/PHP-fpm start ExecReload=/usr/local/PHP/bin/PHP-fpm restart ExecStop=/usr/local/PHP/bin/PHP-fpm stop PrivateTmp=true [Install] WantedBy=multi-user.target
- 设置开机启动
[root@centos7 PHP-7.1.9]# systemctl enable PHP-fpm.service
- 其它命令说明
# 启动PHP-fpm [root@centos7 PHP-7.1.9]# systemctl start PHP-fpm.service # 停止PHP-fpm [root@centos7 PHP-7.1.9]# systemctl stop PHP-fpm.service # 重启PHP-fpm [root@centos7 PHP-7.1.9]# systemctl restart PHP-fpm.service # 如果提示:Job for PHP-fpm.service Failed because the control process exited with error code. See "systemctl status PHP-fpm.service" and "journalctl -xe" for details. # 请选结束PHP-fpm进程后再尝试执行上面的快捷操作 [root@centos7 PHP-7.1.9]# pkill -9 PHP-fpm
Nginx虚拟主机配制
- 打开配制文件
[root@centos7 PHP-7.1.9]# vi /usr/local/Nginx/conf/Nginx.conf
- 在http{}节点尾加入以下代码
############################################## #LIANGZHI ############################################## server { listen 80; server_name *.demo.com; root /data/web/demo/www; access_log /data/web/demo/log/access.log main; error_log /data/web/demo/log/error.log error; index index.PHP; #THINKPHP伪静态 location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.PHP?s=$1 last; break; } } #解析PHP代码 location ~ \.PHP$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.PHP; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } #静态资源缓存1天 location ~ .*\.(gif|jpg|jpeg|png|bmp|ico|swf|js|css)$ { expires 1d; access_log off; } #字体文件跨域问题 location ~ .*\.(eof|ttf|ttc|otf|eof|woff|woff2|svg)(.*){ add_header Access-Control-Allow-Origin *; } }
安装PHP支持插件Memcache
[root@centos7 www]# cd /usr/local/src [root@centos7 src]# wget http://memcached.org/files/memcached-1.5.1.tar.gz [root@centos7 src]# tar -zxvf memcached-1.5.1.tar.gz [root@centos7 src]# cd memcached-1.5.1 [root@centos7 memcached-1.5.1]# yum install libevent* [root@centos7 memcached-1.5.1]# ./configure --prefix=/usr/local/memcached [root@centos7 memcached-1.5.1]# make && make install
- 编写快捷启动脚本
[root@centos7 memcached-1.5.1]# vi /usr/local/memcached/memcached # 输入以下代码(启动参数请在下面的脚本中修改,如端口,最大内存)
#! /bin/sh # # chkconfig: - 55 45 # description: The memcached daemon is a network memory cache service. # processname: memcached # config: /etc/sysconfig/memcached # Source function library. . /etc/rc.d/init.d/functions PORT=11211 USER=root MAXCONN=1024 CACHESIZE=64 OPTIONS="" if [ -f /etc/sysconfig/memcached ];then . /etc/sysconfig/memcached fi # Check that networking is up. if [ "$NETWORKING" = "no" ] then exit 0 fi RETVAL=0 start () { echo "Starting memcached ..." # insure that /var/run/memcached has proper permissions chown $USER /usr/local/memcached/bin/memcached /usr/local/memcached/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached.pid $OPTIONS RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached } stop () { echo "Stopping memcached ..." killproc memcached RETVAL=$? echo if [ $RETVAL -eq 0 ] ; then rm -f /var/lock/subsys/memcached rm -f /var/run/memcached.pid fi } restart () { stop start } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status memcached ;; restart|reload) restart ;; condrestart) [ -f /var/lock/subsys/memcached ] && restart || : ;; *) echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" exit 1 esac
- 脚本执行权限
[root@localhost memcached-1.5.1]# chmod 0777 /usr/local/memcached/memcached
- 编写服务启动脚本
[root@centos7 memcached-1.5.1]# vi /lib/systemd/system/memcached.service # -------------------------------------------------------------------------- # 输入以下代码 # -------------------------------------------------------------------------- [Unit] Description=memcached After=network.target [Service] Type=forking PIDFile=/var/run/memcached.pid ExecStart=/usr/local/memcached/memcached start ExecReload=/usr/local/memcached/memcached restart ExecStop=/usr/local/memcached/memcached stop PrivateTmp=true [Install] WantedBy=multi-user.target
- 设置开机启动
[root@centos7 memcached-1.5.1]# systemctl enable memcached.service
- 其它命令说明
# 启动memcached [root@centos7 memcached-1.5.1]# systemctl start memcached.service # 停止memcached [root@centos7 memcached-1.5.1]# systemctl stop memcached.service # 重启memcached [root@centos7 memcached-1.5.1]# systemctl restart memcached.service # 如果提示:Job for memcached.service Failed because the control process exited with error code. See "systemctl status memcached.service" and "journalctl -xe" for details. # 请选结束memcached进程后再尝试执行上面的快捷操作 [root@centos7 memcached-1.5.1]# pkill -9 memcached
官网memcache-3.0.8在编译的时候出现“PHP-smart_str.h”没有找到的错误!
但是我们可以在github里面找到pecl-memcache支持PHP7的分支,请按以下操作即可完成memcache中扩展安装
[root@centos7 memcached]# cd /usr/local/src/PHP-7.1.9/ext # 如果已经安装git忽略yun install git [root@centos7 memcached]# yum install git [root@centos7 ext]# git clone https://github.com/websupport-sk/pecl-memcache memcache [root@centos7 ext]# cd memcache [root@centos7 ext]# yum install autoconf [root@centos7 ext]# /usr/local/PHP/bin/PHPize [root@centos7 ext]# ./configure --with-PHP-config=/usr/local/PHP/bin/PHP-config [root@centos7 ext]# make && make install
[root@centos7 ext]# vi /usr/local/PHP/etc/PHP.ini # 在 Dynamic Extensions 代码块中添加如下扩展 extension=/usr/local/PHP/lib/PHP/extensions/no-debug-non-zts-20160303/memcache.so
-重启linux完成安装(或重启Nginx PHP-fpm)
[root@centos7 ext]# reboot