L: Linux系统
A: apache服务器(也可使用nginx代替)
M:多指mysql或mariadb数据库
P: 指PHP、python、perl等编程语言。
广义的lamp架构可以指:Linux/unix/windows +apache/nginx…+mysql/pgsql+php/python/perl/golang
1.下载相关资源包
[root@server1 ~]# ls nginx-1.20.1.tar.gz [root@server1 ~]# tar zxf nginx-1.18.0.tar.gz %解压 [root@server1 ~]# ls nginx-1.20.1 nginx-1.20.1.tar.gz [root@server1 ~]# cd nginx-1.20.1/ [root@server1 nginx-1.20.1]# ls %源码安装时解压目录中的初始文件 auto CHANGES.ru configure html man src CHANGES conf contrib LICENSE README 安装相关工具: [root@server1 nginx-1.20.1]# yum install gcc -y %编译需要的包 [root@server1 nginx-1.20.1]# yum install pcre-devel -y %http重写功能需要的包 [root@server1 nginx-1.20.1]# yum install -y openssl-devel %ssl功能需要的包
2.编译、安装
[root@server1 nginx-1.20.1]# vim auto/cc/gcc %注释掉debug选项,可以使安装最小化
[root@server1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module %编译,编译参数可自由选择
[root@server1 nginx-1.20.1]# make && make install %安装
3.添加环境变量并开启服务
[root@server1 sbin]# pwd /usr/local/nginx/sbin [root@server1 sbin]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@server1 ~]# vim .bash_profile %注意路径(/root/下) [root@server1 ~]# source .bash_profile %使上述更改生效 [root@server1 ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/usr/local/nginx/sbin [root@server1 ~]# which nginx /usr/local/nginx/sbin/nginx [root@server1 ~]# nginx %运行nginx服务,nginx stop为关闭nginx服务
4.测试
编写测试页面并访问进行测试 [root@server1 ~]# curl localhost %使用curl命令进行测试,观察是否能够访问通畅 [root@server1 ~]# cd /usr/local/nginx/ [root@server1 nginx]# ls client_body_temp fastcgi_temp logs sbin uwsgi_temp conf html proxy_temp scgi_temp [root@server1 nginx]# cd html/ [root@server1 html]# ls 50x.html index.html [root@server1 html]# vim test.html [root@server1 html]# curl localhost:/test.html %编辑测试页,进行访问,观察是否能够访问到 www.westos.org
1下载安装相关资源包
tar zxf mysql-boost-5.7.31.tar.gz %解压下载好的tar包 yum install -y cmake %编译器 yum install -y ncurses-devel yum install -y gcc-c++ yum install -y bison
2指定参数编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=/root/mysql-5.7.31/boost/boost_1_59_0/ %编译参数可选 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ %安装目录 -DMYSQL_DATADIR=/usr/local/mysql/data \ %数据库存放目录 -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \ %Unix socket 文件路径 -DWITH_MYISAM_STORAGE_ENGINE=1 \ %安装 myisam 存储引擎 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ %安装 innodb 存储引擎 -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ %安装 archive 存储引擎 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ %安装 blackhole 存储引擎 -DWITH_PARTITION_STORAGE_ENGINE=1 \ %安装数据库分区 -DENABLED_LOCAL_INFILE=1 \ %允许从本地导入数据 -DWITH_READLINE=1 \ %快捷键功能 -DWITH_SSL=yes \ %支持 SSL -DDEFAULT_CHARSET=utf8 \ %使用 utf8 字符 -DDEFAULT_COLLATION=utf8_general_ci \ %校验字符 -DEXTRA_CHARSETS=all \ %安装所有扩展字符集 -DMYSQL_TCP_PORT=3306 \ %MySQL 监听端口
3.安装
make make install [root@server1 mysql-5.7.31]# cd /usr/local/mysql/ [root@server1 mysql]# ls bin include LICENSE mysql-test README-test support-files docs lib man README share [root@server1 mysql]# du -sh 1.9G . %占用空间比较大
[root@server1 mysql]# cd support-files/ [root@server1 support-files]# ls magic mysqld_multi.server mysql-log-rotate mysql.server [root@server1 support-files]# cp mysql.server /etc/init.d/mysqld %根据你的主机内存复制 mysql 配置文件 [root@server1 support-files]# ll /etc/init.d/mysqld -rwxr-xr-x 1 root root 10576 Mar 28 15:50 /etc/init.d/mysqld
[root@server1 mysql-5.7.31]# cd mysql-test/ [root@server1 mysql-test]# cd include/ [root@server1 include]# vim /etc/my.cnf %编辑文件,设置基本配置 [root@server1 ~]# vim .bash_profile %添加环境变量(注意路径) [root@server1 ~]# source .bash_profile %使环境变量生效 [root@server1 ~]# cd /usr/local/mysql/ [root@server1 mysql]# useradd -u 1001 -M -d /usr/local/mysql/data -s /sbin/nologin mysql %添加数据库用户 [root@server1 mysql]# mysqld --initialize --user=mysql %初始化,产生初始登陆密码
[root@server1 mysql]# /etc/init.d/mysqld start %开启mysqld [root@server1 mysql]# mysql_secure_installation %按提示完成 mysql 安全设置 Enter password for user root: %输入上述步骤产生的初始登陆密码 New password: %创建新密码 Re-enter new password: Press y|Y for Yes, any other key for No: Change the password for root ? ((Press y|Y for Yes, any other key for No) : Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done!
5登录查看
[root@server1 mysql]# mysql -p Enter password: %用上面设置的新密码登陆 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.7.31 Source distribution Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec) mysql>
三 php编译 安装
1 资源准备
yum install bzip2 -y %安装解压工具 tar jxf php-7.4.12.tar.bz2 cd php-7.4.12/ yum search systemd yum install -y systemd-devel.x86_64 yum search libxml2 yum install -y libxml2-devel.x86_64 yum search sqlite yum install -y sqlite-devel.x86_64 yum install -y oniguruma-devel-6.8.2-1.el7.x86_64.rpm oniguruma-6.8.2-1.el7.x86_64.rpm yum install -y libevent-devel-1.4.13-4.el6.x86_64.rpm libevent-doc-1.4.13-4.el6.noarch.rpm libevent-headers-1.4.13-4.el6.noarch.rpm yum install -y libpng-devel.x86_64 上面这些rpm包都是在编译的时候根据报错提示安装的
2编译安装
为了能够保证nginx与php的正常通信,需要在编译php之前对nginx做相关配置
useradd -M -d /usr/local/nginx/ -s /sbin/nologin nginx cd /usr/local/nginx/ cd conf/ ls vim nginx.conf %编辑配置文件 文件开头加上 user nginx nginx nginx -s reload ps -aux %查看进程用户信息
3执行configure文件
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-mysqlnd --with-pdo-mysql --with-mysqli --with-openssl-dir --enable-gd --with-zlib-dir --with-curl --with-pear --enable-inline-optimization --enable-soap --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-fpm-systemd
4make && make install
执行configure文件后执行(这个过程需要一些时间): make make install
1 Linux系统中服务启动方式
以启动php-fpm
为例:一种常见的服务启动方式是: /etc/init.d/php-fpm start
Linux中的/etc/init.d
目录包含许多系统各种服务的启动和停止脚本,上述方式通过调用脚本的方式来启动服务,当然,事先要赋予该脚本可执行权限
第二种服务启动方式是利用systemd来启动:systemctl start php-fpm,相比于第一种传统的方式,这种启动服务的方式更加便捷、快速,且能够设置开机自启。使用了 systemd,就不需要再用init了。systemd 取代了initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。
2脚本启动
cd /root/php-7.4.12/sapi/fpm cp init.d.php-fpm /etc/init.d/php-fpm %复制服务脚本到/etc/init.d目录下 chmod +x /etc/init.d/php-fpm %为该脚本添加可执行权限 cd /usr/local/php/etc cp php-fpm.conf.default php-fpm.conf %复制php-fpm服务的配置文件模板,创建新的配置文件并根据需求做相应修改 vim php-fpm.conf 打开global中下面一行的注释: pid=run/php-fpm.pid %指定pid的存放目录 cd /usr/local/php/etc/php-fpm.d cp www.conf.default www.conf %复制另外一个相关配置文件模板并编辑 vim www.conf %可以不用改,可能需要改的地方是启动的进程数,具体多少要根据生产环境来确定 cd /root/php-7.4.12 cp php.ini-production /usr/local/php/etc/php.ini %复制php主配置文件到php的配置目录下,用于开发和生产,注意配置文件的命名方式必须要是php-ini
/etc/init.d/php-fpm start %启动 ps -aux %查看后台是否有相关进程 netstat -antulp %查看是否开启相关端口
3使用systemd启动
chkconfig --level 35 php-fpm on %设置开机自启的另外一种方式 chkconfig --list php-fpm %查看chkconfig的一些参数
cd /root/php-7.4.12/ /etc/init.d/php-fpm stop %使用脚本停止之前的php-fpm,后续测试使用systemctl方式启动 cd /root/php-7.4.12/sapi/fpm/ cp php-fpm.service /usr/lib/systemd/system cd /usr/lib/systemd/system vim php-fpm.service %编辑配置文件,注释掉保护机制 systemctl daemon-reload systemctl start php-fpm.service %启动服务
4Nginx启动方式设定
cd /usr/local/nginx/conf/ vim nginx.conf %编辑主配置文件 diff fastcgi.conf fastcgi_params %查看文件的不同 nginx %启动nginx cd /etc/systemd/system/ cd /usr/lib/systemd/system vim nginx.service %编辑配置文件 systemctl daemon-reload %重载daemon,让systemd后台能够识别到更改 nginx -s stop %停止nginx systemctl start nginx %systemctl方式启动nginx systemctl enable nginx %设置开机自启
systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在那个目录。 systemctl enable 命令用于在上面两个目录之间,建立符号链接关系。
5 nginx与php结合测试
cd /usr/local/nginx/html/ %进入到nginx的默认发布目录,编写php测试页面 vim index.php <?php phpinfo() ?> cd /usr/local/php/etc/ vim php.ini %编辑php的配置文件做访问测试 systemctl reload php-fpm.service %reload php-fpm服务