更敏捷更便民的php

By admin in 4858.com on 2019年1月17日

EpiiServer是什么

更高效更有益于的php+nginx多采用部署环境。

1、简介

Laravel是一套简洁,优雅的PHP WEB开发框架(PHP Web Framework)。

laravel是眼下一个相比主流的框架,现在无数互联网的公司要旨都在采用该框架。该框架是基于symfony【外国一款相当流行的框架:由于国内手册不是很齐全,没有稍微商家接纳】的一个海外的MVC框架。诞生于二〇一一年四月11日。

官网:https://laravel.com/

华语官网:http://www.golaravel.com/

闽南语社区:https://laravel-china.org/

Laravel框架的广告语:

为 WEB 美学家创立的 PHP 框架

安装Gogs从前先安装好mysql,nginx

Debian部署python3+flask+uwsgi+Nginx+Supervisor

github仓库首页

2、laravel有怎么样优势

(1)语法更兼具表现力

(2)高质地的文档

 例如社区:

 使用参考文档

(3)丰裕的扩大包(功能包)

Laravel的扩展包由世界各地的开发者进献,而且还在不停扩展中

(4)开源、托管在GITHUB上

Laravel是一点一滴开源的。所有代码都得以从Github上收获,并且欢迎您贡献出团结的能力

自家的微处理器-》右击-》采取高档系统安装-》环境变量

 

 

 

 

创建git用户

gogs默认以git用户运行

  1. 新建git用户
    adduser git

  2. 以git用户登录
    su git

  3. cd 到git用户主目录 /home/git 新建.ssh文件夹 权限设置为0755

一、安装编译用的包

  • 一经在root下就绝不输入 sudo。在子用户下就在命令前增长 sudo。
  1. $ sudo apt-get install build-essential
  2. $ sudo apt-get install libncurses5-dev libncursesw5-dev
    libreadline6-dev
  3. $ sudo apt-get install libdb5.1-dev libgdbm-dev libsqlite3-dev
    libssl-dev
  4. $ sudo apt-get install libbz2-dev libexpat1-dev liblzma-dev
    zlib1g-dev

gitee仓库

composer介绍

安装Go语言运行环境

Gogs由Go语言编写,运行时需要安装Golang运行条件
假使系统中另外程序并不需要运行Go语言程序,可以只为上文创设的git用户配置运行条件,也能够挑选安排全系统具备用户的Go语言运行环境

  1. 部署环境变量,切换来用户git,并只为该用户配置Go运行环境

su git
cd ~
  1. 写入环境变量

export GOROOT=$HOME/go
export GOARCH=386   #系统位数,386表示32位系统,amd64表示64位系统。
export GOOS=linux   #系统类型
export PATH=$PATH:$GOROOT/bin
  1. 使环境变量生效
    source ~/.bashrc

二、下载安装 python3

  1. 下载python3包

     $ wget --no-check-certificate https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
    

    ‘下载可能会冒出证书无效问题,只要安装个ca-certificates或拔取–no-check-certificate下载就足以制止下面的荒谬’

  2. 跻身下载目录

     $ cd 下载的目录下/
    
  3. 解压包

     $ tar -zxf Python-3.6.3.tgz
    
  4. 进入python3

     $ cd Python-3.6.3
    

特性:

  1. Dolly用快捷部署,域名自动生成。
  2. 各样应用可设置自己php的本子。
  3. 各类应用可安装自己的环境变量。
  4. 域名与目录自动绑定,补助5级域名自动绑定目录。
  5. 与wamp等集成环境比较,更加青睐定制化配置,而非环境的装置。

(1)什么是composer

composer英文单词意思:音乐指挥者

composer是PHP中用来保管倚重(dependency)关系的工具,你可以在温馨的连串中扬言所依靠的外部工具库(libraries),composer会帮您安装这一个依赖的库文件。

一句话,composer是一个工具,是为php项目准备的软件管家。

干活原理:

 composer可以去packagist应用市场
里边下载软件,可是该市场只给重临软件的地点,这或多或少与一般采取市场(360/appstore)不同,一般采用市场之中直接存放软件本身还要也足以重回该软件供下载使用,packagist应用市场
存储的是软件的下载地址,对应的软件都是在github里边存储的,最后下载的软件是从github重回的。

官方网站:)

下载地址:

 

安装Go

  1. Go语言官网 能够拿走最新的二进制安装包

wget https://storage.googleapis.com/golang/go1.5.2.linux-386.tar.gz
tar xzvf go1.5.2.linux-386.tar.gz
mv go $GOROOT

Go语言运行条件就设置到位了

  1. 测试Golang是否安装成功
    go env

三、编译安装

  1. 釜底抽薪PIP包管理器所需依靠包

     $ vim Modules/Setup.dist
    
  2. 将下边1行撤销注释,大概在文件的361行左右.改动后esc:wq保存并退出

     zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
    

缓解了何等问题?

先不说怎么设置,先看看您是不是需要本利用。

(2)composer安装使用(composer.phar)

第一步:下载composer.phar

其次步:配置php的环境变量

桌面上‘我的电脑’单击右键选取属性

其三步:复制下载的composer.phar文件到PHP环境中的php.exe文件所在目录

第四步:在php.exe目录执行如下命令:

以cmd格局进入到php.exe文件所在的目录,执行如下命令。

echo @php “%~dp0composer.phar” %*>composer.bat

实施完毕后,生成一个composer.bat的批处理文件。

再也打开命令行,执行composer命令,安装成功。

安装 Gogs

  1. 下载预编译的二进制安装包
    安装包各版本地址:https://gogs.io/docs/installation/install\_from\_binary

su git
cd ~
wget -c http://7d9nal.com2.z0.glb.qiniucdn.com/gogs_v0.8.10_linux_386.tar.gz
tar zxf gogs_v0.8.10_linux_386.tar.gz
  1. 确立数据库
    /home/git/gogs/scripts/mysql.sql是数据库开首化文件
    提拔:数据库必须协理InnoDB引擎

cd gogs
mysql -u root -p < scripts/mysql.sql #(需输入密码)即可初始化好数据库
  1. 登录 MySQL 创立一个新用户 gogs,并将数据库 gogs
    的有着权限都予以该用户

mysql -u root -p
create user 'gogs'@'localhost' identified by '密码';
grant all privileges on gogs.* to 'gogs'@'localhost';
flush privileges;
exit;
  1. 编辑 gogs/scripts/supervisor/gogs 修改如下

directory=/home/git/gogs/
command=/home/git/gogs/gogs web

世家修改时依照实际路径

四、自定义安装目录

  1. 成立安装目录

     $ mkdir -p /usr/local/python3.6.3
    
  2. 进入python3目录

     $ cd Python-3.6.3
    
  3. 指定到安装目录

     $ ./configure --prefix=/usr/local/python3.6.3
     $ ./configure --enable-optimizations
    
  4. 此间编译使用的是make all没有平素选择make,all参数会编译所有子模块。

     $ make all
     $ make install
    

1、本地多少个网站,域名自动生成。


莫不你会说平素用 http://localhost/app1http://localhost/app2
来访问六个网站不就行了。
确实可以。但假如分别设定自己的域名呢?比如 http://app1.loc.com
http://app2.loc.com ,假诺你有其一想法,本软件很自在可帮你实现。

如下目录

web -- App集合目录
    app3
        index.php --入口文件
    app4
        application
        public
            index.php --入口文件
    app5
        dir1
        dir2
            dir3
                index.php --入口文件

域名自动为

http://app3.loc.com
http://public.app4.loc.com
http://dir3.dir2.app5.loc.com

您需要做的事务(唯一要做的)仅仅是在host文件中让app3.loc.com
public.app4.loc.comdir3.dir2.app5.loc.com 指向你的ip

更敏捷更便民的php。(3)使用composer情势部署laravel项目

率先步:切换镜像为国内镜像

镜像官网:

通过composer可以去packagist.org市场 和 github代码库 下载效率代码

而是packagist和github对应的服务器都安排在海外,每一次访问的时候速度必然处于劣势。

这儿“镜像”应运而生,其是把仓储在packagist和github等外国服务器上的全体内容定期(更新相比及时,几分钟的推移)同步到境内服务器里边,使得大规模开发者可以不用绕远到外国,相反在协调国家就可以把软件更新到祥和的档次中,方便了composer的拔取。

给composer配置镜像:

修改 composer 的大局配置文件(推荐方法)

composer  config -g repo.packagist composer

第二步:composer部署laravel项目。

以cmd格局,进入到项目所在的目录,

譬如创造一个名为laravel的laravel项目

composer  create-project  laravel/laravel  –prefer-dist

下载的文书如下;

譬如说创造一个名为shop的laravel项目

composer  create-project  laravel/laravel  shop  –prefer-dist

留意,如若要下载其他版本,比如5.3版本,可以利用这么些命令

composer create-project laravel/laravel shop 5.3.* –prefer-dist

nginx 反向代理

  1. http

server {
    server_name 域名或IP;
    listen 80;
    location / { # 如果你希望通过子路径访问,此处修改为子路径,注意以 / 开头并以 / 结束
        proxy_pass http://127.0.0.1:3000/;
    }
}
  1. https

server {
    listen 443 ssl;
    server_name 域名或IP;
    ssl_certificate /path/to/gogs.io.unified.crt;
    ssl_certificate_key /path/to/gogs.io-decrypted.key;
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://localhost:3000 $request_uri;
    }
}

五、把 python3 添加到PATH里

  1. 打开~/.bashrc 文件
  2. 充分履行路径

     $ sudo vim ~/.bashrc
     export PATH=$PATH:/usr/local/python3.6.3/bin
    

    添加新的别名信息来修改默认使用的Python版本

     alias python='/usr/bin/python3.6.3'
    
  3. 生效配置文件

     $ source .bashrc
    
  4. 翻开版本:
    因为下面已经添加了默认使用python3.6.3,所以一贯输入$ python -V
    会出现 (-bash: /usr/bin/python3.6.3: No such file or
    directory)报错。

     查看python版本输入以下:
     $ python2 -V :显示为系统自带的python2.7.3
     $ python3 -V :显示为系统自带的python3.6.3
    

EpiiServer根目录下的web目录为app的类型会聚目录,只要您把您的app放进这个目录,自动会变卦上述的域名。

6、直接下载模式部署laravel

拔取手工安装,需要自己下载Laravel框架的源码

下载地址:

找到呼应的版本,举行下载即可。

瞩目:如今lavarel的本子最新的应当是5.4。但是集团使用更多的依旧5.1【官方短期支撑】。

运行gogs

  1. 手动开启gogs

su git
cd ~/gogs
./gogs web
  1. 看护进程开启
    nohup ./gogs web &

  2. 参预服务运行
    将 /home/git/gogs/scripts/init/centos/gogs复制到/etc/init.d中
    root用户下 service gogs stop|start|restart|reload|status


Gogs开启后就足以运用
http://ip:3000 访问
或者采取方面nginx配置的ip或域名访问

如需要经过3000端口访问请小心在防火墙中拉初阶口

六、安装 Nginx

  1. 安装

    $ sudo apt-get install nginx
    # 查看版本
    $ nginx -v
    
  2. 启动 nginx

     $ sudo /etc/init.d/nginx start
    

    浏览器访问:你的服务器ip地址
    如:http://45.45.162.162

     

    4858.com 1
    并发上图:表示成功

     

  3. 停止 nginx

     $ sudo nginx -s stop
    

疑问1

地点中域名loc.com 是什么?
她是你有着app的根域名。任何一个app将子对转会为域名
{appname}.loc.com,目录访问活动为 dir3.dir2.dir1.{appname}.loc.com

一旦想设置自己的根域名只需在config.ini(下载后请复制config.ini.example
config.ini)在[server]下设置

[server]
domain_this=you.domain.com
  • 只要你用dns服务器来实现域名的泛解析那么您将不需要在hosts文件中安装域名指向。
  • 任何app均以根域名为根基暴发的多如牛毛域名。其它格式的域名不匡助。
  • 要是某个app有另一个域名如www.web.com
    那么您可以在dns服务商使用cname的艺术分析到本app的地面域名。

    #### 疑问2

或者你会问,我的花色都在另个目录上面,是不是必须复制到EpiiServer根目录下的web目录下才行吧?当然不是。

只需在config.ini[server]下设置

[server]
www_dir=/path/to/your/www

www_dir为相对路径,一定毫无包含普通话

7、启动形式

方式一:

Laravel框架提供了更简便的艺术启动项目(可以不采纳apche)

以cmd形式,进入到laravel项目中的artisan文件所在的目录,执行php artisan serve

以php artisan serve启动后,会敞开8000端口,默认会在8000端口启动laravel项目

方式二:使用 wamp或lamp环境

域名:www.laravel5.3.com

运转目录:d:/amp/demo/shop/public

(1)创设一个虚拟主机

要小心,项目的输入文件

留意:由于laravel框架的入口文件index.php是在public目录下边,所以在部署虚拟主机目录的时候,需要配备到public目录下面。

 

(2)配置好hosts文件后,浏览器访问如下;出现如下提醒,表示安装成功。

 

 

 

使用域名,举行访问;

 

布局表明

配置文件位于 Gogs 目录的 custom/conf/app.ini,是 INI 格式的文件文件。
详见的安排解释和默认值请参见官方文档,其中重要的布局大概是下面这一个。
RUN_USER 默认是 git,指定 Gogs 以哪个用户运行
ROOT 所有仓库的蕴藏根路径
PROTOCOL 倘若您利用 nginx 反代的话请使用
http,假诺直白裸跑对外服务的话随意
DOMAIN 域名。会影响 SSH clone 地址
ROOT_URL 完整的根路径,会潜移默化访问时页面上链接的对准,以及 HTTP clone
的地方
HTTP_ADDR 监听地址,使用 nginx 的话提议 127.0.0.1,否则 0.0.0.0
也足以
HTTP_PORT 监听端口,默认 3000
INSTALL_LOCK 锁定安装页面
Mailer 相关的挑三拣四

七、安装 uWSGI

  1. 因为已经安装python3所以要选取pip3举办安装

     $ pip3 install uwsgi
    
  2. 翻看版本

     $ uwsgi --version
    
  3. 安装格局二:下载:

     $ wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
    
  4. 解压:

     $ tar zxvf uwsgi-latest.tar.gz
    

疑问3

服从上述方法设置了自身的app集合目录,但仍有个别app(或很多)分布在此外目录,是不是索要复制到app集合目录下?当然不是。

例如自己的 app6 放在了另一个目录
"c:\workplace\app6",只需在config.ini[app_dir]下设置

[app_dir]
app6=c:\workplace\app6
app7=/path/to/app7

目录为相对路径,不分包闽南语。

这种情况下域名 app6.loc.com ,app7.loc.com
将指向你设置的门路。同样襄助子目录转化为域名 ,
app6 的输入文件为 c:\workplace\app6\public\index.php,则访问

http://public.app6.loc.com

骨子里上述设置是不科学的,直接把app6的目录指向public更好

[app_dir]
app6=c:\workplace\app6\public

这么您的域名将简化为app6.loc.com

8、目录结构解析

(1)app目录:项目标为主目录,重要用于存放要旨代码,也席卷控制器、模型以及路由。

譬如控制器文件存放地点:

 

模型文件存放地点,模型文件从来写在app目录下即可,但是也足以在该目录下树立Model目录,大家一般会在Http目录下建立一个Model目录。

(2)bootstrap目录,laravel启动目录

autoload.php文件用于机动载入需要的类公事。

 

 

 

(3)config目录,项目的配备目录,紧要存放配置文件,比如数据库的安排

 

(4)database目录,数据迁移目录

纵使采纳文件的法门,来保管数据库,创设一个PHP文件,在文件中设计表结构,运行该公文,完成表的创立。

 

(5)public目录,项目标入口文件和系统的静态资源目录(css,img,js,uploads)

 

(6)resources目录,存放视图文件

 

 

 

(7)storage目录,首假使存放在缓存文件和日志文件,注意,即便在linux环境下,该目录需要有可写权限。

 

(8)vendor目录,重如若存放在第三方的类库文件,laravel思想首倘使联名的开销,不要再度的造轮子(例如,里面或者存在表达码类,上传类,邮件类),该目录还存放laravel框架的源码。注意假设要拔取composer软件管理的,composer下载的类库都是存放在在该目录上面的。

 

 

 

 

 

(9)routes目录中的web.php文件是概念路由,

laravel中持有的访问,都必须优先定义好路由

 

(10).env文件:紧假诺设置有些系统相关的环境布置文件音讯。config目录里面的文书配置内容一般都是读取该文件之中的布置消息(config里面的配置项的值基本都是来自.env文件)。

 

(11)artisan脚手架文件,首要用来转移的代码的,比如生成控制器,模型文件等。

 

 

 

(12)composer.json依赖包配置文件

 

亟需着重通晓的目录

目录

作用

app

存储项目的核心代码

app/Http/Controllers

保存控制器文件

resources/views

保存视图文件

config

配置文件目录

routes

存放路由文件

database/migrations

存放数据库迁移文件

database/seeds

存放数据库种子文件

 

安装仓库和站点目录同步

  1. 切换到git用户

su git
cd /www
mkdir git-repo
cd git-repo
git clone /home/git/gogs-repositories/user/demo.git
  1. 编辑 /home/git/gogs-repositories/user/demo.git/hooks/post-receive

!/bin/sh  
export LANG=zh_CN.UTF-8  
cd /www/git-repo/demo
unset GIT_DIR //重要是这里..  
git pull origin master
chmod +x post-receive

八、测试

假诺:有现成的品种可以把品种上传来服务器中,在git 管理项目,只需要 git
clone 一下就足以了。

只要:你需要从本地上传项目文件,可以用scp命令,这里就不啰嗦用法了。显而易见大家将项目文件放到服务器,然后就足以用virtualenv管理Python环境
virtualenv就不多说了。那里直接用flask demo举行。

  1. 设置虚拟环境

     $ pip3 install virtualenv
    
  2. 创造一个包

     $ mkdir myproject
     $ cd myproject
    
  3. 始建虚拟环境

     $ virtualenv env
    

    (1)激活虚拟环境

     $ source env/bin/activate
    

    (2)在虚环境中安装flask

     $ pip3 install flask
    

    (3)退出虚环境

     $ deactivate
    

    (4)创制启动文件

     $ vim run.py
    

    (5)写入一个flask,端口自己举办设置。我这边用的80端口。

     from flask import Flask
     app = Flask(__name__)
     @app.route("/")
     def hello():
         return "Hello World!"
     if __name__ == "__main__":
         app.run(host='0.0.0.0', port=80)
    

    (6)esc+wq保存并且脱离

  4. 运行这一个run.py文件
    (1)先停止Nginx

     $ nginx -s stop
    

    (2)打开你设置的端口(端口默认全体是关闭状态)端口自行安装。

     $ iptables -A INPUT -p tcp --dport 80 -j ACCEPT
     # 如果想关闭打开的端口:
     $ iptables -A INPUT -p tcp --dport 80 -j DROP
    

    (3)启动flask程序

     $ cd myproject
     $ python3 run.py
    
  5. 用别样总括机和手机4G访问你的服务器ip地址+上端口。

     如:http://45.32.122.555:80/
     出现:Hello World! 那就成功了。
    

技巧

在上面web下app5中,为了访问入口文件 我们需要 访问 
`http://dir3.dir2.app5.loc.com` 这个域名才可以,如果想简化为 `http://app5.loc.com`,
只需把 dir3的绝对路径设置为`app5`的路径即可。app5=/path/to/app5/dir2/dir3

其他

  1. 为git用户安装密码
    passwd git

  2. 生成SSH密钥
    设置全局的name和email

git config --global user.name "xxx"
git config --global user.email "xxx"

或在仓库目录下设置该仓库的name和email

git config user.name x1
git config user.email x1@xx.com

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

九、配置 Nginx

  1. *
    (1)进入

     $ cd /etc/nginx/sites-enabled/
    

    (2)编辑default

     $ vim default
    

    —————————————————————————————————

     # 或者直接配置 $ cd /etc/nginx 
     $ vim nginx.conf
     # 不过要根据其语法来配置其实最后nginx.conf还是会调用/etc/nginx/sites-enabled/default的配置。
    

    (3)在最终写入后 :wq保存并且脱离

     server {
     listen  80;
     server_name 45.32.162.255; 
     charset      utf-8;
     client_max_body_size 75M;
     location / {
         include      uwsgi_params;
         uwsgi_pass   127.0.0.1:8000;  
         uwsgi_param UWSGI_PYHOME /root/myproject/venv;
         uwsgi_param UWSGI_CHDIR  /root/myproject; 
         uwsgi_param UWSGI_SCRIPT run:app; 
         }
     }
    

    解析
    listen 80; # 服务器监听端口
    server_name 45.32.162.255; # 这里写你的域名依旧公网IP
    charset utf-8; # 编码
    client_max_body_size 75M; # 在此之前写的有关GET和POST的界别
    include uwsgi_params; # 导入uwsgi配置
    uwsgi_pass 127.0.0.1:8000; #
    转发端口,需要和uwsgi配置当中的监听端口一致 (下边会部署uwsgi)
    uwsgi_param UWSGI_PYTHON /root/myproject/venv; #
    Python解释器所在的路线(这里为虚拟环境)【路径遵照自己实际的路子填写】
    uwsgi_param UWSGI_CHDIR /root/myproject; # 项目根目录
    uwsgi_param UWSGI_SCRIPT run:app; # 项目标主程序,即Flask
    app所在的岗位【run是运作文件run.py文件(遵照自己创设的文件名)app是falsk实例】

(4)测试一下配置文件是否科学,若检测配置文件退步,再美好检查下安排文件有没有遗漏。

    $ nginx -t

 

4858.com 2# 表示测试成功

 

(5)此时走访Nginx服务器应该会获取502 Bad
Gateway的指示,因为请求被Nginx转发了,不过并从未转化服务器来处理请求(还一贯不布置好uwsgi)。

    $ service nginx start

 

4858.com 3

 

疑问4

一向访问ip会怎么着?

直接访问ip和另外继承环境一致了。

http://127.0.0.1/app1
http://127.0.0.1/app2/dir1/dir2/index.php

能不可以当自家访问ip的时候,默认指定一个app啊。比如访问ip直接访问
app1
只需在config.ini[server]下设置

[server]
default_app=app1

设置完后,当访问 http://127.0.0.1/ 时候将直接针对了app1

ip
访问的效益在于人家对您电脑的拜会。当然旁人也足以在她hosts文本中绑定
app1.loc.com 到你的ip,直接访问域名也足以

注意

  • 一旦当地 push到长途时指示没有权限
  • 恐怕是 gogs/data 和 gogs/data/sessions 目录为root权限
    导致用户新建的仓库的权位也为root

参考作品
https://mynook.info/blog/post/host-your-own-git-server-using-gogs
http://www.tuicool.com/articles/bYBnu2V
https://gogs.io/docs/installation/install\_from\_binary


正文在作品的长河或者参考或局部照搬或任何照搬互联网上的作品内容,然后开展规整汇总或仅仅只是重新排版。
互联网上因相似随笔较多不能确定原作者,假使本文有幸被原作者看到,请告知自己,以便注解出处。

十、配置 uwsgi

  1. # 在品种文件根目录新建配置文件uwsgi.ini(uwsgi匡助多种安排文件格式:
    xml, ini, json等)
    (1)进入项目根目录

     $ cd myproject
    

    (2)创建uwsgi文件

     $ vim uwsgi.ini
    

    (3)写入以下内容后 :wq保存并脱离

     [uwsgi]                                                     
     socket = 127.0.0.1:8000                         
     plugins = python                                        
     chidir = /root/myproject                                    
     wsgi-file = run.py                                       
     callable = app                  
    

    # uwsgi的监听端口【要跟下边nginx配置里的端口一样】
    # 这行一定要添加,不然请求时会现身– unavailable modifier
    requested: 0 –错误指示
    # 项目根目录【路径遵照自己现实的路径填写】
    # flask程序的启航文件【这里我取名为run.py】
    # 程序变量名 【app是falsk实例变量】

  2. 启航测试
    (1)启动 Nginx

     $ service nginx restart
    

    (2)启动 uwsgi #注意要返回项目根目录下举办

     $ cd ~
     $ cd myproject
     $ uwsgi uwsgi.ini
     若一切正常的话就可以在终端上看到uwsgi的启动信息了
    

    (3)打开浏览器

     访问你的ip加上端口
     例:http://45.32.162.255:80
     页面出现:Hello World!
    

    # 表达Nginx和uwsgi配置成功了

    #
    但离真正项目上线还差一段,因为uwsgi是直接在前台启动的,当大家的连续终端跟服务器断开的时候uwsgi进程也被关门了,所以我们需要uwsgi在后台运行。

    解释一下下边这段话:我们在连续服务器启动项目后方可用浏览器访问成功。可是我们一但关闭与服务器的连日后再用浏览器访问就可怜了.项目是运作在前台的也就是说.在闭馆与服务器连接的还要也关闭了服务器的指令窗.运行在前台的品类也同时关闭。所以我们需要把品种周转在后台。

  3. 后台启动项目
    (1)用nohup启动:不挂断运行命令,用”&”可以让你的吩咐在后台执行
    (nohup详细的命名参数请到官网查询)注意:别漏了&号。

     $ nohup uwsgi uwsgi.ini &
    

    (2)关闭与服务器的连日,然后用浏览器访问你的ip地址:

     显示:Hello World! 表示ok了!
    

    (3)可以因而命令把这多少个序列从后台结束,查询uwsgi的历程(linux命令不详细说了)

     $ ps -ef|grep uwsgi
    

    找到uwsgi进程uwsgi.ini:
    root 7950 1 0 14:57 ? 00:00:00 uwsgi uwsgi.ini
    进程id每个人都不雷同 这里的id是7950。
    (4)杀掉后台的uwsgi进程kill -9 前面加上进程的id 或者 killall
    uwsgi杀掉全体同名为uwsgi的进程。

     $ kill -9 7950
     $ killall uwsgi
    

    (5)再用浏览器去做客ip

     浏览器页面显示:502 Bad Gateway 表示停止掉uwsgi程序的运行
    

    (6)项目根目录下会生成 nohup.out 记录日志

2、三个php版本共存。


多年的php工作者,对着php技术更新,及php版本的翻新。你的品种各自安装了不同的php的最低版本。

例如

  • app8支撑版本为php5.6
  • app9支撑版本为php7.1
  • app10支撑版本为php7.2

若果这些使用共存,您有怎么样解决办法。

解决方法很简短。首先下载三个本子的php。然后在config.ini[php]模块设置。

window
使用的是php-cgi.exe,所以只需要指定每一个php版本的php-cgi.exe路线,及端口即可。

[php]
php_cgi[0] = c:\path\to\php5.6\php-cgi.exe
port[0] = 9000

php_cgi[1] = c:\path\to\php7.1\php-cgi.exe
port[1] = 9001

php_cgi[2] = c:\path\to\php7.3\php-cgi.exe
port[2] = 9002

linux,unix下利用的是php-fpm(php-cgi,fastcgi,php-fpm的区分,我们温馨查)

[php]
php_cgi[0] = /path/to/php5.6/sbin/php-fpm
port[0] = 9000

php_cgi[1] =/path/to/php7.1/sbin/php-fpm
port[1] = 9001

php_cgi[2] = /path/to/php7.2/sbin/php-fpm
port[2] = 9002

小心:php-fpm的布局文件 php-fpm.conf
里设置了端口。下边安装的端口一定要和顺序版本的
php-fpm.conf中的端口一致。而php-cgi 只需安装端口即可。

由此上述设置php多版本后,默认的兼具应用都设置为率先个php版本,即php_cgi[0]4858.com ,的设置。

为了兑现

  • app8支撑版本为php5.6
  • app9支撑版本为php7.1
  • app10支撑版本为php7.2

需在在config.ini[app_php_select]模块设置各自的php版本id

[app_php_select]
app9=1
app0=2

app8无需安装,因为所有的利用默认都利用第一个php版本

十一、使用Supervisor进程监控

# Supervisor是python2写就的一款强大的运维工具。
现阶段Supervisor还不协助python3。可以经过以下办法解决。

可经过pip安装.这里用的是python3的pip.所以会设置失败.使用以下.

  1. 率先安装supervisor (默认由自带的python2.7驱动)

     $ apt-get install supervisor
    
  2. 进去默认配置文件(修改配置文件)

     $ cd /etc/supervisor/
     $ vim supervisord.conf 
     按shift+G 跳到末尾
     添加:files = /etc/supervisor/*.conf
     esc:wq 保存
    

     

    4858.com 4

     

     这样方便为每个app单独设置conf文件而不必全部写在全局设置里面
     在启动supervisorctl须先启动supervisord。
     否则会出现error: 
     <class 'socket.error'>, [Errno 99] Cannot assign requested address: file: /usr/lib/python2.7/socket.py line: 575错误
    
     执行:(若不是在root下执行在最前面加上 sudo)
    
     $ supervisord -c /etc/supervisor/supervisord.conf
     $ supervisorctl -c /etc/supervisor/supervisord.conf
     # 这里补充以一下:每当修改完配置后如果出现
     error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib/python2.7/socket.
     # 请重新执行以上的两句命令
    
     进入:supervisor shell模式表示成功
     退出:supervisor shell
     supervisor> exit
    
  3. 开创脚本文件,生成默认配置文件.

     $ cd /etc/supervisor/conf.d/
     新建app.conf文件(文件名自己定义)
     $ vim app.conf
    
  4. 进去编辑情势加上配置

     [program:myproject]
     directory = /root/myproject/
     command= uwsgi --ini /root/myproject/uwsgi.ini
     autostart = true
     startsecs = 5
     autorestart = true
     startretries = 3
     user = root
     redirect_stderr = true
     stdout_logfile_maxbytes = 20MB
     stdout_logfile_backups = 20
     stdout_logfile = /tmp/app.log
     stopasgroup=false
     killasgroup=false 
    

    esc:wq 保存并脱离

    # 解析
    [program:myproject]:# 项目标包名字(我的是myproject)

    directory = /root/myproject/:# 程序的开行目录路径

    command= uwsgi –ini /root/myproject/uwsgi.ini:#启动命令
    (相当于直接开行 uwsgi uwsgi.ini一样只是加上了路线)

    autostart = true:# 在 supervisord 启动的时候也自行启动
    startsecs = 5: # 启动 5 秒后没有这些退出,就当作已经正常启动了
    autorestart = true:# 程序非凡退出后自行重启
    startretries = 3:# 启动失利自动重试次数,默认是 3
    user = root: # 使用哪个用户启动(我这边用的root)

    redirect_stderr = true:# 把 stderr 重定向到 stdout,默认 false
    stdout_logfile_maxbytes = 20MB:# stdout 日志文件大小,默认
    50MB
    stdout_logfile_backups = 20:# stdout 日志文件备份数

    小心:stdout
    日志文件,需要注意当指定目录不设有时不知所可正常启动,所以需要手动成立目录(supervisord会自动创造日志文件)别忘了配置之后成立下边继续。

    stdout_logfile = /tmp/app.log

    说下这两个有效的部署项stopasgroup和killasgroup,如果我们用Flask等Rest服务,通常其会开启多少个过程,那么只要stopasgroup不启用以来,supervisor不可能重启此服务(关闭主进程时其子进程没有停歇,再开启主进程时会提醒端口被霸占等错误音信)。

    stopasgroup=false:
    默认为 false,假若设置为 true,当进程收到 stop
    信号时,会自行将该信号发给该过程的子进程。如果这么些布局项为
    true,那么也富含 killasgroup 为 true。例如在 Debug 形式选用 Flask
    时,Flask 不会将吸收到的 stop
    信号也传递给它的子进程,因而就需要安装这些布局项。

    killasgroup=false:
    默认为 false,假设设置为 true,当进程收到 kill
    信号时,会活动将该信号发给该过程的子进程。假如这些顺序采纳了 python
    的 multiprocessing 时,就能自行截止它的子线程。

         # 创建日志的文件夹
         $ cd ~
         $ cd /myproject/
         $ mkdir tmp
    

    安排完成

    # 还有更多的布局参数请查阅官网

    #此处我们可以观望,即使supervisor是python2写的,但只要我们指定运行的python3解释器去运转程序就行了。

  5. 使配置生效(每当修改主配置文件或增改子配置文件都需要举办使它生效)
    急需先进入$ cd /etc/supervisor目录或者项目的目录cd
    myproject/才可以运行相关的通令如:supervisorctl reload等有关命令

     $ supervisorctl update # 因为是python3执行该命令可能会报错
     # 可以使用以下命令:重新加载配置文件
     $ supervisorctl reload
    
  6. 运作supervisorctl,即可进入shell里面方便的操作,如start app、restart
    app等。

     $ cd /etc/supervisor
     $ supervisorctl
     $ start myproject # 你的项目名称
     # 执行start后可以看到 myproject RUNNING pid 16758, uptime 0:02:58
     $ restart myproject # 重新启动
     $ stop myproject # 停止
     # 更多相关命令可以到官网上查阅这里不消息介绍
    
  7. 上述我们不得不在控制台查看运行.我们需要web界面上查看

     # 添加修改配置文件
     $ cd /etc/supervisor/
     $ vim supervisord.conf
     # 如果在vim模式下找到则对应修改
     # 如果没有 按shift+G 跳至末尾添加
    
     # IP和绑定端口
     # 管理员名称
     # 管理员密码
     [inet_http_server]
     port = 45.32.111.111:9001   
     username = user 
     password = 666666
     # 如果不需要密码可以注释在最前面机上;号
     # ;username = user 
     # ;password = 666666
     # 重新加载配置文件使它生效
     $ cd /etc/supervisor
     $ supervisorctl reload
     # 最后你需要打开你的这个端口并且重启supervisorctl
     $ iptables -A INPUT -p tcp --dport 9001 -j ACCEPT
     $ cd /etc/supervisor
     $ supervisorctl
    
  8. 用浏览器启动

     # 输入你的ip和端口
     45.32.111.111:9001
    

     

    4858.com 5

     

观察上图界面表示曾经打响,之后可以通过打开Supervisor端口去监督管理你的类型一键启动/截至你的类型。

——————————————————————————————————
有什么样遗漏不足的请多多指引!!!

3、环境变量设置。

世家自然会遇上这多少个题材

  • app的开销和安排使用的数据库参数不平等。如何有效分离。
  • 重重人在使用git用作社团合作情势。怎么样让紧要的账号和密码不受版本控制。

上述问题,有许多化解方案,但更方便更不易的方法为经过环境变量安装账号和密码,使得程序和重要账号完全分离

在不同的环境下(window,linux,iis,apache,nginx)设置php环境变量的章程不同等,

以为好的~点个赞打赏下咯~谢谢!!!

 

4858.com 6

在php获取环境变量的情势是同样的

如此这般使得我们的应用程序代码无需任何修改,只需在条件中设置了环境变量即可。

php中通过 $_EVN,或者 getenv() 来得到指定的条件变量值。

现有的情势设置的环境变量,往往是本着具有app都见效的。这代表倘使本身有五个档次,每一个档次都是共享这多少个环境变量,这样的结果为:

  • 不方便。app11app12 的数据库名称,我们亟须设置五个环境变量,如
    DBNAMA_APP11, DBNAMA_APP12。然后分别取得。
  • 不安全。在app11中仍是可以够拿走到app12 的环境变量。

使用 EpiiServer 这一个问题将变得很容易解决。

大家的需如若:

1、app11 需要把数据库新闻设置为环境变量 分别为

DB_HOST=192.168.1.100
DB_NAME=ceshi
DB_USER=username
DB_PWD=password

2、app12 需要把数据库信息设置为环境变量 分别为

DB_HOST=192.168.1.102
DB_NAME=ceshi2
DB_USER=username2
DB_PWD=password2

俺们只需在config.ini[php_env]模块设置各自的环境变量

[php_env]
app11[DB_HOST] = 192.168.1.100
app11[DB_NAME] = ceshi
app11[DB_USER] = username
app11[DB_PWD] = password

app12[DB_HOST] = 192.168.1.102
app12[DB_NAME] = ceshi2
app12[DB_USER] = username2
app12[DB_PWD] = password2

在先后中行使 $_ENV[‘DB_HOST’] 即可获取到对应的 DB_HOST

阿里云和微软云等云平台都有设置环境变量的章程。

咋样设置

EpiiServer 侧重的是nginx php 安装后的灵活安排,而非 nginx
php本人的设置。

因此在安装EpiiServer在此之前你需要(必须)

1、依照自己的系统下载nginx,并且知道安装路径及配置文件路径。

2、依据自己的内需下载安装php,可下载六个版本。

3、window
用户须知道安装的逐一php版本路径及php-cgi的岗位,并且每个版本可以成功运行

/path/to/php-cgi.exe -b 127.0.0.1:9000

4、linux,unix
用户须精通安装的顺序php版本路径及php-fpm的职务和php-fpm.conf的门道,分别修改php-fpm.conf文件
,并成功运行

/path/to/php-fpm

EpiiServer 仓库首页

gitee仓库

https://gitee.com/epii/epii-server

github仓库首页

https://github.com/epaii/epii-server

下载或clone到地面后,

1、请复制config.ini.example
config.ini,遵照安排文件的唤醒配置自己的花色。

2、请运行项目下install/install.php 文件举行设置

path/to/php ./install/install.php

设置只需一回,安装后,会自动生成启动,截至运作文件。

window自动生成的文件为:

  • start.bat 启动服务
  • stop.bat 结束服务

linux unix 自动生成的文书为:

  • start.sh 启动服务
  • stop.sh 截至服务

布置文件修改后回忆 先关闭服务,再起步。

配备文件

[server]
;本机ip地址和端口
this_ip = 192.169.0.169
this_port = 6688
;本机域名前缀
domain_this = this.jt
;web项目路径,此路径下每一个文件夹会当做一个应用,如果某一个项目不想放在此目录下,可以再app_dir中单独设置

;www_dir 为网站根目录,默认为web目录,如果设置请设置绝对路径
;www_dir = /Users/mrren/Documents/phpworkspace/EpiiWeb/web

;default_app = web1
;本程序以php为脚本安装和启动服务,指定php命令地址,一般为php.exe的文件路径
php_cmd=php

[nginx]
;nginx 文件地址; linux or unix 请指定nginx文件地址即可
cmd = /usr/local/Cellar/nginx/1.15.0/bin/nginx
nginx_config_file = /usr/local/etc/nginx/nginx.conf
[php]
;window下 php-cgi.exe 的路径,linux 下 php-fpm 路径
php_cgi[0] = /usr/local/Cellar/php\@7.1/7.1.19/sbin/php-fpm
;如果使用php-cgi,设置的端口将被启用。如果是php-fpm 请确保此端口和php-fpm.conf中一致(php-fpm.conf 需手动修改,多个php版本一定要设置不同的端口)
port[0] = 9000
php_cgi[1] = php-fpm
port[1] = 9001
[app_dir]
;如果你的应用不在www_dir下,请指定项目路径(必须为绝对路径)
;app1 = /Users/mrren/Documents/phpworkspace/jianguan
;epiiadmin=/Users/mrren/Documents/phpworkspace/EpiiWeb/web/epiiadmin/public


[app_php_select]
;默认所有的php版本自动为php_cgi[0] 的版本,如果有特殊需求请在这里设置
epiiadmin = 1

[php_env]
epiiadmin[db_hostname] = zhengxin

大部参数在上述教程已经涉及到。重点介绍

[server] 下的 php_cmd

[server]
php_cmd=php

EpiiServer自身是依照php的(并非你的网站),假使你的php在环境变量PATH下,则平昔为默认配置即可。
假如不是。linux,unix 用户 为path/to/php,window用户为paht/to/php.exe

末段希望EpiiServer能给您带来协理。让你更多的时光去研发产品,而非环境搭建。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有