Quantcast
Channel: CodeSection,代码区,Linux操作系统:Ubuntu_Centos_Debian - CodeSec
Viewing all articles
Browse latest Browse all 11063

新系统(ubuntu)搭建php7.1+nginx+mongodb3.2线上环境

$
0
0

新系统(ubuntu)搭建php7.1+nginx+mongodb3.2线上环境
准备

先更新本机内置的程序。

sudo apt-get update sudo apt-get upgrade

再判断系统是否内置了add-apt-repository命令,如果没有执行下列命令安装

sudo apt-get install software-properties-common git

安装一下git程序,很多地方会用到

sudo apt-get install git

设置一下自己的git名字和邮箱

git config --global user.name "你的名字或昵称" git config --global user.email "你的邮箱" php

添加最新php的源,然后安装php

sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install php7.1 php7.1-common php7.1-fpm php7.1-dev sudo apt-get install php7.1-mbstring php7.1-xml

安装结束之后就可以执行php -i命令查看到php-cli的信息

不过要配合nginx的话,需要用php-fpm来管理php的进程。

service php7.1-fpm start service php7.1-fpm stop service php7.1-fpm restart nginx

直接安装nginx

sudo apt-get install nginx

nginx的操作命令如下:

service nginx start service nginx stop service nginx restart

查看nginx使用的config配置文件或者软重启的命令是

nginx -t nginx -s reload

一般配置文件在/etc/nginx目录下。

不过要配置一个新的网站,不需要在nginx.conf里添加,只需要在sites-enabled文件夹下加一个对应文件即可(文件名随意)

cd /etc/nginx/sites-enabled touch demo

上面的demo文件是随便命名,用vi打开

vim demo

然后添加下面的内容

server { listen 80; server_name demo.com; root /home/www/demo/public; index index.html index.htm index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php7.1-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }

解释一下上面的配置:

独立的一个服务器配置需要用server{}包裹起来 listen 80表示监听80端口,也就是http访问的默认端口,其它端口在浏览器上需要输入端口号。 server_name表示绑定的是哪个域名。 root表示该域名访问到路径对应的实际文件夹 index表示域名的path为空的时候对应访问哪个文件,默认都是index.html、index.htm和index.php location /这里是对所有路径做路由重写,里面的try_files $uri $uri/ /index.php?$query_string;是laravel框架的路径重写配置。 location ~ \.php$是指访问所有后缀名带.php的路径时候,需要执行的操作,这里也就是配置php的fastcgi fastcgi里的最重要部分是fastcgi_pass,它代表nginx服务器如何与php通信,这里的unix:/run/php/php7.1-fpm.sock;是php7.1-fpm启动后生成的套接字文件,可以和nginx通信。 mongodb

导入mongodb的公钥

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

看一下自己的系统版本是多少

cat lsb-release | grep 'description' -i

如果是16.x的话执行

echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

如果是15或者是14的话执行

echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

安装mongodb

sudo apt-get update sudo apt-get install -y mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools

安装结束之后就能使用mongodb的server和本地shell了,不过先要配置一下。

默认配置文件是/etc/mongod.conf

storage: dbPath: /var/lib/mongodb journal: enabled: true systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log net: port: 27017 bindIp: 0.0.0.0 #security: #authorization: 'enabled'

这里的配置解释如下:

storage代表数据库存储在硬盘的地方,所以dbPath这个路径需要注意权限设置,让mongdb有权限可读可写。 systemLog代表的是mongodb日志存放配置。 net下的port代表mongodb的访问端口,默认是27017,bindIp如果不设置0.0.0.0,那么非本机无法访问。 security和它下面的都加了#号注释掉,这个是开启用户名和密码验证,暂时不开启。

mongodb的操作命令如下:

service start mongod service stop mongod service restart mongod

先启动mongod,然后输入mongo命令看是否能连接到本机mongodb服务器,如果不能,表示mongodb server没有正常启动,注意排查dbPath等路径的权限,例如可以设置数据库文件的owner

sudo chown -R mongodb:mongodb /var/lib/mongodb

mongo命令启动shell之后,可以设置一下数据库的用户名密码

创建root级的超级用户,用户名密码可更改

use admin db.createUser({ user: "root", pwd: "123456", roles: [ { role: "__system", db: "admin" } ] })

root级别的超级用户一般不会直接使用,针对单个数据库级别的管理员更实用。

假设数据库名为demo,那么创建一个demo的管理员

use demo db.createUser({ user: "demo", pwd: "abcdefg", roles: [ { role: "dbOwner", db: "demo" } ] })

配置完毕之后可以用

db.auth("demo","abcdefg")

来验证一下是否设置成功,返回1就是成功

然后再编辑/etc/mongod.conf文件,删除掉

#security: #authorization: 'enabled'

之前的两个#号,service mongod restart之后,安全用户配置成功。

php扩展

ubuntu源里没有php7.1-mongodb,所以需要自己安装

sudo pecl install mongodb

这里的pecl命令是安装php7.1-dev的时候带来的。

扩展会自动下载并安装,不过开启扩展需要手动添加一下。

php-cli的配置文件在/etc/php/7.1/cli/php.ini

php-fpm的配置文件路径和php-cli不同,/etc/php/7.1/fpm/php.ini

echo "\nextension=mongodb.so" | sudo tee /etc/php/7.1/cli/php.ini echo "\nextension=mongodb.so" | sudo tee /etc/php/7.1/fpm/php.ini

此时再重启php-fpm,就可以正常看到phpinfo里有mongodb了。

composer

直接用php下载并安装composer

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php --install-dir=/usr/sbin --filename=composer php -r "unlink('composer-setup.php');"

安装结束后输入composer检查是否安装成功,其中安装地址指定为/usr/sbin,也可以设置为其它地方。

项目代码

直接通过git clone https……下拉代码。

如果是laravel项目,需要进入项目之后,composer install一下。

并且配置好.env文件的环境,写上数据库账号和密码。

项目的完整路径要在nginx的/etc/nginx/sites-enabled/demo里写上,并加上自己想要访问的域名。

结束之后软重启nginx

nginx -s reload

项目已经可以线上访问了。

开机自动启动

可以通过修改 /etc/rc.local文件来管理启动项。

service mongodb start service php7.1-fpm start service nginx start


Viewing all articles
Browse latest Browse all 11063

Trending Articles