本文记录最近实际工作中部署laravel项目到服务器的全部流程。采用docker部署项目,docker镜像是同事上传到阿里云的一个镜像。
1 首先安装docker
~$ sudo apt-get install docker.io
安装完成后查看版本
~$ docker -v
Docker version 18.06.1-ce, build e68fc7a
2 安装docker-compose
~$ sudo apt-get install docker-compose
验证安装成功:
docker-compose -v
docker-compose version 1.18.0, build 8dd22a9
3 拉取docker镜像到本地
首先登录docker镜像:
~$ docker login --username=zkj@aiaisz.com registry.cn-hangzhou.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /home/lzj/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
登录成功后再拉取镜像到本地:
~$ docker pull registry.cn-hangzhou.aliyuncs.com/lnmpswoole/sleep:v1.0
v1.0: Pulling from lnmpswoole/sleep
4 创建工作目录
新建一个文件夹 /data,在其中新建一个文件docker-compose.yml,内容:
docker-compose.yml:
version: "2"
services:
# MySQL 5.7: https://hub.docker.com/_/mysql/
mysql:
container_name: mysql
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_USER: "youwo"
MYSQL_PASSWORD: "123456"
MYSQL_DATABASE: "youwo_dliao"
volumes:
- /data/docker/mysql:/var/lib/mysql
ports:
- "13306:3306"
redis:
container_name: redis
image: redis:3.2.10
volumes:
- /data/docker/redis:/data
ports:
- "16379:6379"
sleep:
container_name: sleep
image: registry.cn-hangzhou.aliyuncs.com/lnmpswoole/sleep:v1.0
links:
- mysql
- redis
volumes:
- /data/docker_user/sleep:/data
ports:
- "10191:8084"
- "10192:80"
这里配置了docker镜像中的mysql,redis,sleep三个容器。sleep是laravel项目名称,它在本地位置在/data/docker_user/sleep目录下,这个目录映射到docker镜像中的/data目录下面。sleep使用的本地端口是10192,它将映射到镜像中的80端口。
mysql数据库在本地机中的位置在/data/docker/mysql目录下,端口13306映射到3306端口下。redis数据库本地位置/data/docker/redis映射到/data目录下,端口16379映射到6379。
所以需要在/data目录下新建俩个目录docker和docker_user。
/data$ ls
docker docker-compose.yml docker_user
5 启动docker镜像
在/data目录下执行命令:
/data$ sudo docker-compose up -d
Starting redis ...
Starting redis ... done
Starting sleep ... done
然后查看docker容器:
/data$ docker container ls
4e012efe06e1 registry.cn-hangzhou.aliyuncs.com/lnmpswoole/sleep:v1.0 "docker-php-entrypoi…" 44 hours ago Up 44 seconds 22/tcp, 8083/tcp, 9093/tcp, 0.0.0.0:10192->80/tcp, 0.0.0.0:10191->8084/tcp sleep
71c08b17e847 mysql:5.7 "docker-entrypoint.s…" 44 hours ago Up 57 seconds 33060/tcp, 0.0.0.0:13306->3306/tcp mysql
e1cdebd66249 redis:3.2.10 "docker-entrypoint.s…" 44 hours ago Up 57 seconds 0.0.0.0:16379->6379/tcp redis
可以看到sleep容器的id是4e012efe06e1,现在进入这个容器去进行配置。
/data$ docker exec -it 4e012efe06e1 bash
root@4e012efe06e1:/# ls
bin data etc lib media opt root sbin sys usr
boot dev home lib64 mnt proc run srv tmp var
root@4e012efe06e1:/#
已经进入docker镜像了。
6 配置docker镜像
配置镜像中的nginx。
cd /etc/nginx/conf.d/
root@4e012efe06e1:/etc/nginx/conf.d# ls
api.conf boss_admin.conf
root@4e012efe06e1:/etc/nginx/conf.d# cat api.conf
server {
listen 80;
server_name 192.168.1.48;
root /data/sleep/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
这里192.168.1.48是本机的ip。然后启动nginx:
/etc/nginx/conf.d# service nginx start
然后启动php:
/etc/nginx/conf.d# service php7.1-fpm start
7 拷贝laveral工程源码
重新打开一个客户端,将larabel工程源码拷贝到/data/docker_user/sleep目录下,
/data/docker_user/sleep$ ls
sleep
并将sleep目录更改权限:
/data/docker_user/sleep$ sudo chmod -R 777 sleep/
进入工程目录,修改.env配置文件:
APP_URL=192.168.1.48:10192
8 使用composer初始化lavaral工程
安装composer软件:
/data/docker_user/sleep/sleep$ sudo apt-get install composer
先确保sleep目录下有composer.json文件,然后执行命令:
/data/docker_user/sleep/sleep$ composer install
这个命令会下载许多php插件,等成功后,会在当前目录下生成vendor文件夹。
9 安装成功
打开浏览器,输入http://192.168.1.48:10192/,可以看到laravel的界面: