引言:
LAMP架构 是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境,LAMP是一个缩写词,具体包括Linux操作系统 ,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言
一、LAMP概述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境.LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP(或Perl、Python)网页编程语言.
1、各组件作用
组件
代号
描述
Linux
L
作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性,兼容性(AMP组件也支持Windows、UNIX等平台).
Apache
A
作为LAMP架构的前端,是一款功能强大,稳定性好的Web服务器程序,该服务器直接面向用户提供网站访问,发送网页,图片等文件内容.(静态页面—>静态请求 http)
MySQL
M
作为LAMP架构的后端,是一款流行的开源关系数据库系统.在企业网站、业务系统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些信息.(数据库—>数据储存/读取)
PHP/Perl/Python
P
作为三种开发动态网页的编程语言,负责解释动态网页文件,负责沟通Web服务器和数据库系统以协同工作,并提供Web应用程序的开发和运行环境.其中PHP是一种被广泛应用的开放源代码的多用途脚本语言,它可以嵌入到HTML中,尤其适合于Web应用开发.(动态页面—->动态请求 http)
2、各组件安装顺序 在构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP.其中Apache和MySQL的安装并没有严格的顺序,PHP环境的安装一般放到最后安装,负责沟通 Web 服务器和数据库系统以协同工作.
3.数据流向
二、编译安装Apache httpd服务 1.关闭防火墙,将安装Apache所需软件包传到/opt目录下 1 2 3 4 5 6 7 systemctl stop firewalld systemctl disable firewalld vim /etc/selinux/config SELINUX=enforcing
apr组件包用于支持Apache上层应用跨平台,提供底层接口库,能有效的降低并发连接数、降低进程和减少访问堵塞.
2.安装环境依赖包 1 2 3 4 5 6 7 8 9 10 11 yum -y install \ gcc \ gcc-c++ \ make \ pcre \ pcre-devel \ expat-devel \ perl yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl
3.配置软件模块 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 cd /opt/lamp/apache/tar zxf apr-1.6.2.tar.gz tar zxf apr-util-1.6.0.tar.gz tar zxf httpd-2.4.29.tar.gz mv apr-1.6.2 /opt/lamp/apache/httpd-2.4.29/srclib/aprmv apr-util-1.6.0 /opt/lamp/apache/httpd-2.4.29/srclib/apr-utilcd httpd-2.4.29/./configure \ --prefix=/usr/local/httpd \ --enable-so \ --enable-rewrite \ --enable-charset-lite \ --enable-cgi ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
4.编译及安装 1 make -j 2 && make install
5.优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别 1 2 ln -s /usr/local/httpd/conf/httpd.conf /etc/ln -s /usr/local/httpd/bin/* /usr/local/bin/
6.添加httpd系统服务 方法一:
1 2 3 4 5 6 7 8 9 10 11 cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd chmod +x /etc/init.d/httpdvi /etc/init.d/httpd chkconfig --add httpd systemctl start httpd.service 或 service httpd start
方法二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 vim /lib/systemd/system/httpd.service [Unit] Description=The Apache HTTP Server After=network.target [Service] Type=forking PIDFile=/usr/local/httpd/logs/httpd.pid ExecStart=/usr/local/bin/apachectl $OPTIONS ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target systemctl start httpd.service systemctl enable httpd.service
7.修改httpd 服务配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 vim /etc/httpd.conf Listen 192.168.64.170:80 ServerName 192.168.64.170:80 DocumentRoot "/usr/local/httpd/htdocs" DirectoryIndex index.html httpd -t 或 apachectl -t cat /usr/local/httpd/htdocs/index.htmlsystemctl restart httpd.service
浏览器访问验证
三、编译安装mysqld 服务 1.下载相关文件
2.安装环境依赖包 1 2 3 4 5 6 7 8 yum -y install \ gcc \ gcc-c++ \ ncurses \ ncurses-devel \ bison \ cmake yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
3.配置软件模块 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 cd /opt/lamp/mysqltar -zxvf mysql-5.7.18.tar.gz tar -zxvf boost_1_59_0.tar.gz mv /opt/lamp/mysql/boost_1_59_0 /usr/local/boost cd mysql-5.7.18/cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DSYSCONFDIR=/etc \ -DSYSTEMD_PID_DIR=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DWITH_BOOST=/usr/local/boost \ -DWITH_BOOST=boost -DWITH_SYSTEMD=1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DSYSCONFDIR=/etc \ -DSYSTEMD_PID_DIR=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DWITH_BOOST=/usr/local/boost \ -DWITH_SYSTEMD=1
**存储引擎选项:**MYISAM,MERGE,MEMORY,和CSV引擎是默认编译到服务器中,并不需要明确地安装. 静态编译一个存储引擎到服务器,使用-DWITH_engine_STORAGE_ENGINE= 1 可用的存储引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)
1 注意:如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧
4.编译及安装
5.创建mysql用户 1 useradd -M -s /sbin/nologin mysql
6.修改mysql 配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 vim /etc/my.cnf [client] port = 3306 socket=/usr/local/mysql/mysql.sock [mysqld] user = mysql basedir=/usr/local/mysql datadir=/usr/local/mysql/data port = 3306 character-set-server=utf8 pid-file = /usr/local/mysql/mysqld.pid socket=/usr/local/mysql/mysql.sock bind-address = 0.0.0.0 skip-name-resolve max_connections=2048 default-storage-engine=INNODB max_allowed_packet=16M server-id = 1 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
sql_mode常用值如下:
设置项
描述
NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,那么抛出错误.不设置此值时,用默认的存储引擎替代,并抛出一个异常
STRICT_TRANS_TABLES
在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
NO_AUTO_CREATE_USER
禁止GRANT语句创建密码为空的用户
NO_AUTO_VALUE_ON_ZERO
如果插入值为0的数据,自增长列将不会产生新的序列值,而是接受0这个值.默认情况下,自增长列是从1开始的,插入值为0的数据通常会报错
NO_ZERO_IN_DATE
不允许在日期值中使用月或日部分的零值
NO_ZERO_DATE
不允许向表中插入零日期(‘0000-00-00’),如果尝试这样做,将会抛出错误而不是警告
ERROR_FOR_DIVISION_BY_ZERO
在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告.默认情况下,当数据被零除时,MySQL返回NULL
PIPES_AS_CONCAT
将"||"视为字符串的连接操作符而非逻辑或运算符,这与Oracle数据库的行为一致,并且类似于字符串的拼接函数CONCAT
ANSI_QUOTES
当启用ANSI_QUOTES时,不能使用双引号来引用字符串,因为它会被解释为标识符(如表名或列名)
7.更改mysql安装目录和配置文件的属主属组 1 2 chown -R mysql:mysql /usr/local/mysqlchown mysql:mysql /etc/my.cnf
8.设置路径环境变量 1 2 echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile source /etc/profile
9.初始化数据库 1 2 3 4 5 6 cd /usr/local/mysql/bin/./mysqld \ --initialize-insecure \ --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data
1 2 3 4 5 6 cd /usr/local/mysql/bin/./mysqld \ --initialize-insecure \ --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data
10.添加mysqld系统服务 1 2 3 4 5 cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ systemctl daemon-reload systemctl start mysqld.service systemctl enable mysqld netstat -anpt | grep 3306
11.修改mysql 的登录密码 1 mysqladmin -u root -p password "123456"
12.授权远程登录 1 2 3 4 5 mysql - u root - p grant all privileges on * .* to 'root' @'%' identified by '123456' ;show databases;
四、编译安装PHP 解析环境 1.下载相关文件
2.安装GD库和GD库关联程序,用来处理和生成图片 1 yum -y install gd libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel
3.配置软件模块 1 2 3 cd /opt/lamp/phptar -zxvf php-7.1.24.tar.gz cd php-7.1.24/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ./configure \ --prefix=/usr/local/php7 \ --with-apxs2=/usr/local/httpd/bin/apxs \ --with-mysql-sock=/usr/local/mysql/mysql.sock \ --with-config-file-path=/usr/local/php7 --with-mysqli \ --with-zlib \ --with-curl \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-openssl \ --enable-mbstring \ --enable-xml \ --enable-session \ --enable-ftp \ --enable-pdo \ --enable-tokenizer \ --enable-zip --enable-fpm
1 ./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql-sock=/usr/local/mysql/mysql.sock --with-config-file-path=/usr/local/php7 --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo --enable-tokenizer --enable-zip --enable-fpm
4.编译及安装
5.复制模版文件作为PHP 的主配置文件,并进行修改 1 2 3 4 5 6 7 8 9 10 cp /opt/lamp/php/php-7.1.24/php.ini-development /usr/local/php7/php.ini cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.confcp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.confvim /usr/local/php7/php.ini --939行--取消注释,修改 date.timezone = Asia/Shanghai --1170行--修改 mysqli.default_socket = /usr/local/mysql/mysql.sock
6.优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别 1 2 3 ln -s /usr/local/php7/bin/* /usr/local/bin/ln -s /usr/local/php7/sbin/php-fpm /usr/sbin/php7-fpmphp -m
7.修改httpd服务的配置文件,让apache支持PHP 1 2 3 4 5 6 7 8 9 10 vim /etc/httpd.conf ---160行检查支持php7的模块是否存在------ LoadModule php7_module modules/libphp7.so --256行--修改首页文件名设置 DirectoryIndex index.html index.php --397行--插入以下内容 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
8.验证PHP测试页 1 2 3 4 5 6 7 8 9 10 11 rm -rf /usr/local/httpd/htdocs/index.htmlvim /usr/local/httpd/htdocs/index.php <?php phpinfo(); ?> systemctl restart httpd.service php7-fpm 浏览器访问 http://192.168.64.170/
五、安装论坛 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 mysql -u root -p mysql> CREATE DATABASE dz; mysql>flush privileges; cd /opt/lampunzip Discuz-X3.4-SC-GBK-v20230315.zip -d /opt/dz cd /opt/dzcp -r upload/* /usr/local/httpd/htdocs/cd /usr/local/httpd/htdocs/chown -R daemon ./configchown -R daemon ./datachown -R daemon ./uc_clientchown -R daemon ./uc_server/data数据库服务器:localhost 数据库名字:bbs 数据库用户名:bbuser 数据库密码:自行输入 管理员账号:admin 管理员密码:自行输入
1.创建一个数据库
2.解压论坛压缩包
3.上传站点更新包
4.更改论坛目录属主
5.验证是否能登陆并注册用户
六、编译安装Nginx-Openresty服务(扩展与Apache二选一) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 yum install -y deltarpm gcc gcc-c++ unixODBC-devel httpd mysql-devel libcurl libcurl-devel libevent libevent-devel curl-devel libxml2 libxml2-devel net-snmp-devel pcre-devel java-devel openssl-devel perl-ExtUtils-Embed at python subversion gperf make rpm-build git bzip2-devel gd gd-devel t1lib t1lib-devel GeoIP-devel libatomic_ops-devel zlib-devel unzip libstdc++* net-snmp net-snmp* gmp gmp-devel openldap openldap-devel libpcap-devel glib2-devel GeoIP-devel vim wget git libtool make automake mlocate pam-devel unzip screen openssl iptables-services bash-completion* libxslt* curl net-tools libssh2-devel cd /optwget https://openresty.org/download/openresty-1.21.4.1.tar.gz tar -zxvf openresty-1.21.4.1.tar.gz cd openresty-1.21.4.1/./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --lock-path=/var/lock/nginx.lock --with-luajit --with-http_gunzip_module --with-pcre --with-pcre-jit --with-http_perl_module --with-ld-opt="-Wl,-rpath,/usr/local/nginx/luajit/lib -Wl,-E" --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-select_module --with-poll_module --with-file-aio --with-http_degradation_module --with-libatomic --http-client-body-temp-path=/var/tmp/nginx/client_body --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi make&&make install nginx -t mkdir -p /var/tmp/nginx/client_bodymkdir -p /usr/local/nginx/nginx/logs/nginx nginx -s stop
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 cp -r /usr/lcoal/httpd/htdocs/* /usr/local/nginx/nginx/htmlvim /usr/local/nginx/nginx.conf location / { root html; 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 $document_root /$fastcgi_script_name ; include fastcgi_params; } nginx -t nginx chown -R nobody ./configchown -R nobody ./datachown -R nobody ./uc_clientchown -R nobody ./uc_server/data
上面图片里倒数第三行多了个;记得删掉
七、总结 1.Apache编译安装方法
2.httpd服务支持的虚拟主机类型
3.MySQL数据库编译安装方法
4.构建PHP运行环境的方法
5.部署及使用phpMyAdmin系统的方法
6.Nginx编译安装方法