nginx环境定制化方案

EpiiServer是什么

更连忙更有益于的php+nginx多采纳安插环境。

1、简介

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

laravel是当下二个相比主流的框架,今后不可胜道网络的公司宗旨都在选拔该框架。该框架是基于symfony【外国一款越发流行的框架:由于国内手册不是很齐全,没有多少集团采纳】的三个外国的MVC框架。诞生于2012年3月30日。

官网:https://laravel.com/

中文官网:http://www.golaravel.com/

中文社区:https://laravel-china.org/

Laravel框架的广告语:

为 WEB 音乐家制造的 PHP 框架

设置Gogs以前先安装好mysql,nginx

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

github仓库首页

贰 、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. 多利用神速安插,域名自动生成。
  2. 各类应用可安装本身php的版本。
  3. 各样应用可安装本人的环境变量。
  4. 域名与目录自动绑定,支持5级域名自动绑定目录。
  5. 与wamp等集成环境比较,尤其体贴定制化配置,而非环境的设置。

(1)什么是composer

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

composer是PHP中用来治本看重(dependency)关系的工具,你可以在大团结的花色中宣示所看重的外部工具库(libraries),composer会帮你安装这几个重视的库文件。

一句话,composer是3个工具,是为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文件所在目录

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

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

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

履行达成后,生成三个composer.bat的批处理公事。

重新打开命令行,执行composer命令,安装成功。

安装 Gogs

  1. nginx环境定制化方案。下载预编译的二进制安装包
    安装包各版本地址: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
    

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


可能你会说一贯用 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

(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放进那一个目录,自动会生成上述的域名。

六 、直接下载格局地署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或域名访问

如必要经过三千端口访问请小心在防火墙中拉开端口

六、安装 Nginx

  1. 安装

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

     $ sudo /etc/init.d/nginx start
    

    nginx环境定制化方案。浏览器访问:你的服务器ip地址
    如:http://45.45.162.162

     

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

     

  3. 停止 nginx

     $ sudo nginx -s stop
    

疑问1

地点中域名loc.com 是什么?
他是您全部app的根域名。任何3个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为相对路径,一定不要包罗汉语

柒 、运转形式

方式一:

Laravel框架提供了更简约的方法运转项目(可以不采取apche)

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

以php artisan serve运行后,会打开九千端口,私行认同会在九千端口运行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_USE中华V 默许是 git,内定 Gogs 以哪个用户运维
ROOT 全数仓库的蕴藏根路径
PROTOCOL 即便您拔取 nginx 反代的话请使用
http,若是直接裸跑对外服务的话随意
DOMAIN 域名。会影响 SSH clone 地址
ROOT_U大切诺基L 完整的根路径,会潜移默化访问时页面上链接的针对性,以及 HTTP clone
的地点
HTTP_ADD科雷傲 监听地址,使用 nginx 的话建议 127.0.0.1,否则 0.0.0.0
也足以
HTTP_PO卡宴T 监听端口,专断认同 两千
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 放在了另2个目录
"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

八 、目录结构解析

(1)app目录:项目标主干目录,紧要用于存放核心代码,也囊括控制器、模型以及路由。

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

 

模型文件存放地点,模型文件间接写在app目录下即可,然而也足以在该目录下建立Model目录,大家一般会在Http目录下创建一个Model目录。

(2)bootstrap目录,laravel运维目录

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

 

 

 

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

 

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

不怕利用文件的办法,来治本数据库,创设2个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

 

www.5929.com 2# 表示测试成功

 

(5)此时做客Nginx服务器应该会赢得502 Bad
Gateway的提示,因为请求被Nginx转载了,可是并没有转化服务器来拍卖请求(还向来不安排好uwsgi)。

    $ service nginx start

 

www.5929.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运行:不挂断运维命令,用”&”能够让您的命令在后台执行
    www.5929.com,(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 记录日志

二 、五个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]的设置。

为了兑现

  • 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. 第1安装supervisor (暗许由自带的python2.7驱动)

     $ apt-get install supervisor
    
  2. 进入暗许配置文件(修改配置文件)

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

     

    www.5929.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
    

     

    www.5929.com 5

     

探望上图界面表示曾经成功,之后方可由此打开Supervisor端口去监督管理你的品种一键运维/截止你的档次。

——————————————————————————————————
有何样遗漏不足的请多多率领!!!

③ 、环境变量设置。

我们自然会遇到这么些题材

  • app的开发和配备使用的数据库参数不相同等。怎么样有效分离。
  • 很六个人在应用git用作社团同盟方式。怎么样让机要的账号和密码不受版本控制。

上述难点,有不可胜道化解方案,但更便宜更不易的办法为经过环境变量设置账号和密码,使得程序和重要账号完全分离

在不相同的环境下(window,linux,iis,apache,nginx)设置php环境变量的办法不一样,

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

 

www.5929.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

Ali云和微软云等云平台都有设置环境变量的措施。

怎么着设置

EpiiServer 侧重的是nginx php 安装后的灵活布署,而非 nginx
php本身的装置。

之所以在安装EpiiServer事先您需要(必须)

壹 、依照本人的系统下载nginx,并且通晓安装路径及布署文件路径。

贰 、根据自个儿的急需下载安装php,可下载多个版本。

三 、window
用户须了然安装的各种php版本路径及php-cgi的地点,并且逐个版本可以成功运营

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

四 、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,依照计划文件的唤起配置自身的档次。

二 、请运维项目下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能给你带来帮忙。让您越多的岁月去研发产品,而非环境搭建。

Leave a Comment.