nginx环境定制化方案

EpiiServer是什么

更便捷更有益的php+nginx多利用安顿环境。

1、简介

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

laravel是时下1个相比较主流的框架,今后众多互连网的信用社基本都在应用该框架。该框架是依据symfony【国外一款尤其流行的框架:由于国内手册不是很齐全,没有多少商户利用】的3个海外的MVC框架。诞生于二零一二年四月六日。

官网: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是二个工具,是为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文件所在目录

第4步:在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. nginx环境定制化方案。登录 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

下载的文件如下;

譬如创立1个名为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
    

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

     

    亚洲必赢官网 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有另3个域名如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福睿斯 专擅认同是 git,钦点 Gogs 以哪个用户运转
ROOT 全部仓库的仓储根路径
PROTOCOL 假设你利用 nginx 反代的话请使用
http,假诺直白裸跑对外服务的话随意
DOMAIN 域名。会影响 SSH clone 地址
ROOT_U翼虎L 完整的根路径,会影响访问时页面上链接的指向,以及 HTTP clone
的地址
HTTP_ADD福特Explorer 监听地址,使用 nginx 的话提议 127.0.0.1,否则 0.0.0.0
也足以
HTTP_PO奥迪Q7T 监听端口,暗中认可 三千
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

八 、目录结构解析

(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)写入2个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

 

亚洲必赢官网 2# 表示测试成功

 

(5)此时造访Nginx服务器应该会拿走502 Bad
Gateway的唤起,因为请求被Nginx转载了,然而并不曾转化服务器来处理请求(还不曾配备好uwsgi)。

    $ service nginx start

 

亚洲必赢官网 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 记录日志

贰 、多少个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无需安装,因为拥有的使用专擅认同都应用第3个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 保存
    

     

    亚洲必赢官网 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
    

     

    亚洲必赢官网 5

     

看到上图界面表示已经打响,之后可以透过打开Supervisor端口去监督管理你的品类一键运行/截至你的类型。

——————————————————————————————————
有哪些遗漏不足的请多多指导!!!

③ 、环境变量设置。

我们肯定会赶上那一个难题

  • app的费用和安插使用的数据库参数不一致。如何有效分离。
  • 很几个人在接纳git用作团队合作格局。怎么样让首要的账号和密码不受版本控制。

上述难题,有成百上千化解方案,但更有利于更不易的法子为经过环境变量设置账号和密码,使得程序和重要账号完全分离

在区其他环境下(window,linux,iis,apache,nginx)设置php环境变量的艺术不均等,

觉得好的~点个赞打赏下咯~谢谢!!!

 

亚洲必赢官网 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能给你带来帮忙。让您越来越多的光阴去研发产品,而非环境搭建。

网站地图xml地图