PHP开发环境布置的过程全收录
本月接到一个新项目,PC网站、手机网站、微信公众号开发。本文详细记述了本次项目开发环境的布置过程。
开发环境要求
要求是非常关键的,所有工作围绕要求进行。
我对开发环境的要求是:
1、腾讯云的ubuntu server 18环境云服务器
2、布置新的容器(Docker)作为开发环境,镜像名:project,镜像的用户名为yy、密码为password、三个端口映射:9000->80访问网站、9001->22 ssh远程、9999->9002开发。
3、服务器采用jexus,因为我使用asp.net、asp.net core、php三种语言开发,jexus可以在linux下满足我的要求,而且jexus具备反向代理能力,这样我就不需要再布置nginx了,毕竟是开发环境,自己好用就行了。
4、php采用7.3版本,mysql不在容器中安装,直接使用服务器上已经配置好的mysql8.0,毕竟mysql8是比较消耗服务器资源的。mysql管理软件使用mywebsql。(mywebsql是一个网页形式的mysql管理工具,非常好用,我已使用多年了。)
5、开发软件:为了管理简单、通用性强,采用云编程软件code-server。优点是布置完成后只要有可以联网的浏览器就能编码。缺点是code-server实在太难下载了!
安装过程
第一步,在服务器上安装容器(Docker)
1、更新系统
sudo apt-get update
2、添加使用 HTTPS 传输的软件包以及 CA 证书
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
3、确认所下载软件包的合法性,需要添加软件源的 GPG 密钥
sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
4、向 source.list 中添加 Docker 软件源
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
5、更新系统
sudo apt-get update
6、安装DockerCE
sudo apt-get install docker-ce
如果提示没有安装docker.io就执行下面的命令
sudo apt-get install docker.io
至此,Docker安装完成了
第二步,设置Docker,并在Docker中安装常用软件
1、启动Docker
sudo systemctl start docker
由于是开发使用,不是生产环境,所以不单独设置Docker用户
2、按照要求拉取并运行镜像
要求为(1)ubuntu系统
(2)镜像名为project
(3)三个端口映射:9000->80、9001->22、9999->9002
sudo docker run -p 9000:80 -p 9001:22 -p 9002:9999 -d --name=project ubuntu tail -f /dev/null
(sudo docker run -p 镜像外部端口1:镜像内部端口1 -p 镜像外部端口2:镜像内部端口2 -p 镜像外部端口3:镜像内部端口3 -d --name=镜像名 ubuntu系统 tail -f /dev/null)
3、进入镜像系统
sudo docker exec -it project bash
(sudo docker exec -it 上一步设置的镜像名 bash)
4、升级系统、安装必要软件
(1)更新软件源
apt-get update
(2)更新软件
apt-get upgrade
(3)安装wget,用来下载软件
apt-get install wget
(4)安装nano,一个文本编辑工具(根据自己的使用习惯吧,我知道更多的人喜欢vi或vim)
apt-get install nano
(5)安装sudo,linux系统管理指令,可以使普通用户用管理员权限执行一些命令
apt-get install sudo
(6)安装curl,一个命令行工具,支持多种协议,可以发出网络请求并得到和提取返回的数据
apt-get install curl
(7)安装screen,用于后台运行code-server
apt-get install screen
(8)安装openssh服务器,一个开源的SSH服务器,用于建立安全的远程服务连接,可以远程管理服务器或或传输文件,以后单发文章详细介绍吧.
apt-get install openssh-server
(9)安装过程中会提示选择地区的时区

选择地区,这里选择亚洲,也就是6

选择时区,这里选择上海,也就是70
(10)启动openssh服务器
service ssh start
5、安装设置jexus
(1)安装jexus服务器,这个简单,使用官方的脚本就可以
curl https://jexus.org/release/x64/install.sh| sh
(2)进入安装目录
使用脚本安装的目录是/usr/jexus
cd /usr/jexus
(3)启动服务器(当然现在不启动,设置完PHP再启动也行)
./jws start
现在可以访问下服务器,看看是否正常
6、安装PHP
(1)更新软件源和系统
sudo apt-get update && apt-get upgrade
(2)安装一些辅助软件,具体的软件功能以后发文详细说明
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
(3)安装php7.3
sudo apt-get install php7.3
安装完成后可用sudo php -v查看版本
(4)安装php的功能模块,根据自己需要进行选择性安装
sudo apt-get install php-pear php7.3-curl php7.3-dev php7.3-gd php7.3-mbstring php7.3-zip php7.3-mysql php7.3-xml
安装完php后,php的配置文件php.ini在/etc/php/目录下的版本号文件夹中。比如7.3版在/etc/php/7.3/下的文件夹中,7.4版在/etc/php/7.4/下的文件夹中。具体情况根据安装的不同可能或有差异。在进行jexux的php在配置时会用到。
7、安装mysql
原本不想安装mysql了,但是发现不安装mysql,使用php连接数据库需要手动安装许多数据库操作模块,太麻烦,所以索性安装上mysql。安装时发现没有弹出设置密码的界面。这个问题处理起来较麻烦。但是由于我不用这个镜像中的数据库,索性就不改数据库密码了。处理方法以后单独发文吧。
安装方法:
sudo apt-get install mysql-server
8、设置jexus服务器的php支持
jexus服务器默认使用asp.net,所以需要进行php的设置。
jexus使用php有3种设计方法,这里选择PHP-FCGI方式支持PHP。其它方法以后单独介绍。
(1)安装PHP-FCGI
sudo apt-get install php-cgi
(2)修改php的配置文件php.ini,将cgi.force_redirect=1一行,把前边的"#"号去掉,把值从1改为0,保存并退出

(3)修改jexus的配置文件
使用安装脚本安装的jexus配置文件在/usr/jexus/siteconf目录中,默认是default文件
将# fastcgi.add=php|
socket:/var/run/jexus/phpsvr前面的#去掉,改为
fastcgi.add=php|socket:/var/run/jexus/phpsvr
第三步、安装MyWebSQL
MyWebSQL是绿色版基于php的mysql管理器,简单易用。可以下载解压后上传到服务器,也可以在服务器上下载解压。
(1)下载
下载 (到mywebsql官网找找到下载地址)
wget http://nchc.dl.sourceforge.net/project/mywebsql/stable/mywebsql-3.7.zip
下载完成后在当前目录中有了mywebsql-3.7.zip这个文件

刚刚下载的mywebsql-3.7.zip
(2)安装解压软件unzip
apt-get install unzip
解压结果是在当前文件夹下多了个mywebsql文件夹

解压后的mywebsql文件夹
(3)将mywebsql文件夹移动到站点目录下,站点目录是/home/yy/www
cp -R mywebsql /home/yy/www
(4)设置mywebsql。因为我使用宿主机的php数据库,所以mywebsql需要做修改。
首先要找到宿主的ip。容器实际上就是一个虚拟机,工作时会给镜像系统和宿主分配独立的ip地址。
在容器中使用ifconfig可以查看容器ip

容器的ip
我的容器ip是172.17.0.2,那么宿主的IP就是172.17.0.1
进入mywebsql的设置页面,在mywebsql的config目录下,servers.php文件就是

mywebsql的配置文件
打开后修改mysql服务器地址。系统默认为localhost

系统默认为localhost
把localhost改成我的mysql服务器地址,也就是172.17.0.1

修改后的服务器地址
保存退出。
使用浏览器访问,

mywebsql登陆页面
输入用户名和密码即可进入mysql管理页面

第四步、安装code-server
安装code-server是为了开发方便。使用在线开发可以免除抱着笔记本到处跑的尴尬。
1、下载。现在的vodeserver是3.4.0版,官方地址在github中。
下载方法:wget
https://github.com/cdr/code-server/releases/download/3.0.2/code-server-3.4.0-linux-x86_64.tar.gz
不过github的下载速度实在感人,所以建议大家从我的地址下载。
下载方法:wget
http://www.zhsweb.com/soft/code-server-3.4.0-linux-amd64.tar.gz
2、解压:tar -xvzf
code-server-3.4.0-linux-amd64.tar.gz
解压在
code-server-3.4.0-linux-amd64目录中,不过目录名太麻烦了,所以要给目录改名。
3、修改目录名为code-server
mv code-server-3.4.0-linux-amd64 code-server
进入code-server目录
cd code-server
4、为了关闭PuTTY后code-server还可以运行,所以要在screen中运行。
建立一个名为vscode的screen
screen -S vscode
5、运行code-server,设置登录密码为mywebide,访问端口为9999,允许任何ip访问
export PASSWORD="mywebide" && ./code-server --port 9999 --host 0.0.0.0
6、按Ctrl+A+D键,退出screen,这时我建的vscode就在后台继续默默的工作了。
至此,就可以在浏览器中使用code-server编程了。
在浏览器地址栏中输入地址和端口号后就见到了下面的界面

code-server登录界面
输入密码后就进入了编程界面

code-server的编程界面
第五步、安装code-serve编程插件
code-server可以使用vscode的插件。
1、选择插件。
我在使用vscode时常用插件有Auto Close Tag、Auto Rename Tag、Bracket Pair Colorizer、Code Runner、Document This、filesize、ftp-kr、HTML CSS Support、HTML Snippets、HTMLHint、Path Intellisense、vscode-icons、Power Mode、Php Intelephense、PHP DocBlocker、PHP Debug、NuGet Package Manager、vscode-solution-explorer等等,但是在code-server中有一些插件无法使用,特别是Power Mode无法使用,非常可惜。
在code-server中安装插件不能使用插件市场,必须先下载插件的vsix文件然后在code-server中加载vsix文件。
2下载插件。因为插件很多,所以只以HTML CSS Support一个插件为例。
进入vscode的插件市场
https://marketplace.visualstudio.com/
在搜索栏中输入HTML CSS Support进行搜索

在市场中搜索HTML CSS Support
搜索结果为下图

进入后,点击下载(Download Extension)就可下载vsix文件,这个插件的文件名是
ecmel.vscode-html-css-0.2.3.vsix

vsix下载位置

下载下来的ecmel.vscode-html-css-0.2.3.vsix
3、将
ecmel.vscode-html-css-0.2.3.vsix上传到服务器上,然后在code-server中加载插件
进入插件界面,点击右上角的“...”,之后点击“install from VSIX”

安装插件的位置
4、输入插件地址,选择插件,之后插件就加载完成了。

加载插件的方法
至此,整个容器搭建完毕,可以愉快的撸代码了。
欢迎大家讨论、评论和转发,并祝大家撸代码愉快!
o(^▽^)o