环境:

版本 IP地址 源码包版本
Centos7.5_mysql 192.168.111.3 mysql-5.7.24.tar.gz,cmake-3.13.1.tar.gz,boost_1_59_0
Centos7.5_httpd 192.168.111.4 apr-1.6.5,apr-util-1.6.1,httpd-2.4.37
Centos7.5_php 192.168.111.5 php-7.3.1

目录

一、安装配置MySQL

二、安装配置httpd

三、安装配置PHP


一、安装配置MySQL

[root@localhost ~]# yum -y install ncurses-devel
#这个是cmake的依赖包
  • 安装MySQL
[root@localhost ~]# tar xf cmake-3.13.1.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/cmake-3.13.1/
[root@localhost cmake-3.13.1]# ./configure && gmake && gmake install
#这步时间较长
[root@localhost cmake-3.13.1]# useradd -M -s /sbin/nologin mysql
#创建一个程序用户并且指定参数
[root@localhost cmake-3.13.1]# mkdir /usr/local/boost
#创建一个目录,并将boost_1_66_0.tar.gz解压后放到这个目录里
[root@localhost ~]# tar zxf boost_1_59_0.tar.gz -C /usr/local/boost/
[root@localhost ~]# tar xf mysql-*.tar.gz -C /usr/src/
#解压MySQL包
[root@localhost boost_1_59_0]# cd /usr/src/mysql-5.7.24/ [root@localhost mysql-5.7.24]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA
_CHARSETS=all -DSYSCONFDIR=/etc -DWITH_BOOST=/usr/local/boost && make && make install
#这步时间较长
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql #数据库程序安装目录
-DDEFAULT_CHARSET=utf8 #指定字符集编码
-DDEFAULT_COLLATION=UTF8_GENERAL_CI #默认的字符集校对规则,utf8_general_ci适用于utf-8字符集的通用规则
-DWITH_EXTRA_CHARSETS=all #指定额外支持的字符集编码
-DSYSCONFDIR=/etc #指定配置文件存放目录
[root@localhost mysql-5.7.24]# cd /usr/local/mysql/
[root@localhost mysql]# chown -R mysql:mysql *
#将该目录下的所有文件和目录的属主和属组修改为mysql
  • 配置MySQL
[root@localhost mysql]# vim /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid
  • 初始化数据库
[root@localhost mysql]# ./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
--user #指定用户身份运行
--datadir #指定安装目录
--basedir #指定数据目录
执行该命令后注意会出现下面这一行,密码是最后的字符,保存好,待会儿可以进行修改
2019-04-18T08:06:48.532352Z 1 [Note] A temporary password is generated for root@localhost: 4PUsoq3O=rjs
  • 设置环境变量
[root@localhost mysql]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@localhost mysql]# . /etc/profile
  • 服务启动文件
[root@localhost mysql]# cp support-files/mysql.server /usr/local/mysql/bin/mysqld.sh
#将配置文件添加到系统服务
[root@localhost mysql]# chmod +x /usr/local/mysql/bin/mysqld.sh
[root@localhost data]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
PIDFile=/usr/local/mysql/data/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Needed to create system tables
#ExecStartPre=/usr/bin/mysqld_pre_systemd
# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid
#注意这里要加上 --daemonize
# Use this to switch malloc implementation
#EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
[root@localhost data]# systemctl start mysqld
[root@localhost data]# systemctl enable mysqld
[root@localhost data]# mysqladmin -u root -p4PUsoq3O=rjs password 123456
#修改密码,-p后为旧密码,即初始化时出现的哪个,后面为新密码,有空格
[root@localhost data]# mysql -u root -p123456
#使用新密码,登录数据库,-p后无空格 mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
#给用户授权远程连接,稍后在别的服务器上可以通过PHP使用该用户及密码

二、安装配置httpd

  • 安装
[root@localhost ~]# useradd -r -s /sbin/nologin -M apache
#创建用户
[root@localhost ~]# ls
anaconda-ks.cfg apr-1.6.5.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.37.tar.gz initial-setup-ks.cfg
[root@localhost ~]# yum -y install pcre-devel openssl-devel expat-devel libxml2-devel bzip2-devel
#安装依赖 [root@localhost ~]# mv apr-1.6.5 apr
[root@localhost ~]# tar zxf apr-util-1.6.1.tar.gz
[root@localhost ~]# mv apr-util-1.6.1 apr-util
#配置所需的包 [root@localhost ~]# tar zxf httpd-2.4.37.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/httpd-2.4.37/
[root@localhost httpd-2.4.37]# mv /root/{apr-util,apr} srclib/
[root@localhost httpd-2.4.37]# ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-includ
ed-apr=/root/apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork && make && make install
  • 配置
修改配置文件

[root@localhost httpd-2.4.37]#  vim /usr/local/httpd/conf/httpd.conf
171 User apache
172 Group apache
202 ServerName 192.168.111.4:80
#也可填自身域名,并将注释删除
259 <IfModule dir_module>
260 DirectoryIndex index.html index.php
261 </IfModule>
#添加PHP的
484 # Virtual hosts
485 Include conf/extra/httpd-vhosts.conf
#启用虚拟主机配置
119 LoadModule proxy_module modules/mod_proxy.so
123 LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
#取消注释 [root@localhost httpd-2.4.37]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
#将原来文件内容删除
<VirtualHost 192.168.111.4:80>
DocumentRoot "/usr/local/httpd/htdocs"
ServerName www.join.com
ErrorLog "/usr/local/httpd/logs/error_log"
CustomLog "/usr/local/httpd/logs/access_log" common
<Directory "/usr/local/httpd/htdocs">
Options None
AllowOverride None
Require all granted
</Directory>
ProxyRequests Off
#关闭代理请求
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.111.5:9000/usr/local/httpd/htdocs/$1
#访问PHP结尾的网页,匹配PHP地址和目录以及端口
</VirtualHost>
[root@localhost httpd-2.4.37]# vim /usr/lib/systemd/system/httpd.service
#服务启动配置文件
[Unit]
#控制单元的定义
Description=The Apache HTTP Server
#设置服务单元描述字符串
After=network.target
#After:设置服务单元的启动先后顺序。(如,httpd.service单元文件中出现“After=network.target”表示先“network.target”后 “httpd.service“;出现”Before“则
相反顺序启动)
[Service]
#服务定义
Type=forking
#设置服务进程的启动类型。为forking是需同时设置PIDFile配置项,以帮助systemd精确定位到服务的主进程。
PIDFile=/usr/local/httpd/logs/httpd.pid
#设置服务的守护进程的PID文件
ExecStart=/usr/local/httpd/bin/apachectl $OPTIONS
#设置服务启动时执行的命令
ExecReload=/bin/kill -HUP $MAINPID
#设置服务重新加载时执行的命令
KillMode=process
#设置在单元停止时,杀死进程的方法;process表示仅杀死主进程。
Restart=on-failure
#设置服务进程正常退出、异常退出、被杀死、超时时候,是否重启服务。on-failure表示异常退出重启。
RestartSec=42s
#重启服务钱暂停多长时间,默认100ms
[install]
#安装部分
WantedBy=graphical.target
#设置该服务所在的(target)运行目标。WantedBy=graphical.target,是指httpd所在的运行目标是图形界面多用户系统;改配置项还有multi-user.target(非图形界>面多用户系统)
[root@localhost httpd-2.4.37]# systemctl start httpd
[root@localhost httpd-2.4.37]# systemctl enable httpd

三、安装配置PHP

  • 安装
[root@localhost ~]# yum install -y pcre-devel openssl-devel expat-devel libxml2-devel bzip2-devel
#安装依赖包
[root@localhost ~]# tar zxf php-7.3.1.tar.gz -C /usr/src/
[root@localhost php-7.3.1]# cd /usr/src/php-7.3.1/
[root@localhost etc]# ./configure --prefix=/usr/local/php --enable-mysqlnd --with-mysqli=mysqlnd --with-openssl --with-pdo-mysql=mysqlnd --enable-mb
string --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --disable-fileinfo && make && make install
#编译安装
[root@localhost php-7.3.1]# cp php.ini-production /etc/php.ini
#生成配置文件
[root@localhost php-7.3.1]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
#生成服务文件
[root@localhost php-7.3.1]# chmod +x /etc/init.d/php-fpm
[root@localhost php-7.3.1]# chkconfig --add php-fpm
#添加到服务启动
[root@localhost php-7.3.1]# useradd -r -s /sbin/nologin -M apache
#创建运行用户
[root@localhost php-7.3.1]# cd /usr/local/php/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# cp php-fpm.d/www.conf.default php-fpm.d/www.conf
#php-fpm配置文件
[root@localhost etc]# vim php-fpm.d/www.conf
23 user = apache
24 group = apache
#修改用户和组
36 listen = 192.168.111.5:9000
#监听的地址
[root@localhost etc]# vim php-fpm.conf
17 pid = run/php-fpm.pid
#将前面;号去掉(取消注释)
[root@localhost etc]# mkdir -pv /usr/local/httpd/htdocs
mkdir: 已创建目录 "/usr/local/httpd"
mkdir: 已创建目录 "/usr/local/httpd/htdocs"
#创建之前在httpd服务器上指定的目录,存放动态网页
[root@localhost ~]# /etc/init.d/php-fpm start
Starting php-fpm done
#启动php
[root@localhost ~]# netstat -lnpt | grep php
tcp 0 0 192.168.111.5:9000 0.0.0.0:* LISTEN 54111/php-fpm: mast

四、测试

PHP上新建如下测试文件,测试数据库连通性

[root@localhost etc]# vim /usr/local/httpd/htdocs/mysql.php
<?php
$link=mysqli_connect('192.168.111.3','root','123456');
#MySQL数据库的主机地址,登录数据库的用户和密码,注意不是系统用户和密码
if($link) echo "<h1>完全分离成功<h1>";
mysqli_close($link);
?>

over……

LAMP动静分离安装(源码安装)的更多相关文章

  1. 2apt-get命令,deb包安装,源码安装

    1 安装卸载软件 更新源服务器列表 sudovi /etc/apt/sources.list 更新完服务器列表后需要更新下源 sudoapt-get update 更新源 sudoapt-get in ...

  2. Windows 环境下于虚拟环境安装源码安装 cx_oracle

    安装前提条件: (1).安装 instantclient-basic-nt (2).安装 instantclient-sdk-nt (3).安装 Microsoft Visual C++ Compil ...

  3. linux安装-----源码安装步骤--zlib软件安装

    该zlib 可以对许多其他软件的编译代码起着优化 压缩作用. 解压压缩包: .tar.gz------------->tar zxvf 压缩包.tar.gz .tar.bz2---------- ...

  4. salt源码安装软件和yum安装软件

    上面简单列出了源码安装的sls文件书写思路. 涉及到一些固定的思路:如, 1,拷贝 解压安装时候需要依赖tar.gz存在 如果已安装则无需再次安装. 2,启动脚本 加入chk时候需要文件存在,如果已添 ...

  5. Python并发编程-redis-3.0.5 源码安装

    1.简介 Remote Dictionary Server(Redis)是一个基于 key-value 键值对的持久化数据库存储系统.redis 和 Memcached 缓存服务很像,但它支持存储的 ...

  6. [svc]salt源码安装软件和yum安装软件

    上面简单列出了源码安装的sls文件书写思路. 涉及到一些固定的思路:如, 1,拷贝 解压安装时候需要依赖tar.gz存在 如果已安装则无需再次安装. 2,启动脚本 加入chk时候需要文件存在,如果已添 ...

  7. 实验 1:Mininet 源码安装和可视化拓扑工具

    实验 1:Mininet 源码安装和可视化拓扑工具 一.实验目的 掌握 Mininet 的源码安装方法和 miniedit 可视化拓扑生成工具. 二.实验任务 使用源码安装 Mininet 的 2.3 ...

  8. 实验1:Mininet源码安装和可视化拓扑工具

    一.实验目的 掌握 Mininet 的源码安装方法和 miniedit 可视化拓扑生成工具. 二.实验任务 使用源码安装 Mininet 的 2.3.0d6 版本,并使用可视化拓扑工具生成一个最简拓扑 ...

  9. 源码安装的应用 rpm 命令无法查询

    源码安装:一大堆源码文件,需要编译后才能使用(编译需要安装编译器 :yum install gcc) rpm 安装:redhat 官网或其它开源网站编译好发布,已经编译好的安装包,使用 rpm -iv ...

  10. 实验 1 :Mininet 源码安装和可视化拓扑

    实验 1 : Mininet 源码安装和可视化拓扑工具 一 .实验目的 掌握 Mininet 的源码安装方法和 miniedit 可视化拓扑生成工具. 二 .实验任务 使用源码安装 Mininet 的 ...

随机推荐

  1. Java基础练习4(内存管理)

    请根据如下程序代码,画出对应的内存管理图(不需要画方法区),并写出输出结果. 1. public class Cell{ int row; int col; public Cell(int row,i ...

  2. SpringBoot启动原理分析

    用了差不多两年的SpringBoot了,可以说对SpringBoot已经很熟了,但是仔细一想SpringBoot的启动流程,还是让自己有点懵逼,不得不说是自己工作和学习的失误,所以以此文对Spring ...

  3. 实例分析Vue.js中 computed和methods不同机制

    在vue.js中,有methods和computed两种方式来动态当作方法来用的 1.首先最明显的不同 就是调用的时候,methods要加上() 2.我们可以使用 methods 来替代 comput ...

  4. July 09th, 2018. Monday, Week 28th.

    Happiness is an inside job. 自内寻找,才能找到幸福. From William Arthur Ward. Nobody wants to suffer, and we al ...

  5. July 04th. 2018, Week 27th. Wednesday

    And if you really want to see what people are, all you have to do is to look. 想真正了解他人,只需要用心看. From W ...

  6. 随笔:WPS居然!出了!Mac版!

    震惊! WPS! 居然! 出了! Mac版! 刚刚,我打算改一个word文档,打开了我的WIN10虚拟机,然而由于这个win10是前两天重装的,上面并没有word和wps. 当我打开wps官网的时候, ...

  7. ERROR 1129 (HY000): mysqladmin flush-hosts

    mysql报错:ERROR 1129 (HY000): Host * is blocked because of many connection errors; unblock with 'mysql ...

  8. wtf!rds数据同步居然出问题了--菜鸟db的数据修复历程

    由于一次上线操作的数据变更太多,导致执行时间很长! 由于做手动主从关系,所以操作落在了主库上. 由于主从关系不是对整个库的操作,所以在有表新增的地方,添加了dts新的同步关系. db变更完成后,就发布 ...

  9. 带着新人简单看看servlet到springmvc

    好久都没有写博客了,不是因为自己懒了,而是总感觉自己知道的只是太少了,每次想写博客的时候都不知道怎么下手,不过最近看到一篇博客说的是springmvc,给了我比较大的兴趣,感觉一下子对整个spring ...

  10. mybatis自动填充时间字段

    对于实体中的created_on和updated_on来说,它没有必要被开发人员去干预,因为它已经足够说明使用场景了,即在插入数据和更新数据时,记录当前时间,这对于mybatis来说,通过拦截器是可以 ...