标签(空格分隔): Linux 运维 lamp
LAMP
动态资源与静态资源
❶ 静态资源: 原始形式与响应结果一致
❷ 动态资源: 原始形式通常是程序文件(由某种编程语言开发),需要运行后将运行生成的结果呈现给用户
CGI(Common Gateway Interface)协议
是一种协议,它定义了客户端(如httpd)与服务端(特定的应用程序服务进程)交换数据的一种规范.
服务器框架
❶ Web Server: httpd nginx ...
❷ Application Server: php python java perl ruby ...
❸ Data Server: SQL NoSQL NewSQL ...
安装LAMP
yum -y install httpd mariadb-server php php-mysql
# yum一键安装rhel6系只要将mariadb-server改成mysql-server就行了
这种形式是php以shared模块的方式被httpd装载,而并不是以CGI或FastCGI的形式.可以查看一下php安装后生成的文件便知,如下:
rpm -ql php # php生成的文件如下
/etc/httpd/conf.d/php.conf # php的配置文件
/etc/httpd/conf.modules.d/10-php.conf # httpd加载php模块的配置文件
/usr/lib64/httpd/modules/libphp5.so # php模块
/usr/share/httpd/icons/php.gif
/var/lib/php/session
另一种方式是FCGI的形式连接php,php会工作于单独的服务器.其需要两个条件:
❶ httpd要装载cgi_module
❷ 安装php-fpm
测试php是否安装成功
cat > /var/www/html/index.php <<EOF # php测试页
> <?php
> phpinfo();
> ?>
> EOF
systemctl start httpd # 启动httpd
在浏览器地址栏输入:http://10.0.0.11/index.php,回车后会看到如下内容
php_test.png
测试mariadb-server是否安装成功
php是通过php-mysql这个模块(扩展)来连接MySQL数据库的,我们看看php-mysql都安装了哪些文件便可一清二楚.
rpm -ql php-mysql # 查看php-mysql程序生成的内容
/etc/php.d/mysql.ini
/etc/php.d/mysqli.ini
/etc/php.d/pdo_mysql.ini
/usr/lib64/php/modules/mysql.so # 以下3个便是php的MySQL的模块了
/usr/lib64/php/modules/mysqli.so
/usr/lib64/php/modules/pdo_mysql.so
接着我们可以来测试一下php能否连接上MySQL数据库
cat > /var/www/html/php-mysql.php << EOF # 编写一个测试连接MySQL的php脚本
> <?php
> $conn = mysql_connect('127.0.0.1', 'root', '');
> if ($conn)
> echo 'Success';
> else
> echo 'Failure';
> ?>
> EOF
不启动MySQL服务时,在本机浏览器地址栏输入:http://10.0.0.11/php-mysql.php
当启动MySQL
systemctl start mariadb.service
服务时,再次访问http://10.0.0.11/php-mysql.php
Success
LAMP框架安装Discuz论坛程序(准备Discuz_X3.2_SC_UTF8程序)
systemctl start mariadb.service # 启动MySQL数据库
#Mysql # 进入MySQL shell
> create database ultrax; # 新建一个数据库
> grant all on ultrax.* to 'dzuser'@'localhost' identified by 'dzpass';
# 授权一个用户来使用这个数据库(而不用root)
在Discuz程序所在的目录执行 unzip Discuz_X3.2_SC_UTF8得到如下3个目录
readme upload utility
cp -a upload /var/www/html/discuz # 将upload目录拷贝到指定的并改名discuz
此时便可访问http://10.0.0.1/discuz
discuz程序安装向导点击"我同意"
开始安装点击"下一步"
setenv.png
点击"下一步"
点击"下一步"即可完成安装
LAMP安装phpMyAdmin来管理数据库(我这里用phpMyAdmin-4.4.14.1-all-languages)
为了安全,我们给数据库用户root设定个密码
#mysq
>use mysql;
>update user set password=PASSWORD('uangianlap') where User='root';
>flush privileges;
>\q
下次再以root身份登录MySQL就需要你输入我们设置的密码了.
yum -y install php-mbstring php-mcrypt
systemctl reload httpd
在phpMyAdmin程序文件所在的目录下
unzip phpMyAdmin-4.4.14.1-all-languages.zip
phpMyAdmin-4.4.14.1-all-languages.zip
mv config.sample.inc.php config.inc.php
vim config.inc.php
$cfg['blowfish_secret'] = 'rKHBflH9Gfk='; # 在''里随机添加一些内容
cp -a phpMyAdmin-4.4.14.1-all-languages /var/www/html/pma
此时访问http://10.0.0.1/pma即可进行网页操作管理MySQL数据库了
php-xcache
yum -y install php-xcache
xcache模块可以缓存php运行时编译生成的opcode可以加速php程序的效率.
php的配置文件
/etc/php.ini
/etc/php.d/*.ini
参考php官方文档使用
php-fpm使用
php-fpm: fastcgi process manager
php-fpm与httpd之间通过套接字通信,此时httpd可看着是php-fpm的客户端,站在访问者角度来说httpd又可以称之为反代.
PHP-FPM (FastCGI Process Manager) 是一个可供选择的 PHP FastCGI实现,它增加了一些额外的很有用的特性,适合所有站点特别是那些比较繁忙的.
yum -y install httpd mariadb-server php-fpm php-mysql
php-fpm的程序环境
`/etc/php-fpm.conf` # 主配置文件
pid = /run/php-fpm/php-fpm.pid
error_log = /var/log/php-fpm/error.log
log_level = notice
daemonize = no
`/etc/php-fpm.d` # 辅助配置文件目录
`/etc/php-fpm.d/www.conf` # 定义了如何响应来自前端httpd的请求,连接池的定义
listen = 127.0.0.1:9000 # 监听在哪台主机与端口上
listen.backlog = -1 # 允许排除的队列,-1表示无穷
listen.allowed_clients = 127.0.0.1 # 限定客户端只能来自
user = apache # php-fpm子进程以哪个用户身份运行
group = apache # 同上
pm = dynamic|static # 进程管理方式,默认前者.动态则需要设置如下指令
pm.max_children = 50 # 最大的子进程数量
pm.start_servers = 5 # 服务启动时的子进程数量
pm.min_spare_servers = 5 # 最小空闲子进程
pm.max_spare_servers = 35 # 最大空闲子进程
pm.max_requests = 500 # 每个子进程最多可处理多少个前端请求
pm.status_path = /status # 状态页面,建议打开
ping.path = /ping # 状态检测,建议打开
ping.response = pong # 状态检测返回内容
rlimit_files = 1024 # 打开的文件数量,默认为1024
rlimit_core = 0 # 进程所能使用的核心大小,0表示不限制
`/usr/lib/systemd/system/php-fpm.service`
`/usr/sbin/php-fpm` # 主程序,启动后监听在某个套按字上
systemctl start php-fpm.service # 启动php-fpm服务
httpd -M | grep fcgi # 确保httpd装载了proxy_fcgi_module
mkdir -pv /vhost/www
cat > phpinfo.php << EOF
> <?PHP
> phpinfo();
> ?>
> EOF
编辑前端httpd主机设置
vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
ServerName www.jianshu.com
DocumentRoot "/vhost/www"
<Directory "/vhost/www">
Options None
AllowOverride None
Require all granted
</Directory>
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/vhost/www/$1
ProxyPassMatch ^/(ping|status)$ fcgi://127.0.0.1:9000/$1
DirectoryIndex index.php
</VirtualHost>
status输出内容说明:
pool: www # 连接池名称
process manager: dynamic # 进程管理器类型
start time: 10/Feb/2017:11:48:29 +0800 # 启动日期时间
start since: 16 # 运行时长
accepted conn: 1 # 连接池已经处理过的请求
listen queue: 0 # 请求队列长度
max listen queue: 0 # 请求队列的最大长度
listen queue len: 128 # socket等待队列的长度
idle processes: 4 # 空闲进程数量
active processes: 1 # 活跃进程数量
total processes: 5 # 连接池中的总进程数
max active processes: 1 # 过去时间连接池中最大的活跃进程数量
max children reached: 0 # 达到连接池中最大进程数量限制的上限的次数
slow requests: 0 # 启用slow log时记录的慢请求的数量
编译安装LAMP(CentOS7)
系统开发环境: Development tools, Server Platform Development
httpd依赖于arp和apr-util (apache portable runtime) 以实现OS跨平台
各程序版本:
httpd: 2.2 2.4
php: 5.x #php与httpd的结合方式也需要考虑,5.3.3之前需要打补丁才能实现fpm
mysql: 5.1,5.5,5.6,5.7,5.8
mariadb: 5.x 10.x
mysql&mariadb安装方式
1.预制的二进制程序包
2.二进程格式(与win中的绿色软件相似)
3.源代码
httpd+php
modules: --with-apxs=
prefork: libphp5.so
worker,event: libphp5-zts.so
fpm:
5.3.3-, 手动打上fpm patch
5.3.3+, 自带了fpm,编译时只需要使用--fpm选项
㈠ Httpd 2.4 编译安装 httpd-2.4.10.tar.bz2
yum -y groupinstall "Development Tools" "Server Platform Development"
yum -y install pcre-devel openssl-devel libevent-devel apr-devel apr-util-devel
tar -xf httpd-2.4.10.tar.bz2; cd httpd-2.4.10
./configure --prefix=/usr/local/httpd24 \ # 程序安装路径
--sysconfdir=/etc/httpd \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork \
--with-pcre \
--with-zlib \
--with-apr=/usr \
--with-apr-util=/usr
make && make install #make -j 可以指定多线程
cd /usr/local/; ln -sv /usr/local/httpd24 httpd;
echo "export PATH=/usr/local/httpd/bin:$PATH" > /etc/profile.d/apache.sh; source /etc/profile.d/apache.sh
㈡ Mariadb二进制安装
groupadd -r mysql
useradd -r -g mysql -M -s /sbin/nologin mysql # 创建mysql用户
mkdir /data/mydata # 数据目录,生产环境应该做RAID磁盘LVM
chown -R mysql.mysql /data/mydata
tar -xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local/; cd /usr/local # 创建软件软链接
ln -sv mariadb-5.5.46-linux-x86_64 mariadb; cd mariadb
chown -R root:mysql ./*
scripts/mysql_install_db --user=mysql --datadir=/data/mydata
cp support -files/my-large.cnf /etc/my.cnf
vim /etc/my.cnf
thread_concurrency = 8 # 数字改成当前CPU核心*2即可
datadir = /data/mydata
skip_name_resolve = ON
innodb_file_per_table = ON
cp support-files/mydql.server /etc/init.d/mysqld # CentOS7需要将此脚本里部分mysql改
成mariadb
chkconfig --add mysqld
echo export PATH=/usr/local/mariadb/bin:$PATH > /etc/profile.d/mysql.sh; source /etc/profile.d/mysql.sh
OK!
㈢ 编译安装 php-5.4.40.tar.bz2
yum -y install gd-devel pcre-devel libpng-devel freetype-devel libmcrypt-devel libxml2-devel bzip2-devel openssl openssl-devel
tar -xf php-5.4.40.tar.bz2; cd php-5.4.40
./configure \
--prefix=/usr/local/php54 \
--with-mysql=/usr/local/mysql \
--with-openssl \
--with-mysqli=/usr/local/mariadb/bin/mysql_config \
--enable-mbstring \
--enable-xml \
--enable-sockets \
--enable-exif \
--disable-ipv6 \
--enable-soap \
--with-freetype-dir \
--with-gd --with-libxml-dir=/usr --with-zlib --with-jpeg-dir --with-png-dir --with-mcrypt \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-config-file-path=/etc/php.ini \
--with-config-file-scan-dir=/etc/php.d/
make && make install
cp php.ini-production /etc/php.ini # 拷贝php模板配置文件
mkdir /etc/php.d/ # 创建配置文件辅助目录
整合php至httpd上
在httpd的配置文件httpd.conf中添加一行内容"AddType application/x-httpd-php .php" "DirectoryIndex index.php"
注意: 如果httpd使用线程模型(worker)MPM,需要额外的--enable-maintainer-zts选项
注意: 如果要以fpm方式运行php,需要编译时移除--with-apxs选项,额外添加--enable-fpm选项
注意: 如果是独立安装的mysql-server,
网友评论