LNMP部署

什么是LNMP?

LNMP是常用得web架构,由:linux,nginx,mysql,php组成。

L:  ----linux

N:------nginx (处理用户静态请求)

M:------mysql(存储数据)

P: ------php(处理用户动态请求)

LNMP原理:

首先,当用户通过浏览器访问nginx web服务时,如果请求的资源是静态文件,则由nginx解析后返回给用户,

如果请求的资源是动态的(.php结尾),那么需要通过fastcgi转接口发送给后台的PHP应用服务,如果动态资源需要

读取数据库的话,那么接着向后请求数据库,最后由nginx返回给用户。

PS:nginx软件是无法处理动态请求的!!!!

php          -----------fsatcgi接口

python     -----------uwcgi接口

 

 

动态环境部署流程
LNMP环境:Linux nginx mysql(数据库)--- mariadb php
第一个里程:部署数据库服务(nginx已部署好)
yum install -y mariadb mariadb-server

第二个里程:部署php动态解析服务(考察网络环境)
# 解决yum安装软件冲突问题
yum remove php-mysql php php-fpm php-common
rpm -qa|grep php
# 准备yum安装软件扩展源信息
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 利用yum安装PHP相关软件信息
yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
说明:官方网站地址 php.net

· 动态网站部署过程
第一个里程:确保nginx可以将请求代理转发给php服务
vim /etc/nginx/conf.d/www.conf
location ~ \.php$ {
root /html/www; --- 指定默认找寻PHP文件站点目录
fastcgi_index index.php; --- 指定动态服务默认处理请求文件
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; --- 详细转发给动态服务请求内容信息
include fastcgi_params; --- 加载fastcgi用到内置变量文件
fastcgi_pass 127.0.0.1:9000; --- 发送动态请求服务对接端口信息
}

$document_root --- 获取站点目录信息
$fastcgi_script_name --- 获取请求资源信息
测试过程:
编写php代码
vim test.php
<?php phpinfo(); ?>

systemctl start php-fpm --- 启动php服务

 

 

 

第二个里程:让php服务和数据库建立联系 (通过代码建立)
vim test_mysql.php
<?php
$servername = "localhost";
$username = "root";
$password = "root123";
//$link_id=mysql_connect('主机名','用户','密码');
//mysql -u用户 -p密码 -h 主机
$conn = mysqli_connect($servername, $username, $password);
if ($conn) {
echo "mysql successful by root!\n";
}else{
die("Connection failed: " . mysqli_connect_error());
}
?>

mysqladmin -uroot password "root123" --- 给数据库设置用户登录密码
mysql -uroot -proot123 --- 登录数据库命令

测试php是否和数据库成功建立了联系

[root@web01 www 10:31:47]]# php test_mysql.php
mysql successful by root!

第三个里程:各种网站部署过程
部署网站代码:
www ----dedecms(官方网站)    
bbs   -----Discuz(论坛网站)
blog  ------wordpress(博客网站)
zhihu ------wecenter(社区网站)
edu   -------edusoho (视频网站)

blog网站部署过程:
第一个里程:获取网站代码并解压处理

tar xf wordpress-4.9.4-zh_CN.tar.gz

mv wordpress/* /html/blog/


第二个里程:对数据库进行创建与授权

create database wordpress; --- 创建wordpress数据库
grant all on wordpress.* to 'wordpress'@'localhost' identified by 'wordpress123';
检查语句:
select user,host from mysql.user;
select *,host from mysql.user\G;


第三个里程:网站初始过程
在浏览器上访问网站页面进行初始化
确认blog配置信息:
location / {
root /html/blog;
index index.php index.html index.htm;
}
location ~ \.php$ {
root /html/blog;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}


403:
01:网站访问页面被拒绝了 deny指令配置
02:网站没有指定首页文件
在浏览器输入映射地址:blog.goodboy.com

 

 

 

 

 

/html/blog/wp-config.php --- 此文件可能需要自己进行创建(连接数据库代码文件) PS:出现这种状况是因为php-fpm进程的属主和属组与nginx的不一致导致

解决方法1:要么手动复制

解决方法2:vim /etc/php-fpm.d/www.conf  (将属组和属主改为一致并重启)

 

 

 

 

 

zhihu网站部署过程:

第一个里程:获取网站代码并解压处理
unzip WeCenter_3-2-1.zip
mv WeCenter_3-2-1/* /html/zhihu/
chown -R nginx.nginx /html/zhihu/

第二个里程:对数据库进行创建与授权
create database zhihu;
grant all on zhihu.* to 'zhihu'@'localhost' identified by 'zhihu123';

第三个里程:网站初始过程
在浏览器上访问网站页面进行初始化
确认zhihu配置信息:

server {
listen 80;
server_name zhihu.goodboy.com;
error_log /var/log/nginx/error_zhihu.log warn;
location / {
root /html/zhihu;
index index.php index.html index.htm;
}
location ~ \.php$ {
root /html/zhihu;
fastcgi_index index.php; 
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
include fastcgi_params; 
fastcgi_pass 127.0.0.1:9000;
}
}

在浏览器输入地址:zhihu.goodboy.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

网站部署影响用户访问问题:数据限制上传大小
1)由程序代码进行控制,限制上传大小 网站后台页面调整
2)nginx服务文件上传大小
client_max_body_size 1m;
3)php服务文件上传大小
vim /etc/php.ini 
post_max_size = 200M
upload_max_filesize = 200M

 

edu网站部署过程: 
第一个里程:获取网站代码并解压处理
tar xf edusoho-8.2.17.tar.gz
mv edusoho /html/
chown -R nginx.nginx /html/edu/

第二个里程:对数据库进行创建与授权
create database edu;
grant all on edu.* to 'edu'@'localhost' identified by 'edu123'; 

第三个里程:网站页面初始化
· edu网站配置文件编写

server {
listen 80;
server_name edu.goodboy.com;
root /html/edu/web;
client_max_body_size 200m;

location / {
index app.php;
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}

location ~ ^/udisk {
internal;
root /html/edu/app/data/;
}

location ~ ^/(app|app_dev)\.php(/|$) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
fastcgi_param HTTP_X-Sendfile-Type X-Accel-Redirect;
fastcgi_param HTTP_X-Accel-Mapping /udisk=/html/edusoho/app/data/udisk;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;
}

# 配置设置图片格式文件
location ~* \.(jpg|jpeg|gif|png|ico|swf)$ {
# 过期时间为3年
expires 3y;
# 关闭日志记录
access_log off;
# 关闭gzip压缩,减少CPU消耗,因为图片的压缩率不高。
gzip off;
}
# 配置css/js文件
location ~* \.(css|js)$ {
access_log off;
expires 3y;
}
# 禁止用户上传目录下所有.php文件的访问,提高安全性
location ~ ^/files/.*\.(php|php5)$ {
deny all;
}

# 以下配置允许运行.php的程序,方便于其他第三方系统的集成。
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
}

输入地址:edu.goodboy.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LNMP环境:Linux nginx  mysql(数据库)--- mariadb  python  

          python环境准备:*****

          第一个里程:安装依赖软件程序

          yum install -y python-pip python-devel mysql-devel

          

          第二个里程:升级系统默认python程序

          升级部署过程:

          wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz

          tar xf Python-3.6.5.tgz

     mv BBS/* /html/

          mkdir /usr/local/python3

          yum install -y gcc

          cd Python-3.6.5

          ./configure --prefix=/usr/local/python3

          make && make install

          

          补充调整过程

          rm /usr/bin/python

          ln -s /usr/local/python3/bin/python3  /usr/bin/python

     ln -s /usr/local/python3/bin/pip3     /usr/bin/pip3

          ln -s /usr/local/python3/bin/uwsgi   /usr/bin/uwsgi

 

     vim /usr/bin/yum

     #!/usr/bin/python 改变为 /usr/bin/python2.7.5

          ln -s /usr/bin/python2  /usr/bin/python2.7.5

          

          python网站部署过程:

          第一个里程:获取python网站代码进行解压

          tar xf BBS.tar.gz

          

          第二个里程:需要下载python代码所需软件

          pip3 install -r requirement.txt

          问题:所需python软件包无法安装

          mkdir ~/.pip

          vim ~/.pip/pip.con

          [global]

     index-url = https://mirrors.aliyun.com/pypi/simple/

    

     [install]

     trusted-host=mirrors.aliyun.com

          

          第三个里程:下载uwsgi服务程序

          pip3 install uwsgi

          

          第四个里程:编写uwsgi配置文件并启动服务程序

          # cat uwsgi.ini

     [uwsgi]

     master = true

     uid = root

     gid = root

     chdir = /html/BBS/                         --- 指定代码存储目录

     #harakiri = 60

     #vacuum = true

     processes = 3

     #chmod-socket = 664

     #max-requests = 5000

     socket = 127.0.0.1:8000       --- 通过nginx进行访问python代码

     #http = 0.0.0.0:80

     pidfile = /tmp/BBS.pid

     daemonize = /html/BBS/logs/BBS.log

     wsgi-file = BBS/wsgi.py

          

          uwsgi --ini /html/BBS/BBS/uwsgi.ini  --- 启动服务程序

          pkill uwsgi

          

          第五个里程:创建数据库并导入数据信息

          cat setting.py

          DATABASES = {

         'default': {

             'ENGINE': 'django.db.backends.mysql',

             'NAME': 'bbs',           数据库名称

             'HOST': "127.0.0.1",     本地建立连接

             'USER': 'root',          连接数据库用户

             'PASSWORD': 'root123', 数据库密码

             'PORT': 3306,

         }

     }

    

     数据库中进行操作:

          CREATE DATABASE bbs DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

          use bbs;

          source /html/BBS/bbs.sql;

          

          第六个里程:配置nginx文件并重启

          vim /etc/nginx/conf.d/python.conf

          server {

       listen     80;

       server_name python.goodboy.com;

       location / {

          uwsgi_pass  127.0.0.1:8000;

          include uwsgi_params;

       }

       location /static {

          alias /html/BBS/BBS/static;

       }

     }

          

          第七个里程:访问网站页面进行确认检查

          http://python.goodoldboy.com/index/

 

 

 

posted on 2021-03-17 23:46  弓长三寿  阅读(100)  评论(0编辑  收藏  举报