Linux笔记11-LAMP服务架构
【阿里云】爆款云产品,新客特惠全年最低价,云服务器低至0.4折起,11.1开售
【腾讯云】爆款1核2G云服务器首年48元,还有iPad Pro、Bose耳机、京东卡等你来抽!
【华为云】上云特惠巨划算,免单抽奖享豪礼
【七牛云】爆款云产品全年最低价,热门产品 0 元秒杀,参与抽奖赢新款 iPhone
[TOC]
1.什么是LAMP服务架构
LAMP即Linux操作系统+Apache+MySQL/MariaDB/MongoDB+PHP/Python/Perl
数据库可以单独使用一台服务器,但是Apache和PHP必须在同一台服务器使用
2.源码编译安装MySQL数据库
查看系统版本
uname -a
安装常用命令及MySQL依赖包
yum -y install wget vim xz lrzsz yum -y install libaio-devel numactl-devel
下载MySQL并解压到/usr/local/目录
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz tar -xvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
进入/usr/local/目录并将解压后的文件重命名为mysql
cd /usr/local/ mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql
创建MySQL数据库以及日志存放目录
mkdir -p /data/mysql/{data,tmp,binlog,log} touch /data/mysql/log/mysqld-error.log
创建MySQL用户并给MySQL目录授权
useradd mysql -s /sbin/nologin -M chown -R mysql.mysql /data/mysql chown -R mysql.mysql /usr/local/mysql
添加MySQL的环境变量
export PATH=$PATH:/usr/local/mysql/bin echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
初始化MySQL数据库(若
echo $?
输出0,则初始化成功,否则初始化失败)mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql echo &?
参数含义
- --initialize 生成随机密码,官方推荐使用
- --initialize-insecure 生成空密码,root用户密码默认为空
- --basedir MySQL的安装目录,一般放在/usr/local/mysql/
- --datadir 数据库的存放路径, 放在比较安全的目录
- --user 指定用户去初始化MySQL
创建MySQL配置文件
vim /etc/my.cnf
修改内容为
[mysqld]
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/data/mysql/log/mysqld-error.log
pid-file=/data/mysql/mysqld.pid
启动MySQL、查看服务是否启动、端口是否监听
mysqld_safe --user=mysql & ps -aux | grep mysql netstat -anput | grep mysql
使用MySQL自带启动脚本启动MySQL并加入开机自启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server sed -i "45,~50s#basedir=#basedir=/usr/local/mysql#g" /etc/init.d/mysql.server sed -i "45,~50s#datadir=#datadir=/data/mysql/data#g" /etc/init.d/mysql.server
确认一下我们是否修改成功
grep -E '^datadir=|^basedir=' /etc/init.d/mysql.server
若输出`basedir=/usr/local/mysql`
`datadir=/data/mysql/data`则修改成功
修改权限、启动服务、设置开机自启动
chmod +x /etc/init.d/mysql.server
service mysql.server start
chkconfig mysql.server on
管理MySQL用户
打开MySQL客户端
mysql
修改'root'@'localhost' 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
创建'root'@'127.0.0.1'
CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root_password';
给'root'@'127.0.0.1' 授权
grant all privileges on *.* to 'root'@'127.0.0.1' ;
刷新MySQL权限
flush privileges;
3.源码编译安装Apache服务
进入
/usr/src/
目录cd /usr/src/
下载依赖apr和apr-util,下载httpd软件包
wget https://mirrors.cnnic.cn/apache/apr/apr-1.7.0.tar.gz wget https://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz wget https://mirrors.cnnic.cn/apache/httpd/httpd-2.4.39.tar.gz
文件在清华大学开源软件镜像站下载,若下载链接失效,前往网站寻找下载链接
解压下载的软件包
ls tar -xvf apr-1.7.0.tar.gz tar -xvf apr-util-1.6.1.tar.gz tar -xvf httpd-2.4.39.tar.gz
设置apr安装路径,进行编译和编译安装
cd apr-1.7.0 ./configure --prefix=/usr/local/apr make && make install
设置apr-util安装路径,进行编译和编译安装
cd ../apr-util-1.6.1 yum install -y expat-devel ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make && make install
设置httpd安装路径和模块,进行编译和编译安装
cd ../httpd-2.4.39 yum groupinstall "Development Tools" "Server Platform Development" yum install -y pcre-devel yum install -y openssl-devel ./configure --prefix=/usr/local/apache2.4 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork make && make install
进入
/usr/local/apache2.4/
目录,并查看文件内容cd /usr/local/apache2.4/ ls
- bin/httpd是启动Apache的文件
- conf目录是配置文件所在目录
- htdocs目录用于存放默认的网站页面
- logs目录是存放日志的目录
- modules目录是存放扩展模块的目录
添加httpd的全局变量
vim /etc/profile.d/httpd.sh . /etc/profile.d/httpd.sh
添加内容为export PATH=/usr/local/apache2.4/bin:$PATH
启动Apache服务
apachectl start
4.源码编译安装PHP5.6
安装依赖、扩展库、扩展模块
yum -y install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel libedit-devel sqlite-devel jemalloc jemalloc-devel bzip2-devel libjpeg-devel libpng-devel freetype-devel
进入
/usr/src/
目录cd /usr/src/
下载PHP5.6版本源码编译安装包(暂时没有找到下载速度比较快的镜像站)
wget http://cn2.php.net/get/php-5.6.40.tar.bz2/from/this/mirror
解压源码包
tar -xvf mirror
进入
php-5.6.40/
目录并进行配置,若echo $?
输出0,则配置成功,否则配置失败cd php-5.6.40 ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif echo $?
进行编译和编译安装,时间较长(与CPU和内存性能相关),若
echo $?
输出0,则编译安装成功,否则编译安装失败make && make install echo $?
- PHP核心二进制文件在
/usr/local/php/bin/
目录下,PHP与Apache的结合通过/usr/local/apache2.4/modules/libphp5.so
文件实现的 添加PHP的全局变量
vim /etc/profile.d/php.sh
添加内容为export PATH=/usr/local/php/bin:$PATH
source /etc/profile.d/php.sh
- 配置好全局变量后,可以使用
php -m
查看PHP加载的模块 运行
/usr/local/php/bin/php | less
时没有加载php.ini
配置文件,需要复制php.ini-production
配置文件到/usr/local/php/etc/
目录下cp php.ini-production /usr/local/php/etc/php.ini
5.源码编译安装PHP7.2
进入
/usr/src/
目录cd /usr/src/
下载解压PHP7.2.3源码包,并进入
php-7.2.3/
目录wget http://cn2.php.net/get/php-7.2.3.tar.gz/from/this/mirror tar -vxf mirror cd php-7.2.3
进行参数设置和扩展模块设置,若
echo $?
输出0,则配置成功,否则配置失败./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-apxs2=/usr/local/apache2.4/bin/apxs --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-icony-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif echo $?
进行编译和编译安装,时间较长(与CPU和内存性能相关),若
echo $?
输出0,则编译安装成功,否则编译安装失败make && make install echo $?
将PHP7添加到全局变量
vim /etc/profile.d/php7.sh
添加内容为export PATH=/usr/local/php7/bin:$PATH
source /etc/profile.d/php7.sh
在生成环境中PHP5和PHP7会产生冲突,如果不想使用PHP5或PHP7版本,可以在httpd.conf配置文件注释,大约在162行
vim /usr/local/apache2.4/conf/httpd.conf
#LoadModule php5_module modules/libphp5.so
LoadModule php7_module modules/libphp7.so
6.源码编译安装Python
6.1源码编译安装Python3..6
安装Python依赖包
yum -y install openssl-devel readline-devel unzip gcc-c++ wget
下载解压Python源码包,并进入
Python-3.6.5/
目录wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz tar -vxf Python-3.6.5.tgz cd Python-3.6.5
进行编译配置,并编译安装
./configure --prefix=/usr/local/python36 echo $? make && make install echo $?
配置pip命令,pip默认使用官方源,在国内速度较慢,需要更改为国内原
vim /etc/pip.conf
添加内容为
[gloabl]
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com
[list]
format=columns
6.2 安装Python扩展MySQL数据库
Python默认调用SQLite数据库,不支持MySQL数据库,需要手动安装MySQL数据库并进行配置
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum -y install mysql mysql-server mysql-devel zlib-devel systemctl start mysqld.service
调用python/bin/virtualenv,在目录下生产python36env配置文件
pip install virtualenv virtualenv ./python36env
进入python36env环境
source python36env/bin/activate
使用pip命令安装MySQL数据库,安装后使用
pip list
命令查看是否安装成功pip install pymysql pip list
退出python36env环境,并编辑MySQL主配置文件
deactivate vim /etc/my.cnf
添加内容为
[mysqld]
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
为MySQL设置密码
mysqladmin -uroot password 'new_password'
7. Apache结合PHP操作
编辑httpd主配置文件
vim /usr/local/apache2.4/conf/httpd.conf
搜索ServerName
,将ServerName www.example.com:80
前的注释#
删除
在浏览器输入虚拟机IP地址,若提示无法访问,则在防火墙添加80端口规则
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
- 在httpd.conf配置文件中搜索
Require all denied
,将denied
改为granted
- 在httpd.conf配置文件中搜索
AddType
,在AddType application/x-gzip .gz .tgz
下添加一行解析PHP代码AddType application/x-httpd-php .php
- 在httpd.conf配置文件中搜索
IfModule dir_module
,将
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
修改为
<IfModule dir_module>
`DirectoryIndex index.html index.php`
</IfModule>
保存配置文件后,使用-t选项查看是否有语法错误
/usr/local/apache2.4/bin/apachectl -t /usr/local/apache2.4/bin/apachectl graceful
若更改完配置文件仍无法解析PHP,在
/usr/local/apache2.4/htdocs/
目录下创建一个index.php
文件vim /usr/local/apache2.4/htdocs/index.php
在文件中写入
<?php
phpinfo();
- 问题:在浏览器打开IP/test.php后,浏览器弹出文件下载窗口
解决方法:编辑httpd主配置文件
vim /usr/local/apache2.4/conf/httpd.conf
在文件末尾添加内容为
AddHandler php7-script php
AddType application/x-httpd-php .php .php7
AddType application/x-httpd-php-source .phps
检查是否有语法错误
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
再次进入IP/index.php解析成功
8.Apache默认虚拟主机
打开修改httpd.conf配置文件来打开虚拟主机配置文件
vim /usr/local/apache2.4/conf/httpd.conf
搜索extra
,将#Include conf/extra/httpd-vhosts.conf
前的注释去掉
打开httpd-vhost.conf配置文件,定义多个虚拟主机
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
修改文件内容,每个VirtualHost *:80
代表一个虚拟主机
<VirtualHost *:80>
`ServerAdmin admin@leeyiding.com`
`DocumentRoot "/data/www/leeyd_blog"`
`ServerName leeyiding.com`
`ServerAlias www.leeyiding.com`
`ErrorLog "/data/logs/leeyiding.com-error_log"`
`CustomLog "/data/logs/leeyiding.com-access_log" common`
</VirtualHost>
参数含义:
- ServerAdmin 定义管理员邮箱
- DocumentRoot 定义网站根目录路径
- ServerName 网站域名
- ServerAlias 网站别名,可以是多个域名
- ErrorLog 网站错误日志路径
- CustomLog 网站访问日志路径
修改完配置文件后,在对应目录下创建相应的目录
mkdir /data/www/ mkdir /data/www/leeyd_blog mkdir /data/www/www.leeyiding.com mkdir /data/logs/
在对应站点创建
index.php
文件,并在每个站点的index.php
文件中定义站点的名字cd /data/www/ vim leeyd_blog/index.php
添加内容为
<?php
echo "LeeYD · Blog";
确认无误后重新加载配置文件
/usr/local/apache2.4/bin/apachectl -t /usr/local/apache2.4/bin/apachectl graceful
- 浏览器访问IP:80 ,网页成功显示LeeYD · Blog
版权属于:LeeYD · Blog
本文标题:Linux笔记11-LAMP服务架构
本文链接:https://www.leeyiding.com/archives/25/
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 4.0 许可协议
若转载本文,请标明出处并告知本人
【阿里云】爆款云产品,新客特惠全年最低价,云服务器低至0.4折起,11.1开售
【腾讯云】爆款1核2G云服务器首年48元,还有iPad Pro、Bose耳机、京东卡等你来抽!
【华为云】上云特惠巨划算,免单抽奖享豪礼
【七牛云】爆款云产品全年最低价,热门产品 0 元秒杀,参与抽奖赢新款 iPhone