一、LAMP架构介绍
LAMP网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。
本文介绍的LAMP环境是在(Centos7 + Apache-2.4.33 + Mysql-5.7.17 + PHP-7.2.5)上搭建的。本文是在假设Centos7已经安装完成的前提下进行介绍的,若尚未安装,可以前往Centos官网下载对应的ios文件安装,下载地址:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso。
LAMP架构图如下:
二、系统环境
系统平台: CentOS 7.3 Server: 192.168.8.55
# 写hosts记录
[root@LAMP ~]# echo "192.168.8.55 LAMP" >> /etc/hosts
# 关闭firewalld和selinux
[root@LAMP ~]# systemctl stop firewalld && systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
# 关闭selinux
[root@LAMP ~]# setenforce 0
[root@LAMP ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
三、使用yum源安装(忽略)
本文不使用yum安装,如需要使用yum安装LNMP环境,则需搭建epel第三方yum仓库。本文主要使用源码包安装,如下标题第四、五、六。
1、安装依赖包
[root@LAMP ~]# yum –y install gcc gcc-c++ ncurses-devel perl
2、修改yum源
安装epel扩展yum的软件包,用于在本机生成epel扩展yum配置文件。
[root@LAMP ~]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@LAMP ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@LAMP ~]# rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
3、安装Apache、MySQL、PHP
配置好epel的yum源安装相应的基础模块,可以使用yum直接安装。
# 安装Apache
[root@LAMP ~]# yum -y install httpd
# 安装数据库
[root@LAMP ~]# yum -y install mariadb
# 安装php7.0
[root@LAMP ~]# yum -y install php70w php70w-devel
# 安装php扩展
[root@LAMP ~]# yum install -y php70w-mysql.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64
# 安装PHP-FPM
[root@LAMP ~]# yum install -y php70w-fpm
四、安装MySQL
1、卸载已有MySQL
[root@LAMP ~]# yum -y remove mariadb
[root@LAMP ~]# yum -y remove mysql
[root@LAMP ~]# rm -rf /usr/local/mysql57
[root@LAMP ~]# rm -rf /usr/src/mysql-5.7.18/
[root@LAMP ~]# rm -rf /var/lib/mysql57/
[root@LAMP ~]# rm /etc/my.cnf
2、安装MySQL依赖包
[root@LAMP ~]# yum –y install libevent* libtool* autoconf* libstd* ncurse* bison* openssl*
# MySQL 5.5之后的版本需要cmake(c语言编译器)来进行编译安装
[root@LAMP ~]# yum -y install cmake
3、安装boost包
# MySQL 5.7 之后的版本,cmake编译需要boost类库
# 下载
[root@LAMP ~]# wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
# 解压
[root@LAMP ~]# tar zxvf boost_1_59_0.tar.gz -C /usr/local/
# 重命名
[root@LAMP ~]# mv /usr/local/boost_1_59_0/ /usr/local/boost/
4、下载解压MySQL包
[root@LAMP ~]# wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17.tar.gz
# 解压到/usr/src/目录
[root@LAMP ~]# tar zxvf mysql-5.7.17.tar.gz -C /usr/src/
5、编译安装
# 进入解压之后的/usr/src/mysql-5.7.17/目录
[root@LAMP ~]# cd /usr/src/mysql-5.7.17/
[root@LAMP mysql-5.7.17]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 -DMYSQL_DATADIR=/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql57/mysql57.socket -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/usr/local/boost
[root@LAMP mysql-5.7.17]# make
[root@LAMP mysql-5.7.17]# make install
**cmake编译配置参数说明:**
-DCMAKE_INSTALL_PREFIX=dir_name # 安装的主目录
-DMYSQL_DATADIR=dir_name MySQL # 文件目录的路径,这个参数也可以在启动MySQL的时候带上--datadir参数进行设置
-DSYSCONFDIR=dir_name my.cnf # 参数文件的路径
-DWITH_INNOBASE_STORAGE_ENGINE=1 # 将INNODB存储引擎编译进去
-DWITH_MYISAM_STORAGE_ENGINE=1 # 将INNODB存储引擎编译进去
-DWITH_MEMORY_STORAGE_ENGINE=1 # 安装memory存储引擎
-DWITH_READLINE=bool # 是否使用readline库
-DMYSQL_UNIX_ADDR=file_name Unix socket # 文件的路径,socket文件用于服务器监听连接,这个参数必须是绝对路径
-DMYSQL_TCP_PORT=port_num # 服务器监听TCP/IP连接的端口,默认是3306
-DENABLED_LOCAL_INFILE=1 # 是否打开LOAD DATA INFILE的LOCAL参数
-DWITH_PARTITION_STORAGE_ENGINE=1 # 将分区存储引擎编译进去
-DEXTRA_CHARSETS=all # 安装所有扩展字符集
-DDEFAULT_CHARSET # 字符集,默认字符集是latin1
-DDEFAULT_COLLATION=collation_name # 服务校对,默认的是latin1_swedish_ci,可以通过SHOW COLLATION语句查看哪个校对匹配的字符集
-DWITH_BOOST # boost类库所在目录
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 # 将FEDERATED存储引擎编译进去
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 # 将BLACKHOLE存储引擎编译进去
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 # 不编译EXAMPLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 # 将Performance Schema(性能视图)存储引擎编译进去
-DCOMPILATION_COMMENT=string # 编译环境描述
-DENABLED_PROFILING=bool # 是否开启profiling代码的查询(用于SHOW PROFILE and SHOW PROFILES语句)
-DWITH_EXTRA_CHARSETS=name # 指定额外的字符集,默认是all,包含所有的字符集。
-DINSTALL_BINDIR=dir_name # 安装用户程序的路径,默认路径是DCMAKE_INSTALL_PREFIX/bin
-DINSTALL_DOCDIR=dir_name #安装文档的路径,默认路径是DCMAKE_INSTALL_PREFIX/doc
-DINSTALL_INCLUDEDIR=dir_name #安装头文件的路径,默认路径是DCMAKE_INSTALL_PREFIX/include
-DINSTALL_LIBDIR=dir_name # 安装库文件的路径,默认路径是DCMAKE_INSTALL_PREFIX/lib
-DINSTALL_MANDIR=dir_name #安装帮助手册的路径,默认路径是DCMAKE_INSTALL_PREFIX/man
-DINSTALL_PLUGINDIR=dir_name # 安装插件的路径,默认路径是DCMAKE_INSTALL_PREFIX/lib/plugin
-DINSTALL_SBINDIR=dir_name # 安装mysqld服务端启动脚本的路径,默认路径是DCMAKE_INSTALL_PREFIX/bin
-DINSTALL_SCRIPTDIR=dir_name # 初始化MySQL数据库的数据文件路径的mysql_install_db脚本路径,默认路径是DCMAKE_INSTALL_PREFIX/scripts
-DINSTALL_SQLBENCHDIR=dir_name # 安装sql-bench的路径,默认路径是DCMAKE_INSTALL_PREFIX
-DINSTALL_SUPPORTFILESDIR=dir_name # 安装支持文件的路径,默认路径是DCMAKE_INSTALL_PREFIX/support-files
# 如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:
-DWITH_READLINE=1
-DWITH_SSL=system
-DWITH_ZLIB=system
-DWITH_LIBWRAP=0
6、配置MySQL
(1)创建id为27的mysql用户
[root@LAMP ~]# groupadd mysql
[root@LAMP ~]# useradd -M -g mysql -s /sbin/nologin mysql
(2)配置文件my.cnf
[root@LAMP ~]# vim /etc/my.cnf
# 修改为以下内容,其它全部删掉
[mysqld]
port=3306
datadir=/data
pid-file=/var/run/mysql57/mysql57.pid
socket=/var/lib/mysql57/mysql57.socket
log-error=/var/log/mysql57/mysql57.log
user=mysql
[client]
socket=/var/lib/mysql57/mysql57.socket
(3)创建相关目录,并修改权限
# 创建cmake命令中的-DMYSQL_DATADIR设置的路径)
[root@LAMP ~]# mkdir /data/
# 创建cmake命令中的-DMYSQL_UNIX_ADDR设置的路径)
[root@LAMP ~]# mkdir /var/lib/mysql57/
[root@LAMP ~]# mkdir /var/run/mysql57
[root@LAMP ~]# mkdir /var/log/mysql57/
# 修改权限
[root@LAMP ~]# chown -R mysql:mysql /usr/local/mysql57/ /data/ /var/lib/mysql57/ /var/log/mysql57/ /var/run/mysql57
7、初始化配置
# 初始化MySQL
[root@LAMP ~]# cd /usr/local/mysql57/
[root@LAMP mysql57]# ./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57/ --datadir=/data/
# 启动MySQL
[root@LAMP ~]# /usr/local/mysql57/support-files/mysql.server start
初始化之后,启动mysql57数据库,但是路径太长,操作起来很麻烦,我们可以把MySQL设置为系统服务,如下步骤。
8、设置MySQL为系统服务
[root@LAMP mysql57]# vim /lib/systemd/system/mysql57.service
# 添加文件内容如下:
[Unit]
Description=mysql
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/mysql57/support-files/mysql.server start
ExecStop=/usr/local/mysql57/support-files/mysql.server stop
ExecRestart=/usr/local/mysql57/support-files/mysql.server restart
ExecReload=/usr/local/mysql57/support-files/mysql.server reload
PrivateTmp=true
[Install]
WantedBy=multi-user.target
9、设置MySQL服务开机自启动
[root@LAMP ~]# systemctl enable mysql57.service
10、启动MySQL
[root@LAMP ~]# systemctl restart mysql57.service
[root@LAMP ~]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 24965 mysql 16u IPv6 44563 0t0 TCP *:mysql (LISTEN)
11、修改MySQL密码
# 登陆MySQL数据库
[root@LAMP ~]# /usr/local/mysql57/bin/mysql
mysql> update mysql.user set authentication_string=password('123') where user='root' and host = 'localhost';
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
五、安装Apache
1、安装Apache依赖包
Apache的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法
[root@LAMP ~]# yum -y install pcre pcre-devel
[root@LAMP ~]# yum -y install expat-devel
Apache的各种模块中需要使用gzip压缩
[root@LNMP ~]# yum -y install zlib zlib-devel
Apache需要开启OpenSSL
[root@LNMP ~]# yum -y install openssl
2、下载解压Apache包
# 下载Apache包
[root@LAMP ~]# wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.33.tar.gz
# 解压Apache包到/usr/src/目录
[root@LAMP ~]# tar zxvf httpd-2.4.33.tar.gz -C /usr/src/
# 下载APR和APR-util包
[root@LAMP ~]# wget http://archive.apache.org/dist/apr/apr-1.6.3.tar.gz
[root@LAMP ~]# wget http://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz
# 解压APR和APR-util包到/usr/src/httpd-2.4.33/srclib/目录
[root@LAMP ~]# tar zxvf apr-1.6.3.tar.gz -C /usr/src/httpd-2.4.33/srclib/
[root@LAMP ~]# tar zxvf apr-util-1.6.1.tar.gz -C /usr/src/httpd-2.4.33/srclib/
# 重命名
[root@LAMP ~]# cd /usr/src/httpd-2.4.33/
[root@LAMP httpd-2.4.33]# mv ./srclib/apr-1.6.3 ./srclib/apr
[root@LAMP httpd-2.4.33]# mv ./srclib/apr-util-1.6.1 ./srclib/apr-util
3、编译安装
# 进入解压之后的/usr/src/httpd-2.4.33/目录
[root@LAMP ~]# cd /usr/src/httpd-2.4.33/
[root@LAMP httpd-2.4.33]# ./configure --enable-modules=all --enable-mods-shared=all --with-mpm=prefork --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --enable-rewrite --enable-ssl --with-ssl=/usr/bin/openssl --enable-so --with-included-apr
[root@LAMP httpd-2.4.33]# make
[root@LAMP httpd-2.4.33]# make install
**configure编译配置参数说明:**
--enable-modules=all # 静态加载所有模块
--enable-mods-shared=all # 动态加载所有模块
--enable-so # 让apache核心装载DSO
--with-mpm=prefork # 指定运行prefork多路处理模块(MPM)
--prefix=/usr/local/apache2 # 指定缺省安装目录
--enable-module=so # 打开so模块
--enable-deflate=shared # 支持网页压缩
--enable-expires=shared # 支持HTTP控制
--enable-rewrite=shared # 支持URL重写
--enable-cache # 支持缓存
--enable-file-cache # 支持文件缓存
--enable-mem-cache # 支持记忆缓存
--enable-disk-cache # 支持磁盘缓存
--enable-ssl # 支持open-ssl库
--with-ssl # 指定open-ssl库
--with-apr=PATH # 指定APR的安装目录
--with-apr-util= PATH # 指定APR-util的安装目录
Apache服务启动和停止路径太长,不方便操作,我们可以把Apache设置为系统服务,使用系统命令进行启动,操作步骤如下。
4、设置Apache为系统服务
[root@LAMP ~]# vim /lib/systemd/system/apache.service
# 添加文件内容如下:
[Unit]
Description=apache
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/apache2/bin/apachectl start
ExecStop=/usr/local/apache2/bin/apachectl stop
ExecRestart=/usr/local/apache2/bin/apachectl restart
ExecReload=/usr/local/apache2/bin/apachectl reload
PrivateTmp=true
[Install]
WantedBy=multi-user.target
5、设置Apache开机自启动
[root@LAMP ~]# systemctl enable apache.service
Created symlink from /etc/systemd/system/multi-user.target.wants/apache.service to /usr/lib/systemd/system/apache.service.
6、开启Apache服务
[root@LAMP ~]# systemctl start apache.service
查看Apache服务是否启动成功:
[root@LAMP ~]# lsof -i:80
在浏览器中访问测试:
http://192.168.8.55
出现以下界面则表示可以成功访问:
六、安装PHP
1、安装PHP依赖包
[root@LAMP ~]# yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel
若提示yum中没有可用的软件包libmcrypt和libmcrypt-devel,则需要手动编译安装。
[root@LAMP ~]# wget https://sourceforge.mirrorservice.org/m/mc/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
[root@LAMP ~]# tar zxvf libmcrypt-2.5.8.tar.gz -C /usr/src/
[root@LAMP ~]# cd /usr/src/libmcrypt-2.5.8/
[root@LAMP libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt
[root@LAMP libmcrypt-2.5.8]# make
[root@LAMP libmcrypt-2.5.8]# make install
[root@LAMP libmcrypt-2.5.8]# /sbin/ldconfig --重新加载系统库包
2、下载解压PHP包
[root@LAMP ~]# wget http://cn2.php.net/distributions/php-7.2.5.tar.gz
[root@LAMP ~]# tar zxvf php-7.2.5.tar.gz -C /usr/src/
3、编译安装
# 进入解压之后的/usr/src/php-7.2.5/目录
[root@LAMP ~]# cd /usr/src/php-7.2.5/
[root@LAMP php-7.2.5]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/php.d --with-mysqli=/usr/local/mysql57/bin/mysql_config --with-iconv-dir=/usr/local --with-apxs2=/usr/local/apache2/bin/apxs --enable-mysqlnd --with-pdo-mysql=/usr/local/mysql57 --with-pcre-dir=/usr/local/ --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --with-gd --with-iconv --with-zlib --with-libxml-dir=/usr --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-bcmath
[root@LAMP php-7.2.5]# make
[root@LAMP php-7.2.5]# make install
**configure编译配置参数说明:**
--prefix # 用于指定PHP安装目录
--with-config-file-path # 指定php.ini位置
--with-config-file-scan-dir # 指定php.d位置
--with-mysqli # mysqli文件目录,优化支持
--with-iconv-dir # 用于 PHP 编译时指定 iconv 在系统里的路径,否则会扫描默认路径
--with-iconv # 使编译iconv时不被禁用
--with-apxs2 # 指定Apache的的apxs位置
--enable-mysqlnd # 启用mysqlnd的库来支持mysql的连接s
--with-pdo-mysql # MySQ安装目录,对MySQL的支持
--with-pcre-dir # perl的正则库案安装位置
--enable-fpm # 打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序
--with-fpm-user # 设置 FPM 运行的用户身份(默认 - nobody)
--with-fpm-group # 设置 FPM 运行时的用户组(默认 - nobody)
--with-fpm-systemd # 启用 systemd 集成 (默认 - no)
--with-fpm-acl # 使用POSIX 访问控制列表 (默认 - no) 5.6.5版本起有效
--with-gd # 启用gd库的支持
--with-zlib # 启用zlib库的支持
--with-libxml-dir # 启用libxml2库的支持
--enable-xml # 启用xml库支持
--enable-shmop # 启用shmop函数支持
--enable-inline-optimization # 优化线程
--enable-mbstring # 多字节,字符串的支持
--enable-ftp # 启用ftp的支持
--with-openssl # openssl的支持,加密传输时用到的
--enable-pcntl # freeTDS需要用到的,可能是链接mssql 才用到
--enable-sockets # 启用 sockets 支持
--with-xmlrpc # 启用xml-rpc的c语言
--enable-zip # 启用对zip的支持
--enable-soap # 启用soap模块的支持
--without-pear # 不安装PEAR
--with-gettext # 启用gnu 的gettext 支持,编码库用到
--enable-session # 启用session模块的支持
--with-curl # 启用curl浏览工具的支持
--with-jpeg-dir # 启用对jpeg图片的支持
--with-freetype-dir # 启用对freetype字体库的支持
--enable-opcache # 启用opcache共享扩展的支持
--with-mcrypt # 指定的是libmcrypt的安装目录
--enable-safe-mode # 启用安全模式
--with-bz2 # 启用对bz2文件的支持
--with-png-dir # 启用对png图片的支持
--without-iconv # 关闭iconv函数,一种字符集间的转换
--enable-gd-native-ttf # 支持TrueType字符串函数库
--with-curlwrappers # 运用curl工具启用url流
--with-ttf # 启用freetype1.*的支持,可以不加了
--with-xsl # 启用XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件
--with-pear # 启用pear命令的支持,PHP扩展用的
--enable-calendar # 启用日历扩展功能
--enable-bcmath # 启用图片大小调整,用到zabbix监控的时候用到了这个模块
--enable-exif # 图片的元数据支持
--enable-magic-quotes # 魔术引用的支持
--disable-rpath # 关闭额外的运行库文件
--disable-debug # 关闭调试模式
--with-mime-magic=/usr/share/file/magic.mime # 魔术头文件位置
--enable-fastCGI # 支持fastcgi方式启动PHP
--with-ncurses # 支持ncurses 屏幕绘制以及基于文本终端的图形互动功能的动态库
--enable-pcntl # freeTDS需要用到的,可能是链接mssql 才用到
--with-mcrypt # 启用mcryp算法
--with-mhash # 企业mhas算法
--with-gdbm # dba的gdbm支持
--enable-zend-multibyte # 支持zend的多字节
七、修改Apache和PHP的配置
1、修改Apache配置文件
- 修改主配置文件/usr/local/apache2/conf/httpd.conf
- 修改网站家目录(可改可不改,建议修改,因为默认的目录很长)
- 修改添加PHP模块,支持PHP
- 修改添加index.php主页面
- 修改支持中文字符集
(1)配置Apache网站家目录
[root@LAMP ~]# vim /usr/local/apache2/conf/httpd.conf
DocumentRoot "/web" # 修改网站家目录
235 <Directory "/web"> # 相应的目录容器也要修改
(2)配置Apache对PHP支持 也就是配置Apache和PHP的联系
[root@LAMP ~]# vim /usr/local/apache2/conf/httpd.conf
168 LoadModule php7_module modules/libphp7.so
# 找到这一句,在这句下面加上两句
169 AddHandler php7-script .php
170 AddType text/html .php
# 这两句的意思是以.php结尾的文件都认为是php程序文件,注意两句话的.php前面都是有一个空格的
(3)默认主页加上index.php,并放在index.html前
[root@LAMP ~]# vim /usr/local/apache2/conf/httpd.conf
270 DirectoryIndex index.php index.html
(4)配置中文优先支持
[root@LAMP ~]# vim /usr/local/apache2/conf/httpd.conf
# 打开此选项注释,扩展配置文件就生效了
486 Include conf/extra/httpd-languages.conf
[root@LAMP ~]# vim /usr/local/apache2/conf/extra/httpd-languages.conf
# 打开此选项注释
19 DefaultLanguage nl
# 语言集优先级,把zh-CN、zh-TW写到前面
78 LanguagePriority zh-CN zh-TW en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv tr
# 在文件的最后新增以下参数
142 AddDefaultCharset UTF-8 # 默认以utf-8编码显示中文
2、创建Apache家目录
[root@LAMP ~]# mkdir /web
3、启动Apache服务
[root@LAMP ~]# /usr/local/apache2/bin/apachectl restart
# 或者(前提是Apache设置为系统服务)
[root@LAMP ~]# systemctl restart apache.service
[root@LAMP ~]# lsof -i:80 --启动成功后,可以看到下面的进程
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 61897 root 4u IPv6 473981 0t0 TCP *:http (LISTEN)
错误一:
[root@LAMP ~]# systemctl restart apache.service
Job for apache.service failed because the control process exited with error code. See "systemctl status apache.service" and "journalctl -xe" for details.
# 解决方法:
[root@LAMP ~]# vim /usr/local/apache2/conf/httpd.conf
# 把这一句注释打开
161 LoadModule negotiation_module modules/mod_negotiation.so
错误二:
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
# 解决方法:
上面的报错表示80被占用,可以去先停掉Nginx服务(或者改端口),再启动Apache服务
错误三:
httpd: apr_sockaddr_info_get() failed for qianyun.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
# 解决方法:
把本机的IP地址和主机名写进/etc/hosts文件
错误四:
httpd: Could not reliably determine the server's fully qualified domain name, using 10.1.1.20 for ServerName
# 解决方法:
[root@LAMP ~]# vim /usr/local/apache2/conf/httpd.conf
212 ServerName *:80
4、编写PHP测试页
建立一个主页,在家目录下建立一个PHP测试页来测试
[root@LAMP ~]# vim /web/index.php
<?php
phpinfo();
?>
在浏览器中访问测试:
http://192.168.8.55
5、拷贝PHP模版配置文件
将PHP包解压目录中的配置文件放置到/usr/local/php/etc/目录下(也就是configure命令中的--with-config-file-path设置的路径)
# sysconfigdir参数决定的(因为,指定安装路径为/usr/local/php,所以就要拷到/usr/local/php/etc/目录下)
[root@LAMP ~]# cp /usr/src/php-7.2.5/php.ini-development /usr/local/php/etc/php.ini
[root@LAMP ~]# vim /usr/local/php/etc/php.ini
# 修改以下内容
1154 mysqli.default_port = 3306 # 改成对应的MySQL的端口
1159 mysqli.default_socket = /var/lib/mysql57/mysql57.socket # 对应的socket文件地址
# 在最后加上下面一段,支持opcache(php新一代的缓存加速器)
zend_extension=opcache.so # 开关打开
[opcache]
opcache.enable=1 # 开启
opcache.enable_cli=1 # 开启缓存
opcache.memory_consumption=128 # 可用内存, 酌情而定, 单位为:Mb
opcache.interned_strings_buffer=8 # Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB)
opcache.max_accelerated_files=4000 # 对多缓存文件限制, 命中率不到 100% 的话, 可以试着提高这个值
opcache.revalidate_freq=60 # Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 定位为秒
opcache.fast_shutdown=1 # 打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高
# 重启Apache服务,再访问index.php页面,找到opcache的配置选项,则表示成功
[root@LAMP ~]# systemctl restart apache.service
至此,LAMP环境搭建完成!
七、安装Discuz论坛
安装一个开源论坛,验证LNMP环境配置是否正常。
[root@LAMP ~]# wget http://zj.mycodes.net/201712/Discuz_X3.4_GIT_SC_GBK.zip
[root@LAMP ~]# unzip Discuz_X3.4_GIT_SC_GBK.zip -d /web/
[root@LAMP ~]# cd /web/
[root@LAMP web]# mv /web/dir_SC_GBK/ /web/discuz
[root@LAMP discuz]# cd /web/discuz/
[root@LAMP discuz]# ls
readme upload utility
[root@LAMP discuz]# mv upload/* ./
[root@LAMP discuz]# mv readme/* ./
[root@LAMP discuz]# mv utility/* ./
在浏览器中访问测试
http://192.168.8.55/discuz/install
进入安装向导
点击“我同意”。
目录、文件权限检查状态为不可写,需要修改权限,用户改成daemon。
[root@LAMP ~]# chmod -R a+w /web/
[root@LAMP ~]# chown -R daemon.daemon /web/
修改完成之后,刷新浏览器,点击“下一步”。
选择“全新安装Discuz!X(含Ucenter Server)”,点击“下一步”。
安装数据库,需要MySQL数据库授权:
# 登陆MySQL数据库
[root@LAMP ~]# /usr/local/mysql57/bin/mysql -p123
# 创建一个库,用于存放将要安装的discuz论坛的表
mysql> create database discuz;
Query OK, 1 row affected (0.00 sec)
# 授权一个用户,用于discuz论坛程序连接mysql
mysql> grant all on discuz.* to 'discuz'@'localhost' identified by '123';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
数据库安装如下图所示:
填写完成之后,点击“下一步”,开始安装数据库。可以看到刚才创建的discuz库里面有297张表(show tables discuz;)。
安装完成之后可以看到discuz论坛的首页。