以下博文记录为2018年 部分内容或老旧 仅供参考
接下来是笔者根据自己经历整理的从零开始在CentOs7.3上搭建环境(实测在腾讯云 阿里云主机上无误)
我们所采用的是如下配置:
Apache2.4 + MySQL5.7+PHP7.1+phpMyAdmin4.8+python3.6(pip3) +MOD_WSGI4.5+Django2.x
yum install httpd httpd-dev
vi /etc/httpd/conf/httpd.conf
修改这行: ServerName localhost:80 //重要哦
systemctl start httpd
chkconfig httpd on
看一下是否运行正确(出现Test123…欢迎页面说明正确了)
我们通常不希望自己的网站目录轻易被访问者看到或被有心人爆出。而apache默认配置中,只要没有index,就会显示网站目录,这一点我们要做一定修改
需要将
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
< /Directory>
修改为
Options FollowSymLinks
AllowOverride None
Require all granted
Directory>
yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum install mysql-community-server
systemctl start mysqld
grep 'temporary password' /var/log/mysqld.log
你会得到这行 A temporary password is generated for root@localhost: Jqqskhz1Wr(?
冒号后面的就是密码
mysql -uroot -p
输入你刚才获得的密码,你会进入mysql>
星号为你输入的密码,不要丢了引号,密码建议大小写加数字加特殊字符,太简单的密码会被拒绝
ALTER USER 'root'@'localhost' IDENTIFIED BY '*************';
use mysql;
update user set host = '%' where user = 'root';
百分号相当于*号,意为全部放行,也可改为IP地址则只允许此IP连接,也可以设置为192.168.%.%或者192.168.0.1/9代表允许一个ip段进行连接,也可以多加几条数据设置不同ip允许连接。
cd /usr/local
wget am1.php.net/get/php-7.1.20.tar.gz/from/this/mirror
tar -zxvf 包名
cd 进入解压后的文件夹
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel
yum install gcc
yum -y install libxslt-devel*
yum -y install perl*
yum -y install httpd-devel
如果 find / -name apxs 得到的路径是:/usr/bin/apxs 那么安装很顺利
./configure --prefix=/usr/local/php7 --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath -enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-pcntl --with-curl --with-fpm-user=nginx --enable-ftp --enable-session --enable-xml --with-apxs2=/usr/bin/apxs
make && sudo make install
编译出错请查看http://www.cnblogs.com/sweetXiaoma/p/5855732.html
vi /etc/profile
在末尾加入
PATH=$PATH:/usr/local/php7/bin
export PATH
使改动生效
source /etc/profile
查看php版本
php -v
cp php.ini-production /usr/local/php7/etc/php.ini
cp sapi/fpm/php-fpm /usr/local/php7/etc/php-fpm
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
如果报错 请敲这行查报错信息 可以查到哪个文件第几行出错:
systemctl status httpd.service
(1)修改Apache默认欢迎页:
vim /etc/httpd/conf.d/welcome.conf
将/usr/share/httpd/noindex 修改为/var/www
(2)修改Apache配置:
vim /etc/httpd/conf/httpd.conf
修改DocumentRoot 为”/var/www/” (此文件中的另一处/var/www/html也改成/var/www)
这样我们就可以直接在/var/www下放置我们想要apache上跑起来的文件了
再找到
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
在后面添加:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .php7
(4)搜索 IfModule dir_module并在下面添加index.php (如下)
< IfModule dir_module>
DirectoryIndex index.html index.php
(5)搜索有没有下面这一行:
LoadModule php7_module modules/libphp7.so
如果没有 请手动添加 否则 会出现运行php文件却变成文件下载
(6)测试
在www目录下创建php_info页面
echo "">>index.php
浏览器里输入 主机地址/index.php
出现php7.1的配置信息说明一切就绪
进入/var/www
下载最新版的phpmyadmin (如选用其他版本,可前往phpmyadmin官网查看)
wget https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-all-languages.tar.gz
解压
tar vzxf 包名
修改解压后得到的文件夹名为phpmyadmin (为之后访问方便)
mv 解压得到的文件夹/ phpmyadmin
进入文件夹
cd phpmyadmin
cp config.sample.inc.php config.inc.php
vim config.inc.php
$cfg[‘blowfish_secret’] = ”; /* 自己在引号里面随便填 */
$cfg[‘Servers’][$i][‘host’] =‘127.0.0.1’ /*改成127.0.0.1*/
service mysqld start
service httpd restart
浏览器输入主机地址/phpmyadmin 即可登录
yum install epel-release #安装epel源
yum install python36 python36-devel
一般来说,在/usr/bin 会有python3.6 这时我们可以设一个软链接给他
ln -s /usr/bin/python3.6 python3
这样我们一运行python3即可打开python3.6
(为防止后期pip安装时混乱,此处我们只安装pip3)
yum install python36-setuptools
easy_install-3.6 pip
pip3
出现各种参数说明安装成功
如果你还想安装pip可参考https://blog.csdn.net/zuolovefu/article/details/78142612
关于需要用到的各种python3模块(笔者的Django 项目会用到这些,大家根据自己的需求自行安装)
pip3 install django
pip3 install requests
pip3 install bs4
pip3 install lxml
yum install mysql-devel
pip3 install mysqlclient
cd 进入根目录
wget https://github.com/GrahamDumpleton/mod_wsgi/archive/develop.zip
解压包并进入解压得到的文件夹
这一步configure很重要(它会列出一堆,看apxs gcc python等是否关联正确 不出现no的都是能关联到的。会有一部分是no不管他)
./configure --with-python=/usr/bin/python3.6
make && sudo make install
vim /etc/httpd/conf/httpd.conf
在文件中加入
LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so
保存后重启阿帕奇
apachectl restart
建议先在主机上通过runserver 或者check测试下django框架是否已经正确搭建、关联好了数据库并且本机不缺少依赖
#开启8080端口 然后浏览器里 http://服务器公网ip:8080 把功能试一试
python3 manage.py runserver 0.0.0.0:8080
#或者check(但针对非语法错误不一定好使)
python3 manage.py check
其次, 在工程文件夹外 将工程文件夹以及其子目录下文件赋予全用户读写权限
chmod -R 777
修改wsgi.py 文件内容如下
import os
from django.core.wsgi import get_wsgi_application
from os.path import join, dirname, abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0, PROJECT_DIR)
os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “first.settings”)
application = get_wsgi_application()
vim /etc/httpd/conf/httpd.conf
在文件末尾加入如下
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonHome /path/to/venv
WSGIPythonPath /path/to/mysite.com
Require all granted
然后保存退出,重启apache
我们来解释一下:
(1)第一行包含两部分 第一个地址表示apache从URL的哪开始是运行Django 第二地址是你Django 项目中wsgi.py的位置
(2)第二行是你所选择执行你Django程序的python解释器安装目录(如果安装wsgi时已正确指定则可省略)
(3)第三行是django项目的位置
(4)
假如我现在的主机地址为119.23.33.217 开放端口是80
我的Django 项目名是first 项目所在目录是/etc/Django/First/first
并且安装wsgi时我已经指定了python3.6(因为我的Django用的是python3)
我希望在浏览器中输入 119.23.33.217/wepr/xxxxx 的时候可以触发我的Django框架
那么我的配置文件应该这样写
WSGIScriptAlias /wepr /etc/Django/First/first/first/wsgi.py
WSGIPythonPath /etc/Django/First/first
Require all granted
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
关于WSGIScriptAlias中设置子目录的问题:
如果采用 WSGIScriptAlias / /etc/Django/First/first/first/wsgi.py
当你访问119.23.33.217时,就只能触发django,而之前配置的phpmyadmin都不能访问
为了合理分配服务器的区块,提高利用效率,建议专门给Django一个虚拟子目录作为“分区”
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
以上属于笔者经验 如果大家在安装中出现其它问题或者发现本文疏漏 欢迎大家在下面评论
本文内容是笔者入门服务器部署时的流水账记录,二次整理到CSDN时,没有再对原内容进行修改,难免会有一些偏差认识,搬到这里来其实怀旧记录的成分更多一点。2020年RHEL8都问世好久了,LNMP部署或用容器、或用更友好的管理面板(如宝塔Linux) 笔者之后如果再遇到类似的环境重部署时,会整理一篇新的内容(文笔肯定不会这么滞涩啦 ~hh)
2020,岁月可期!