本文针对新手初次搭建LAMP/LNMP环境,lz也是历时2天才搭建完成,虽然有些内容仍是不太明白,可是暂且记录下来流程,之后慢慢消化。php
1、安装linuxhtml
先下载Virtual Box做为虚拟机,网站https://www.virtualbox.org/ ,以下图:mysql
而后下载centos7,网址https://www.centos.org/download/,以下图:linux
打开Virtual Box,新建-输入名称,以下图:nginx
而后一直下一步,文件位置自行选择,不建议放在C盘c++
建立完成以后点击启动,这时会提示选择启动盘,选择方才下载的镜像git
启动以后开始安装github
选择语言以后,点击安装位置,选择刚才划分的磁盘,点击完成sql
开始安装,会看到下面页面,设置ROOT密码,建立新帐户shell
安装完成后重启,登陆用户名、密码,注意linux输入密码时不会显示,不要觉得没输入进去exit
lz用的是root帐户登陆的,你也能够登陆刚才在安装时建立的用户,可是一些操做须要在命令以前加上 sudo。下面是一些命令和操做
sudo su #切换到root帐户 exit #退出 clear #清空界面
配置网络环境(lz登陆的是root帐户,有些命令提示没权限时可能须要在前面加上sudo)
1.在VirtualBox中找到设置,将网络改成“桥接网络”
而后输入命令查看网络是否通畅
ping www.baidu.com #查看网络状态,这里能够ping下百度 #网络不通会提示:Name or service not know等错误,这是须要修改一下网络配置,输入下面一行命令 vi /etc/sysconfig/network-scripts/ifcfg- #而后按tab键会出现你本机网卡名多是eth0或者enp0s3,而后在-后面加上这个名字便可 vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 #lz的是enp0s3
2.设置网卡配置文件
输入后会看到如下,信息内容可能不同,不过在最主要的仍是那几个。
按 “I” 键进行编辑(此时命令行底部变成INSERT),编辑完成之后按“ESC”键,完后输入 “:w”(保存) “:q”(退出),或者直接快捷键shift+zz(关闭caps Lock),或者 “:q!”不保存直接退出 。注意linux命令只支持小写!
ONBOOT=yes #修改为yes BOOTPROTO =static #采用静态IP IPADDR=192.168.1.11 #增长静态IP地址,注意前面三个数要和你本机电脑上ip一致,即你本机电脑上的ip是192.168.1.xx NETMASK=255.255.255.0 #增长子网掩码 NETWORK=192.168.1.1 #设置网关,一样前面三个数也是和你本机电脑上的ip一致 NM_CONTROLLED=no #设置网络服务将经过该配置文件进行设置
而后重启网络服务,查看是否修改为功
systemctl restart network.service #重启网络服务 ip add #查看ip
此时再ping一下,可能会提示两种错误:
①Name or service not known
ping: www.baidu.com: Name or service not known #出现这个错误
多是由于你设置的ip被其余人占用着,此时你能够先将刚才的配置文件改成动态获取ip,先获取一个没被占用的ip,而后再静态设置为此ip
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 #打开刚才的配置文件 BOOTPROTO=dhcp #先设置为动态获取
保存退出后输入命令,获取ip,重复 2.设置网卡配置文件
ip add
②connect :Network is unreachable
connect :Network is unreachable #未得到网络
此时你的ip在局域网已经能够用了,可是访问不了外网,须要调用dhclient命令来获取网络
dhclient #使用动态主机配置协议动态的配置网络接口
(此处好像每次开机都要调用此命令才能联网,缘由未知,在网上看到个帖子,可是没能成功解决问题http://blog.csdn.net/u012425536/article/details/78744430)
打通网络环境后,修改防火墙设置,开放22端口(后期要用到xshell来远程控制此虚拟机,监控的就是22端口),完成后重启虚拟机
firewall-cmd --zone=public --add-port=22/tcp --permanent #修改防火墙参数 systemctl restart firewalld.service #重启防火墙服务
2、安装Apache
在安装Apache以前,先下载Xshell来做为辅助工具,方便咱们输入、复制、粘贴命令
打开xshell,输入命令,在弹出的窗体输入用户名,密码
ssh root@192.168.1.11 #远程链接,root表明登陆用户,@后面表明远程控制的ip
链接成功以后会看到
安装基本依赖
yum install -y gcc gcc-c++ wget make vim
开始安装Apache 进入官网,右击tar.gz获取连接,下方的wget后面的url是粘贴这右键复制的连接
wget下载安装包,并解压
wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.29.tar.gz tar zxvf httpd-2.4.29.tar.gz #解压
apache安装须要apr和apr-util和pcre,因此下载apr和apr-util,若是你下载的是其余版本的话注意下路径和文件夹名
ll命令是ls -l就是列出文件
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz #下载apr wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz #下载apr-util
解压
tar zxvf apr-1.4.5.tar.gz
tar zxvf apr-util-1.3.12.tar.gz
重命名并移动到httpd-2.4.29中,下载pcre-8.39
mv apr-1.4.5 apr mv apr-util-1.3.12 apr-util mv apr apr-util httpd-2*/srclib/ #mv是移动,假若加了名字就是重命名 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz tar zxvf pcre-8.39.tar.gz cd pcre* #*是通配符
配置pcre
./configure --prefix=/usr/local/pcre #./configure就是配置,参数--prefix=/usr/local/pcre就是说把软件安装在/usr/local/pcre这个目录下
make #编译 make install #编译安装
成功以后以下
cd ../httpd* #../是linux里的相对路径,意思是返回上一级目录下,再打开httpd-2.4.29文件夹
配置安装apache,过程有点慢
#配置,编译,编译安装 ./configure --prefix=/usr/local/apache -with-pcre=/usr/local/pcre/bin/pcre-config -with-included-apr make make install
完成以下
备份默认配置文件并启动
cd /usr/local/apache/bin cp /usr/local/apache/conf/httpd.conf{,.bak} ./apachectl -k start #开启
回车后有段输出,那些不用管他
输入
curl 127.0.0.1
输出
<html><body><h1>It works!</h1></body></html>
开启防火墙80端口,这样在浏览器输入ip才能看到信息
firewall-cmd --zone=public --add-port=80/tcp --permanent #开启80端口 systemctl restart firewalld.service #重启防火墙服务
在浏览器输入192.168.1.11:80,回车会看到下图
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
通过上面这条命令操做后你之后开启apache或者关闭重启就能够直接输入
service httpd start
stop中止,restart是重启 把apache下的bin加入环境变量里
echo 'export PATH=/usr/local/apache/bin:$PATH'>>/etc/profile source /etc/profile
3、安装Nginx(LAMP不须要管这一节)
Nginx是一款轻量级的Web服务器,特色是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
Nginx安装须要两个依赖:pcre和zlib,pcre的安装见apache中安装配置,zlib直接用yum命令安装
yum install -y zlib-devel
而后下载nginx安装包,下图中拷贝连接
一样用wget命令下载,而后安装
cd #返回主目录 wget http://nginx.org/download/nginx-1.12.2.tar.gz #下载 tar zxvf nginx* #解压 cd nginx* ./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.39/#配置,根据以前安装的pcre-8.39
配置完成见下图
编译安装
make && make install #编译并安装
安装完成图
下面启动nginx,启动以前先关闭apache,可用刚才的快捷方式关闭或者经过直接关闭进程的方式进行关闭
service httpd stop #根据以前设置的快捷方式 #或者 ps aux | grep httpd #查看apache运行进程,而后用 kill -9 (全部进程号) cd /usr/local/nginx/sbin ./nginx #启动nginx
再次在浏览器中输入以前的网址:192.168.1.11:80 ,会看到如下页面,若是没有,仍然参考apache里面防火墙设置
关闭nginx 能够按照刚才关闭apache的方法,也能够强制中止
pkill -9 nginx
PHP访问nginx服务器须要php-fpm,在后面安装php的时候须要注意
4、安装mysql
安装依赖
cd #返回主目录
yum -y install autoconf yum install cmake ncurses-devel bison -y
下载mysql安装包,这里用mysql-5.6.38,一样,去官网复制下载连接
下载解压
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.38.tar.gz #下载 tar zxvf mysql* #解压 groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql #建立一个名为mysql且没有登陆权限的用户和一个名为mysql的用户组并把mysql用户加进mysql用户组里
进入mysql的解压目录并配置
cd mysql* cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/etc \ -DMYSQL_USER=mysql \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLE_DOWNLOADS=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_DEBUG=0 \ -DMYSQL_MAINTAINER_MODE=0 \ -DWITH_SSL:STRING=bundled \ -DWITH_ZLIB:STRING=bundled
编译安装
make && make install
cd /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
chown是改变文件全部者,change owner,R参数是递归,遍历目录下全部目录和文件
上面整个命令是改变/usr/local/mysql下全部的文件拥有者为mysql用户,用户组为mysql
初始化mysql
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
完成后如图上面有些信息来叫你如何完善mysql以及安全
mysql默认的配置文件路径是/etc/my.cnf,咱们复制安装自带的默认配置文件过去
cp support-files/my-default.cnf /etc/my.cnf
询问覆盖的时候输入y
配置/etc/my.cnf
sed -i 's/# basedir = \.\.\.\.\./ basedir = \/usr\/local\/mysql/' /etc/my.cnf sed -i 's/# datadir = \.\.\.\.\./ datadir = \/usr\/local\/mysql\/data/' /etc/my.cnf sed -i 's/# port = \.\.\.\.\./ port = 3306/' /etc/my.cnf sed -i 's/# socket = \.\.\.\.\./ socket = \/var\/run\/mysql\/mysql.sock/' /etc/my.cnf num=$(sed -n '/socket/=' /etc/my.cnf) sed -i "$num a[mysqld_safe]\nlog-error=/var/log/mysqld.log\npid-file=/var/run/mysqld/mysqld.pid\n" /etc/my.cnf
cmake的时候把mysql的sock文件指定到/var/run/mysql里符合linux文件目录规范方便往后管理,可是默认没有这个文件夹,手动建立
mkdir /var/run/mysql
chown mysql:mysql /var/run/mysql
启动mysql
./support-files/mysql.server start
进入mysql客户端
bin/mysql -uroot -p
回车后会有个输出提示没有设置密码
此时直接回车,而后进去mysql客户端里
进入mysql的客户端后,咱们来在客户端里的命令行里给mysql设置root密码
use mysql; delete from mysql.user where user=''; update user set password=password("123456") where user="root"; flush privileges; exit
其中123456为你要设置的密码
第二行是删除mysql的匿名用户 flush privileges 命令本质上的做用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,但愿在不重启MySQL服务的状况下直接生效
添加到service里
cp support-files/mysql.server /etc/init.d/mysqld
chmod u+x /etc/init.d/mysqld
之后咱们启动mysql服务直接输入
service mysqld start
就好了,若是要开机自启就输入下面的命令
chkconfig --add mysqld
把mysql的安装目录下的bin加入环境变量里
echo 'export PATH=/usr/local/mysql/bin:$PATH'>>/etc/profile source /etc/profile
之后进入mysql客户端输入下面命令就能够了
mysql -uroot -p
(追加)
发现这样安装mysql以后,重启系统以后会出现启动不了mysqld的状况
解决方案是在重启系统以后从新建立 /var/run/mysql目录,输入如下命令
mkdir /var/run/mysql
chown mysql:mysql /var/run/mysql
不知道为何在系统重启以后这个目录就不存在了,须要从新建立。望大神们可以解答
5、安装PHP
先安装curl为了后面给php添加curl扩展
cd wget http://ojt8x896o.bkt.clouddn.com/curl-7.52.1.tar.gz tar -zxvf curl-7.52.1.tar.gz cd curl-7.52.1 ./configure --prefix=/usr/local/curl make && make install
安装mhash库给php开启扩展
cd
wget https://ncu.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz tar -zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9 ./configure make && make install
进入php官网,进入download页面点击tar.gz包
进去后咱们找香港的源,右击后选择复制连接
下载安装
cd wget http://hk1.php.net/get/php-5.6.32.tar.gz/from/this/mirror -O php-5.6.32.tar.gz tar zxvf php* cd php*
这里wget下载php有时候被保存为mirrors,有时候被保存为php加版本号,因此上面wget后面我加了-O参数下载保存为php-5.6.32.tar.gz
安装依赖
yum install openssl openssl-devel bzip2-devel libxslt libxslt-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel
配置
./configure --prefix=/usr/local/php \ --enable-bcmath \ --enable-calendar \ --enable-ftp \ --enable-fpm \ --enable-mbstring \ --enable-pcntl \ --enable-shmop \ --enable-soap \ --enable-sockets \ --enable-sysvsem \ --enable-zip \ --with-apxs2=/usr/local/apache/bin/apxs \ --with-bz2 \ --with-curl=/usr/local/curl \ --with-freetype-dir=/usr/lib64 \ --with-gettext \ --with-gd \ --with-jpeg-dir=/usr/lib64 \ --with-openssl \ --with-png-dir=/usr/lib64 \ --with-xmlrpc \ --with-xsl \ --with-mhash \ --with-mysql \ --with-mysqli \ --with-pdo-mysql \ --with-zlib \ --with-config-file-path=/usr/local/php/etc/
配置没错的话就是图里的信息
编译php须要资源,make的时候有时候会由于内存不够而中断,关键字memory字样,因此建议先关闭apache和mysqld
service httpd stop
service mysqld stop
make
make提示complete后直接
make install
等输出完成后 php默认的配置文件php.ini是不存在的咱们须要手背拷贝过去 在源码包里有俩ini,php.ini-development和php.ini-production 我是拷贝的development,而且修改配置文件里的时区为PRC
cp ./php.ini-development /usr/local/php/etc/php.ini sed -ri '/;date.timezone =/s#;date.timezone =#date.timezone = PRC#' /usr/local/php/etc/php.ini
成功安装php后咱们要吧php安装目录下的bin弄到环境变量里面
echo 'export PATH=/usr/local/php/bin:$PATH'>>/etc/profile source /etc/profile
这样PHP就安装完成了,关于php-fpm的配置能够在网上查到好多资料,fpm是LNMP必备的,Nginx与php之间须要fpm来完成翻译的工做。
6、安装phpMyAdmin
使用php和mysql开发网站的话,phpmyadmin是一个很是友好的mysql管理工具,而且免费开源,国内不少虚拟主机都自带这样的管理工具,配置很简单,接下来在linux服务器上配置phpmyadmin来管理MySQL数据库
首先访问phpmyadmin官网下载页 https://www.phpmyadmin.net/downloads/
一样复制下载连接,用wget命令下载
cd #回到主目录,下载就直接放在主目录里面了 wget ttps://files.phpmyadmin.net/phpMyAdmin/4.7.6/phpMyAdmin-4.7.6-all-languages.tar.gz tar zxvf phpMyAdmin* rm -rf phpMyAdmin-4.7.6-all-languages.tar.gz mv phpMyAdmin* /usr/local/apache/htdocs #将解压的文件夹放到htdocs文件夹中 cd /usr/local/apache/htdocs/phpMy* #进入到文件夹中 mv phpMy* phpMyAdmin #修改文件名,为了后期方便
这时候能够看到目录下有一个配置文件:config.sample.inc.php
将这个文件拷贝一份,并进行编辑
cp config.sample.inc.php config.inc.php
vim config.inc.php
找到$cfg['blowfish_secret']配置项,后面默认为空,这里咱们能够随便设置一个复杂的字符串,用来加密使用:
保存后退出,这样phpMyAdmin就安装完成了
启动mysql和Apache以后就能够在浏览器中输入 http://192.168.1.11/phpMyAdmin,就能看到如下页面
输入数据库密码就能工做啦!
7、检验环境是否打通
1.LAMP
而后进入apache的conf配置文件
cd /usr/local/apache/conf/
vim httpd.conf
在里面按下i后进去vim的编辑模式,添加一行,这里是让apache识别php文件
AddType application/x-httpd-php .php
而后再图中位置那后面加入index.php
保存后,进入到apache的默认读取文件夹,,这里是在/usr/local/apache/htdocs/,把默认的index.html更名为index.php内容为
cd /usr/local/apache/htdocs/
mv index.html index.php
vim index.php
将下面的内容编辑到文件中
<?php $con = mysql_connect("localhost","root","BQ000-000bq"); if($con){ echo 'Database connect ok !'; }else{ echo 'Database connect fail !'; } echo phpinfo(); #显示php信息 ?>
保存退出,而后启动apache,mysql,注意若是你系统也安装了nginx,先把nginx关掉,要否则启动apache时会报80端口被占用,固然你也能够修改刚才的apache配置文件httpd.conf,找到listen,将80修改成其余端口
pkill -9 nginx #强制关闭nginx service httpd start # 开启apache service mysqld start #开启mysql
刷新刚才的浏览器页面,看到下图就表明环境已经打通了
2.LNMP
先进入到php安装目录中启动php-fpm
cd /usr/local/php/etc mv php-fpm.conf.default php-fpm.conf #修改文件名,要否则启动fpm会报错 cd ../sbin #进入到sbin目录中 ./php.fpm #开启fpm
检查fpm是否开启成功
ps aux | grep php-fpm #根据名字查看进程
说明启动成功
进入nginx安装目录,修改配置文件
cd /usr/local/nginx/conf ll #查看当前文件夹里面的内容 vim nginx.conf #修改配置文件
将下面内容插入到文件中
location ~ \.php { fastcgi_pass 127.0.0.1:9000; fastcgi_index /index.php; include /usr/local/nginx/conf/fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
修改启动页面内容
cd ../html #进入到html文件夹中 vim test.php #新建test.php文件
同LAMP同样,将下面内容写入到test.php中
<?php $con = mysql_connect("localhost","root","BQ000-000bq"); if($con){ echo 'Database connect ok !'; }else{ echo 'Database connect fail !'; } echo phpinfo(); ?>
保存以后,先关闭apache
service httpd stop #关闭apache cd ../sbin/ #进入到sbin目录 ./nginx #启动nginx
在浏览器中输入你的ip加上/test.php(好比个人就是192.168.1.11/test.php)会看到下图
说明LNMP环境也打通了。
8、总结
lz采用的是编译安装,最为复杂的一种,历时两天才将环境打通,好多地方也是借鉴别人的,尤为是https://zhangguanzhang.github.io/2017/02/02/lamp/,写的很是详细,另外也感谢老哥推荐的慕课网课程,
虽然里面讲的有些地方不尽详细。
在这里给你们推荐一个一键安装lamp的连接,https://lamp.sh/install.html,在安装好centOS7以后就能够安装上面的步骤进行安装,很方便。