阿猫的博客

阿猫的博客

LAMP服务器环境搭建及thinkphp工程部署

622
2021-03-28

这篇文章是我之前讲的环境搭建和项目部署视频讲解的文字版本,由于之前直播录屏的时候没有空闲的服务器进行搭建,所以没有详细的截图等可以展示。

现在刚好我手头有一台vps刚重装完,记录一下搭建的过程。

简介

LAMP环境也就是XAMPP的Linux版本,指的是Linux+Apache+Mysql+PHP的组合,是比较经典的建站环境。

之前提到过,部署LAMP环境主要有以下的几种方式:

  • 包管理安装(用apt-get、yum等逐个安装Apache、mysql、php)

    • 优点:包管理能解决一定的依赖、环境问题

    • 缺点:不可自定义一些特殊功能,还是会存在一定的环境问题

  • 手动编译安装(下载源码编译安装)

    • 优点:完全可自定义(如worker等)

    • 缺点:需要解决大量的环境问题才能顺利编译,不利于快速部署

  • 一键安装脚本

    • 优点:简单快捷,可以选择各个组件的版本,适合新手

    • 缺点:有自定义组件需求的时候比较麻烦,安全问题(夹带私货、挖矿)

一般学习和普通生产用途基本可以无脑选一键安装脚本,我现在使用的这个脚本(https://lamp.sh/)我自己已经使用了好几年,一直比较稳定,提供的帮助也挺好,基本按部就班做就可以成功搭建。

同时还有一个LNMP(Nginx)的一键安装包(https://lnmp.org/),也很好用,我后续演示的腾讯云中使用的就是LNMP。两个的差异主要是http服务器分别是Apache和Nginx,这两个的差异大家可以自行研究。

上手

安装推荐使用交互安装方式(https://lamp.sh/install.html),可以看到

系统需求系统支持:Amazon Linux 2018.03/Fedora 29/CentOS 6+/Debian 8+/Ubuntu 14+内存要求:≥ 512MB硬盘要求:至少 5GB 以上的剩余空间服务器必须配置好 软件源 和 可连接外网必须具有系统 root 权限强烈建议使用全新系统来安装支持组件支持 PHP 自带几乎所有组件支持 SQLite、MySQL、MariaDB、Percona Server 数据库支持 Yaf(可选安装)支持 Redis(可选安装)支持 XCache (可选安装)支持 Swoole (可选安装)支持 Memcached (可选安装)支持 ImageMagick (可选安装)支持 GraphicsMagick (可选安装)支持 ionCube Loader (可选安装)自助升级 Apache,PHP,phpMyAdmin,Adminer,MySQL/MariaDB/Percona Server至最新版本命令行新增虚拟主机(使用 lamp 命令),操作简便支持一键卸载程序(不会删除网站数据)

系统需求方面,如果你使用的是云服务器,基本都能达到使用这个脚本的最低要求(如果达不到,使用编译的方法安装估计也够呛)。同时开发常用的组件(redis、memcached)这些手动安装可能会遇到比较多环境问题的也可以一次性配好,很方便。

下面开始安装。这里默认读者已经学会使用ssh连接到服务器并熟悉一些基本Linux命令的操作。其实整个过程只需要按照上面链接的指示复制粘贴命令即可。

我的环境

BandwagonHost SPECIAL 10G KVM PROMO V3 - LOS ANGELES - CN2
1C1T 512M
OS:CentOS7

事前

安装脚本运行所需要的几个依赖

yum -y install wget screen git      // for Amazon Linux/CentOS/Fedora
apt-get -y install wget screen git  // for Debian/Ubuntu

我的环境是CentOS,所以选择上面的yum命令执行。

http://img.ameow.xyz/20200327023852.png

然后下载脚本、赋予权限

http://img.ameow.xyz/20200327023851.png

动手

接下来就可以开始安装了,这里也可以看到自己服务器的配置信息

http://img.ameow.xyz/20200327024121.png

接下来就是一连串的选择了,Apache这里选择1或者直接回车(只有这个了)。httpd是Apache服务器的别名。

http://img.ameow.xyz/20200327024337.png

这里可以选择一些apache的module,这是脚本安装唯一的自定义性。用不到,所以继续回车默认不安装。

http://img.ameow.xyz/20200327024559.png

接下来这里可以选择mysql和php的版本,mysql建议选5.7,8.0刚出稳定性和社区支持还没到位,php也是选择默认的7.3即可。注意mysql可以自定义数据路径,如果有需求可以自定义,一般直接默认一路回车即可。注意!!!这里设置的mysql root password一定要记住!

http://img.ameow.xyz/20200327024910.png

接下来有PHP组件和PHPmyadmin可选,我的项目用到了redis和memcached,所以两个都选择上。phpmyadmin则选择默认即可。

http://img.ameow.xyz/20200327025043.png

最后一步还有一个Kod什么的可选,我用不到,就不装。然后到这个界面,还可以看到一次mysql 的Root Password,一定要记住。看过没有问题,就可以按任意键开始安装。接下来就是一段漫长的滚代码,时间取决于你服务器的性能和网络环境等。现在就可以开始挂一会儿机了。到最后会提示安装完成。

最后这台机器因为内存不足(可以看到上面只有<512M)所以没有办法完成php的编译安装,所以后面的内容我会使用已经安装好LAMP环境的另一台腾讯云演示。

KodExplorer后面发现是一个商业软件,类似云盘之类的东西,应该是作者的恰饭,有需要可以看看,建议选择不要安装。

虚拟主机添加(可选)

安装 LAMP 环境添加虚拟主机。运行命令:lamp add (如果只建一个站,则可以直接将网站程序上传至 /data/www/default 目录下即可)上传并解压网站程序到网站目录,默认位置为:/data/www/网站域名/更改网站目录权限。以 root 用户登录,运行:chown -R apache:apache /data/www/网站域名/运行网站安装程序完成网站安装

这里虚拟主机的意思是你可以绑定多个域名(要先修改域名解析到这个服务器的ip),每个域名各自有一个网站根目录,通过域名直接能访问到不同的网站,但其实还是在同一台服务器上。如果你没有域名,可以直接用ip作为域名。(没必要)

同时,这个脚本里也提供了一键配置https(ssl证书)的功能,只需要上传证书就可以完成配置。

工程部署

程序目录:MySQL 安装目录: /usr/local/mysqlMySQL 数据库目录: /usr/local/mysql/data(默认路径,安装时可更改)MariaDB 安装目录: /usr/local/mariadbMariaDB 数据库目录: /usr/local/mariadb/data(默认路径,安装时可更改)Percona 安装目录: /usr/local/perconaPercona 数据库目录: /usr/local/percona/data(默认路径,安装时可更改)PHP 安装目录: /usr/local/phpApache 安装目录: /usr/local/apachephpMyAdmin 安装目录: /data/www/default/phpmyadminKodExplorer 安装目录: /data/www/default/kod网站目录:默认的网站根目录: /data/www/default默认页位置: /data/www/default/index.html新建网站默认目录: /data/www/网站域名phpmyadmin 后台地址: http://域名或IP/phpmyadmin/phpmyadmin 默认用户名:root 默认密码:root (注:此密码为 MySQL 的 root 密码。在安装时会要求输入,如不输入则为默认密码 root)XCache 后台地址: http://域名或IP/xcache/XCache 默认用户名:admin 默认密码:123456 (注:用户名和密码在配置文件 /usr/local/php/php.d/xcache.ini 中定义)配置文件:Apache 日志目录: /usr/local/apache/logs新建网站日志目录: /data/wwwlog/网站域名Apache 默认 SSL 配置文件: /usr/local/apache/conf/extra/httpd-ssl.conf新建网站配置文件: /usr/local/apache/conf/vhost/网站域名.confPHP 配置文件: /usr/local/php/etc/php.iniPHP 所有扩展配置文件目录: /usr/local/php/php.d/MySQL 配置文件: /etc/my.cnf

这里有所有的目录的位置。可以看到,默认的网站根目录在/data/www/default,这个就相当于win下xampp的htdocs文件夹。(如果你配置了虚拟主机,那么根目录在/data/www/YOUR_DOMAIN_NAME

与win下部署方式类似,只需要把php工程文件夹拷贝到网站根目录即可。(题外话:我有前辈以及一些同学习惯直接把项目建在htdocs下,或者整个htdocs就是一个项目,我不提倡这种做法,会对项目管理造成混乱,不是很好的开发习惯。)

传输文件我一般使用PHPstorm的Deployment功能或者使用winscp进行文件的传输。接下来分别介绍一下。

winscp

文件传输我习惯用winscp,这个软件十分简洁,就是一个单纯的文件管理器,没有其他太多的功能,通过sftp协议传输文件,不用另外配置。当然如果你有部署ftp服务,也可以使用其他一些ftp软件如FileZilla等进行管理。

进入winscp,配置好连接,然后点击登录即可。

http://img.ameow.xyz/20200327135015.png

服务器端(右边)来到/data/www/default(或你的网站根目录,我这里使用的是LNMP,根目录在/home/wwwroot/xxx)。本地端(左边)可以打开到相应的项目目录,也可以用文件管理器打开到相应的项目目录。

http://img.ameow.xyz/20200327135818.png

将要部署的项目直接拖过去右边/从文件管理器拖过去右边。

如果是更新文件,则选择全部选是,进行替换。

http://img.ameow.xyz/20200327140303.png

到这里就完成了。

Deployment(jetbrain系IDE可用)

首先需要进行一定的配置。同样以这个tutorial项目为例。

在工具栏找到Tools->Deployment->Configuration...

http://img.ameow.xyz/20200327140600.png

在弹出的窗口中点击左上角+号,选择sftp,然后输入相应的信息,点击Test Connection,如果成功说明没有问题。

http://img.ameow.xyz/20200327140747.png

接下来点击Mappings选项卡。选择或输入远程的路径,点确认。

http://img.ameow.xyz/20200327141014.png

最后,如果你使用的是thinkphp框架,需要排除掉runtime和vendor文件夹(里面放的是运行时文件,容量比较大,而且环境不同没必要同步)。这里需要注意本地路径需要使用绝对路径。

(这里用了另外一个项目的例子,懒得再写了)

http://img.ameow.xyz/20200327141330.png

配置好后,每次需要上传时,点击里面的upload即可。Sync有代码diff功能,也可以使用这个。

http://img.ameow.xyz/20200327141543.png

过程到这里就结束了,希望能帮助大家顺利完成部署。